diff --git a/.env.example b/.env.example index 6f8f318..ce7f61b 100644 --- a/.env.example +++ b/.env.example @@ -69,3 +69,4 @@ VITE_APP_NAME="${APP_NAME}" TRUSTED_IP="127.0.0.1" NOTIFICATION_SERVER_URL= +LOGIN_HASH_VALUE= diff --git a/app/Http/Controllers/HeadquartersDashboard/LoginToProvinceController.php b/app/Http/Controllers/HeadquartersDashboard/LoginToProvinceController.php new file mode 100644 index 0000000..746d348 --- /dev/null +++ b/app/Http/Controllers/HeadquartersDashboard/LoginToProvinceController.php @@ -0,0 +1,28 @@ +Where('id', '=', $request->province_id) + ->value('ip_address'); + + $payload = [ + 'user_id' => auth()->user()->id, + 'token' => Hash::make(config('globalVariables.LOGIN_HASH_VALUE')), + ]; + + $url = $province_ip . "?" . http_build_query($payload); + + return redirect($url); + } +} diff --git a/app/Http/Controllers/ProvinceDashboard/CheckSetadController.php b/app/Http/Controllers/ProvinceDashboard/CheckSetadController.php new file mode 100644 index 0000000..da94bbb --- /dev/null +++ b/app/Http/Controllers/ProvinceDashboard/CheckSetadController.php @@ -0,0 +1,32 @@ +token)) { + return $this->errorResponse('Invalid token'); + } + + $user = User::query()->find($request->user_id); + + if (!$user) { + return $this->errorResponse('User not found'); + } + + Auth::login($user); + + return redirect('/'); + } +} diff --git a/app/Http/Middleware/VerifySetadIp.php b/app/Http/Middleware/VerifySetadIp.php new file mode 100644 index 0000000..a6d3bac --- /dev/null +++ b/app/Http/Middleware/VerifySetadIp.php @@ -0,0 +1,28 @@ +ip() !== $masterServerIp) { + return response('Unauthorized.', 401); + + } + return $next($request); + } +} diff --git a/bootstrap/app.php b/bootstrap/app.php index 341349c..1e90ca2 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -19,6 +19,7 @@ return Application::configure(basePath: dirname(__DIR__)) $middleware->statefulApi()->alias([ 'role' => \Spatie\Permission\Middleware\RoleMiddleware::class, 'permission' => \Spatie\Permission\Middleware\PermissionMiddleware::class, + 'setadIp' => \App\Http\Middleware\VerifySetadIp::class, ]); }) ->withExceptions(function (Exceptions $exceptions) { diff --git a/config/globalVariables.php b/config/globalVariables.php index b577168..65c5e42 100644 --- a/config/globalVariables.php +++ b/config/globalVariables.php @@ -2,5 +2,6 @@ return [ 'TRUSTED_IP' => explode(',', env("TRUSTED_IP", '127.0.0.1')), - 'NOTIFICATION_SERVER_URL' => env('NOTIFICATION_SERVER_URL', '127.0.0.1') + 'NOTIFICATION_SERVER_URL' => env('NOTIFICATION_SERVER_URL', '127.0.0.1'), + 'LOGIN_HASH_VALUE' => env('LOGIN_HASH_VALUE'), ]; diff --git a/routes/web.php b/routes/web.php index 0522a4f..73a7790 100644 --- a/routes/web.php +++ b/routes/web.php @@ -6,16 +6,15 @@ use App\Http\Controllers\Admin\UserManagementController; use App\Http\Controllers\AuthController; use App\Http\Controllers\CallController; use App\Http\Controllers\CategoryController; +use App\Http\Controllers\HeadquartersDashboard\LoginToProvinceController; use App\Http\Controllers\ProfileController; use App\Http\Controllers\ProvinceController; use App\Http\Controllers\HeadquartersDashboard\CumulativeCentersStatsController; use App\Http\Controllers\HeadquartersDashboard\CumulativeKeypressStatsController; use App\Http\Controllers\HeadquartersDashboard\CumulativeMessageRatingStatsController; use App\Http\Controllers\HeadquartersDashboard\CumulativeVoiceRatingStatsController; -use App\Http\Controllers\ProvinceDashboard\OperatorDialogues\OperatorController; -use App\Http\Controllers\ProvinceDashboard\OperatorDialogues\SupervisorController; +use App\Http\Controllers\ProvinceDashboard\CheckSetadController; use App\Http\Middleware\SuperAdminCheck; -use App\Models\OperatorDialogue; use Illuminate\Support\Facades\Route; Route::prefix('server')->group(function () { @@ -204,4 +203,19 @@ Route::prefix('server')->group(function () { Route::get('/{peopleMessage}', 'show')->name('show'); }); }); + Route::middleware(['auth', 'permission:setat_ip']) + ->prefix('login_to_province') + ->name('loginToProvince.') + ->controller(LoginToProvinceController::class) + ->group(function () { + Route::post('/', 'loginToProvince')->name('loginToProvince'); + }); + Route::middleware('auth') + ->prefix('check_setad') + ->name('checkSetad.') + ->controller(CheckSetadController::class) + ->group(function () { + Route::get('/', 'verifyToken')->name('verifyToken'); + }); + });