first commit

This commit is contained in:
2025-09-10 15:28:46 +03:30
commit 00edec179a
204 changed files with 21024 additions and 0 deletions
+91
View File
@@ -0,0 +1,91 @@
<?php
use App\Http\Controllers\AdminController;
use App\Http\Controllers\AsanPardakhtController;
use App\Http\Controllers\CafeController;
use App\Http\Controllers\DigiPayController;
use App\Http\Controllers\OldApprooController;
use App\Http\Controllers\PackageNameController;
use App\Http\Controllers\ProductController;
use App\Http\Controllers\ReminderController;
use App\Http\Controllers\TransactionController;
use App\Http\Controllers\UserController;
use App\Http\Controllers\WalletController;
use App\Http\Controllers\ZarinpalController;
use App\Models\Transaction;
use Illuminate\Support\Facades\Route;
use Laravel\Socialite\Facades\Socialite;
Route::middleware('ban-bot')->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::middleware(['throttle:3,1', 'auto-ban'])->post('login-otp', 'loginOTP');
Route::post('check-otp', 'checkOTP');
Route::post('verify-email-code','verifyEmailCode');
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::post('profile', [UserController::class, 'updateProfile']);
Route::middleware('auth:sanctum')->group(function () {
Route::apiResource('reminders', ReminderController::class);
});
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');
});
});
Route::get('/asanpardakht/pay', [AsanPardakhtController::class, 'pay']);
});
+18
View File
@@ -0,0 +1,18 @@
<?php
use Illuminate\Support\Facades\Broadcast;
/*
|--------------------------------------------------------------------------
| Broadcast Channels
|--------------------------------------------------------------------------
|
| Here you may register all of the event broadcasting channels that your
| application supports. The given channel authorization callbacks are
| used to check if an authenticated user can listen to the channel.
|
*/
Broadcast::channel('App.Models.User.{id}', function ($user, $id) {
return (int) $user->id === (int) $id;
});
+19
View File
@@ -0,0 +1,19 @@
<?php
use Illuminate\Foundation\Inspiring;
use Illuminate\Support\Facades\Artisan;
/*
|--------------------------------------------------------------------------
| Console Routes
|--------------------------------------------------------------------------
|
| This file is where you may define all of your Closure based console
| commands. Each Closure is bound to a command instance allowing a
| simple approach to interacting with each command's IO methods.
|
*/
Artisan::command('inspire', function () {
$this->comment(Inspiring::quote());
})->purpose('Display an inspiring quote');
+27
View File
@@ -0,0 +1,27 @@
<?php
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Str;
use Laravel\Socialite\Facades\Socialite;
Route::get('/auth/redirect', function () {
$targetUrl = request()->query('target_url', url('/'));
Session::put('target_url', $targetUrl);
return Socialite::driver('google')->redirect();
});
Route::get('/auth/callback', function () {
$googleUser = Socialite::driver('google')->user();
$token = $googleUser->token;
$targetUrl = Session::pull('target_url', url('/'));
$separator = parse_url($targetUrl, PHP_URL_QUERY) ? '&' : '?';
$redirectUrl = $targetUrl . $separator . 'access_token=' . urlencode($token);
return redirect()->to($redirectUrl);
});