new:[authentication apis]add classes required for logout API #2

This commit is contained in:
weichien00
2021-06-26 03:45:00 +08:00
parent 287e72e714
commit 3426d6b157
3 changed files with 83 additions and 0 deletions
@@ -0,0 +1,46 @@
<?php
namespace App\Classes\Modules\Accounts\ControllersLogic;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Accounts\Services\InvalidatesAuthenticationToken;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class LogoutUserLogic extends AbstractControllerLogic
{
protected function notification():array {
return [
'title' => 'Logout',
'message' => 'You have successfully logged out of your account'
];
}
/** @var InvalidatesAuthenticationToken */
private $invalidatesAuthenticationToken;
/**
* LogoutUserLogic constructor.
* @param InvalidatesAuthenticationToken $invalidatesAuthenticationToken
*/
public function __construct(InvalidatesAuthenticationToken $invalidatesAuthenticationToken)
{
logger("logout user logic");
$this->invalidatesAuthenticationToken = $invalidatesAuthenticationToken;
}
/**
* @param Request $request
* @return JsonResponse
*/
protected function logic(Request $request): JsonResponse {
logger("logout");
$this->invalidatesAuthenticationToken->execute();
return $this->response();
}
}
@@ -0,0 +1,15 @@
<?php
namespace App\Classes\Modules\Accounts\Services;
class InvalidatesAuthenticationToken
{
/**
* @return false|string
*/
public function execute(){
auth()->logout();
}
}
@@ -0,0 +1,22 @@
<?php
namespace App\Http\Controllers\Accounts;
use App\Classes\Modules\Accounts\ControllersLogic\LogoutUserLogic;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class UserAuthenticationLogoutController
{
/**
* @param Request $request
* @param LogoutUserLogic $logic
* @return JsonResponse
*/
public function logout(Request $request, LogoutUserLogic $logic): JsonResponse {
logger("logout controller");
return $logic->execute($request);
}
}