/home/kueuepay/public_html/routes/user.php
<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\User\KycController;
use App\Http\Controllers\User\CardController;
use App\Providers\Admin\BasicSettingsProvider;
use Pusher\PushNotifications\PushNotifications;
use App\Http\Controllers\User\ProfileController;
use App\Http\Controllers\User\SecurityController;
use App\Http\Controllers\User\AddMoneyController; 
use App\Http\Controllers\User\DashboardController;
use App\Http\Controllers\User\MerchantDetailsController;
use App\Http\Controllers\User\SupportTicketController;
use App\Http\Controllers\User\TransactionLogController;
use App\Http\Controllers\User\TransferMoneyController;

Route::prefix("user")->name("user.")->group(function(){
    Route::controller(DashboardController::class)->group(function(){
        Route::get('dashboard','index')->name('dashboard');
        Route::post('logout','logout')->name('logout');
        Route::post('check-valid-user','checkValidUser')->name('check.valid.email');
    });

    //profile
    Route::controller(ProfileController::class)->prefix("profile")->name("profile.")->group(function(){
        Route::get('/','index')->name('index');
        Route::put('password/update','passwordUpdate')->name('password.update')->middleware(['app.mode']);
        Route::put('update','update')->name('update')->middleware(['app.mode']);
        Route::post('delete-account/{id}','deleteAccount')->name('delete')->middleware(['app.mode']);
    });

    //add money
    Route::controller(AddMoneyController::class)->prefix('add-money')->name('add.money.')->group(function(){
        Route::get('/','index')->name('index');
        Route::post('confirm','confirm')->name('confirm');

        Route::get('success/response/{gateway}','success')->name('payment.success');
        Route::get("cancel/response/{gateway}",'cancel')->name('payment.cancel');
        Route::post("callback/response/{gateway}",'callback')->name('payment.callback')->withoutMiddleware(['web','auth','kyc.verification.guard','verification.guard','user.google.two.factor']);

        // POST Route For Unauthenticated Request
        Route::post('success/response/{gateway}', 'postSuccess')->name('payment.success')->withoutMiddleware(['auth','kyc.verification.guard','verification.guard','user.google.two.factor']);
        Route::post('cancel/response/{gateway}', 'postCancel')->name('payment.cancel')->withoutMiddleware(['auth','kyc.verification.guard','verification.guard','user.google.two.factor']);

        // redirect with HTML form route
        Route::get('redirect/form/{gateway}', 'redirectUsingHTMLForm')->name('payment.redirect.form')->withoutMiddleware(['auth','kyc.verification.guard','verification.guard','user.google.two.factor']);

        //redirect with Btn Pay
        Route::get('redirect/btn/checkout/{gateway}', 'redirectBtnPay')->name('payment.btn.pay')->withoutMiddleware(['auth','kyc.verification.guard','verification.guard','user.google.two.factor']);

        Route::get('manual/{token}','showManualForm')->name('manual.form');
        Route::post('manual/submit/{token}','manualSubmit')->name('manual.submit');

    });
    //transfer money
    Route::controller(TransferMoneyController::class)->prefix('transfer-money')->name('transfer.money.')->middleware('kyc.verification.guard')->group(function(){
        Route::get('/','index')->name('index');
        Route::post('confirm','confirm')->name('confirm');
    });

    //merchant details 
    Route::controller(MerchantDetailsController::class)->prefix('merchant-details')->name('merchant.details.')->middleware('kyc.verification.guard')->group(function(){
        Route::get('/','index')->name('index');
        Route::post('update/{id}','update')->name('update');
        Route::post('payment-configuration-update/{id}','paymentConfiguartionUpdate')->name('payment.configuration.update');
        Route::put('status-update','statusUpdate')->name('api.keys.update');
    });

    //payment method
    Route::controller(CardController::class)->prefix('card')->name('card.')->middleware('kyc.verification.guard')->group(function(){
        Route::get('/','index')->name('index');
        Route::post('store','store')->name('store');
        Route::post('delete/{slug}','delete')->name('delete');
        Route::get('make-default/{slug}','makeDefault')->name('make.default');
        Route::post('search','search')->name('search');
    });
    //transaction logs 
    Route::controller(TransactionLogController::class)->prefix('transaction')->name('transaction.log.')->group(function(){
        Route::get('add-money','addMoney')->name('add.money'); 
        Route::get('transfer-money','transferMoney')->name('transfer.money');
        Route::get('card-payment','cardPayment')->name('card.payment');
        Route::post('search','search')->name('search');
    });

    

    Route::controller(SupportTicketController::class)->prefix("support-ticket")->name("support.ticket.")->group(function () {
        Route::get('/', 'index')->name('index');
        Route::get('create', 'create')->name('create');
        Route::post('store', 'store')->name('store');
        Route::get('conversation/{encrypt_id}','conversation')->name('conversation');
        Route::post('message/send','messageSend')->name('messaage.send');
    });

    

    Route::controller(SecurityController::class)->prefix("security")->name('security.')->group(function(){
        Route::get('google/2fa','google2FA')->name('google.2fa');
        Route::post('google/2fa/status/update','google2FAStatusUpdate')->name('google.2fa.status.update');
    });

    Route::controller(KycController::class)->prefix('kyc')->name('kyc.')->group(function() {
        Route::get('/','index')->name('index');
        Route::post('submit','store')->name('submit');
    });

});
Route::get('/user/card/{id}/transactions', [DashboardController::class,'getTransactionsByCard']);


// Route For Pusher Beams Auth
Route::get('user/pusher/beams-auth', function (Request $request) {
    if(Auth::check() == false) {
        return response(['Inconsistent request'], 401);
    }
    $userID = Auth::user()->id;

    $basic_settings = BasicSettingsProvider::get();
    if(!$basic_settings) {
        return response('Basic setting not found!', 404);
    }

    $notification_config = $basic_settings->push_notification_config;

    if(!$notification_config) {
        return response('Notification configuration not found!', 404);
    }

    $instance_id    = $notification_config->instance_id ?? null;
    $primary_key    = $notification_config->primary_key ?? null;
    if($instance_id == null || $primary_key == null) {
        return response('Sorry! You have to configure first to send push notification.', 404);
    }
    $beamsClient = new PushNotifications(
        array(
            "instanceId" => $notification_config->instance_id,
            "secretKey" => $notification_config->primary_key,
        )
    );

    $get_full_host_path = remove_special_char(get_full_url_host(), "-");

    $publisherUserId = $get_full_host_path . "-user-".$userID;
    try{
        $beamsToken = $beamsClient->generateToken($publisherUserId);
    }catch(Exception $e) {
        return response(['Server Error. Failed to generate beams token.'], 500);
    }

    return response()->json($beamsToken);
})->name('user.pusher.beams.auth');
User Registration
top