Feature/standardize ui display
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
namespace App\Http\Controllers\API\v1\Admin\Impersonate;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Support\ApiTokenLifetime;
|
||||
use App\User;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
@@ -72,12 +73,12 @@ class LeaveController extends Controller
|
||||
])
|
||||
->log("admin leave impersonation: {$impersonator->email}");
|
||||
|
||||
return response()->json([
|
||||
return response()->json(array_merge([
|
||||
'status' => 'success',
|
||||
'message' => 'Berjaya kembali ke akaun asal.',
|
||||
'user' => $impersonator,
|
||||
'token' => $accessToken,
|
||||
]);
|
||||
], ApiTokenLifetime::loginMeta('admin')));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace App\Http\Controllers\API\v1\Admin\Impersonate;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Support\ApiTokenLifetime;
|
||||
use App\User;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
@@ -70,13 +71,13 @@ class StartController extends Controller
|
||||
])
|
||||
->log("admin impersonate: {$impersonator->email} -> {$target->email}");
|
||||
|
||||
return response()->json([
|
||||
return response()->json(array_merge([
|
||||
'status' => 'success',
|
||||
'message' => 'Impersonate berjaya.',
|
||||
'user' => $target,
|
||||
'impersonator' => $impersonator,
|
||||
'token' => $accessToken,
|
||||
]);
|
||||
], ApiTokenLifetime::loginMeta('admin')));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Controllers\Util;
|
||||
use App\Support\ApiTokenLifetime;
|
||||
use App\User;
|
||||
|
||||
class LoginController extends Controller
|
||||
@@ -21,11 +22,13 @@ class LoginController extends Controller
|
||||
|
||||
if ($this->checkLogin($request)) {
|
||||
$user = Auth::user();
|
||||
ApiTokenLifetime::revokeActiveTokens($user);
|
||||
$result['status'] = 'success';
|
||||
$result['message'] = 'Login Successfully';
|
||||
$result['user'] = $user;
|
||||
$result['election_status'] = Util::getElectionStatus();
|
||||
$result['token'] = $user->createToken('My app', ['admin'])->accessToken;
|
||||
$result = array_merge($result, ApiTokenLifetime::loginMeta('admin'));
|
||||
|
||||
activity()
|
||||
->performedOn($user)
|
||||
|
||||
@@ -5,6 +5,7 @@ namespace App\Http\Controllers\API\v1\Voter;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Controllers\Util;
|
||||
use App\Support\ApiTokenLifetime;
|
||||
use App\UserOTP;
|
||||
use App\Voter;
|
||||
use Carbon\Carbon;
|
||||
@@ -219,6 +220,7 @@ class LoginController extends Controller
|
||||
|
||||
if (Auth::guard('voter')->attempt(['no_kp' => $request->no_kp, 'password' => 'admin', 'election_id' => Util::getCurrentElection()])) {
|
||||
$user = Auth::guard('voter')->user();
|
||||
ApiTokenLifetime::revokeActiveTokens($user);
|
||||
activity()
|
||||
->performedOn($user)
|
||||
->withProperties([
|
||||
@@ -231,13 +233,13 @@ class LoginController extends Controller
|
||||
])
|
||||
->log("voter login: {$user->name}");
|
||||
|
||||
return response()->json([
|
||||
return response()->json(array_merge([
|
||||
'status' => 'success',
|
||||
'message' => 'Login successfully.',
|
||||
'user' => Auth::guard('voter')->user(),
|
||||
'election_status' => Util::getElectionStatus(),
|
||||
'token' => Auth::guard('voter')->user()->createToken('My Token', ['vote'])->accessToken,
|
||||
]);
|
||||
], ApiTokenLifetime::loginMeta('voter')));
|
||||
}
|
||||
|
||||
activity()
|
||||
|
||||
@@ -67,5 +67,6 @@ class Kernel extends HttpKernel
|
||||
'has_voted' => \App\Http\Middleware\HasVotedMiddleware::class,
|
||||
'physical_gate_display' => \App\Http\Middleware\PhysicalGateDisplayKeyMiddleware::class,
|
||||
'fizikal_registration_verified' => \App\Http\Middleware\FizikalRegistrationVerifiedMiddleware::class,
|
||||
'api_token_lifetime' => \App\Http\Middleware\EnforceApiTokenLifetimeMiddleware::class,
|
||||
];
|
||||
}
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use App\Support\ApiTokenLifetime;
|
||||
use Closure;
|
||||
|
||||
class EnforceApiTokenLifetimeMiddleware
|
||||
{
|
||||
/**
|
||||
* Enforce application session lifetime for Passport personal access tokens.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
* @param string $portal voter|admin
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle($request, Closure $next, $portal = 'voter')
|
||||
{
|
||||
$user = $request->user();
|
||||
|
||||
if (! $user || ! ApiTokenLifetime::isExpired($user, $portal)) {
|
||||
return $next($request);
|
||||
}
|
||||
|
||||
try {
|
||||
if (method_exists($user, 'token') && $user->token()) {
|
||||
$user->token()->revoke();
|
||||
}
|
||||
} catch (\Throwable $e) {
|
||||
// Continue with 401 even if revoke fails.
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
'status' => 'failed',
|
||||
'message' => 'Sesi tamat. Sila log masuk semula.',
|
||||
], 401);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user