group(function () { Route::middleware(['abilities:admin', 'auth:sanctum'])->prefix('cafe-configs')->controller(CafeController::class)->group(function () { Route::post('', 'store'); Route::post('{id}', 'update'); Route::get('', 'index'); }); Route::prefix('auth')->controller(UserController::class)->group(function () { Route::post('forgot-password', 'requestPasswordReset'); // send reset link Route::post('reset-password', 'resetPassword'); // actually reset Route::post('reset-password-in-app', 'resetPasswordInApp'); }); Route::get('/reset-password/{token}', [UserController::class, 'showResetForm']) ->name('password.reset'); Route::prefix('auth')->controller(UserController::class)->group(function () { Route::middleware(['throttle:3,1', 'auto-ban'])->post('login-otp', 'loginOTP'); Route::post('check-otp', 'checkOTP'); Route::post('verify-email-code','verifyEmailCode'); Route::get('verify-email-link/{token}', [UserController::class, 'verifyEmailLink'])->name('verify.email.link'); Route::post('login', 'login'); Route::post('register', 'register'); Route::post('resend-email-verification', [UserController::class, 'resendEmailVerification']); Route::post('/login-google', 'googleLogin'); Route::middleware('auth:sanctum')->group(function () { Route::put('logout', 'logout'); }); }); Route::get('zarinpal/check-transaction', [ZarinpalController::class, 'checkTransaction']); Route::post('digipay/check-transaction', [DigiPayController::class, 'checkTransaction']); Route::post('asanpardakht/check-transaction', [AsanPardakhtController::class, 'checkTransaction']); Route::get('package-names/{name}/products', [ProductController::class, 'index']); Route::middleware('auth:sanctum')->group(function () { Route::apiResource('reminders', ReminderController::class); }); Route::middleware('auth:sanctum')->group(function () { Route::post('profile', [UserController::class, 'updateProfile']); Route::get('status', [UserController::class, 'status']); Route::get('paid-status-v1', [OldApprooController::class, 'getUserUnConsumedPurchases']); Route::get('transactions', [TransactionController::class, 'index']); Route::post('zarinpal/gateway', [TransactionController::class, 'getGateway']); Route::prefix('package-names')->controller(PackageNameController::class)->group(function () { Route::get('/', 'index'); Route::middleware('abilities:admin')->post('/', 'store'); Route::middleware('abilities:admin')->post('/{name}', 'update'); Route::put('/{name}/try', [UserController::class, 'try']); Route::middleware('abilities:admin')->post('/{name}/products', [ProductController::class, 'store']); Route::middleware('abilities:admin')->patch('/{name}/products/{id}', [ProductController::class, 'update']); Route::middleware('abilities:admin')->delete('/{name}/products/{id}', [ProductController::class, 'delete']); Route::put('/{name}/products/{id}/subscribe', [ProductController::class, 'subscribe']); }); Route::prefix('wallet')->controller(WalletController::class)->group(function () { Route::get('/', 'index'); Route::post('/', 'charge'); }); Route::middleware('abilities:admin')->prefix('admin')->controller(AdminController::class)->group(function () { Route::get('/wallet', [WalletController::class, 'getWalletAdmin']); Route::post('/wallet', [WalletController::class, 'chargeWalletAdmin']); Route::get('/users', 'users'); Route::post('/users/{mobile}/profile', 'updateUserProfile'); Route::delete('/users/{mobile}', 'deleteUser'); Route::get('/users/{mobile}/transactions', 'getUserTransactions'); Route::get('/users/{mobile}/status', 'getUserStatus'); Route::get('/users/{mobile}/status-v1', 'getUserStatusV1'); Route::put('/users/{mobile}/status', 'subscribeUser'); Route::delete('/users/{mobile}/status', 'unsubscribeUser'); }); }); ///promotions Route::get('/promotions', [PromotionController::class, 'index']); Route::post('/promotions', [PromotionController::class, 'store']); Route::post('/promotions/{promotion}', [PromotionController::class, 'update']); Route::delete('/promotions/{promotion}', [PromotionController::class, 'destroy']); Route::get('/asanpardakht/pay', [AsanPardakhtController::class, 'pay']); Route::middleware('abilities:admin')->prefix('package-names/{package_name}/reminders') ->middleware('auth:sanctum') ->controller(ReminderController::class) ->group(function () { Route::get('/', 'packageIndex'); Route::post('/', 'packageStore'); Route::put('/{reminder}', 'packageUpdate'); Route::delete('/{reminder}', 'packageDestroy'); }); });