%PDF- %PDF-
Direktori : /var/www/html/news/app/Http/Controllers/Api/ |
Current File : /var/www/html/news/app/Http/Controllers/Api/AuthenticationController.php |
<?php namespace App\Http\Controllers\Api; use App\Http\Controllers\ApiController; use App\Http\Requests\Auth\LoginRequest; use App\Repositories\User\UsersRepository; use App\Transformers\UserTransformer; use EllipseSynergie\ApiResponse\Contracts\Response; use Illuminate\Http\Request; use Tymon\JWTAuth\Exceptions\JWTException; use Tymon\JWTAuth\Exceptions\TokenBlacklistedException; use Tymon\JWTAuth\Facades\JWTAuth; class AuthenticationController extends ApiController { /** * @var UsersRepository */ private $usersRepository; public function __construct(Response $response, UsersRepository $usersRepository) { parent::__construct($response); $this->usersRepository = $usersRepository; } /** * @param LoginRequest $request * @return Response|mixed */ public function login(LoginRequest $request) { $credentials = $request->only('email', 'password'); $user = $this->usersRepository->findBy('email', $request->get('email')); if (!$user) { return $this->response->errorUnauthorized("User does not exist"); } if (!$user->is_active) { return $this->response->errorUnauthorized("Your account is disabled"); } try { if (!$token = JWTAuth::attempt($credentials)) { return $this->response->errorUnauthorized("Not authorized"); } } catch (JWTException $e) { return $this->response->errorInternalError($e->getMessage()); } return response(compact('token')); } /** * @param Request $request * @return Response|mixed */ public function logout(Request $request) { try { $token = $request->input('token'); if (!$token) { $token = last(explode(' ', $request->header('Authorization'))); } if (!$token) { $token = JWTAuth::getToken(); } JWTAuth::invalidate($token); return response('', 201); } catch (TokenBlacklistedException $e) { return $this->response->errorUnauthorized($e->getMessage()); } catch (JWTException $e) { return $this->response->errorUnauthorized($e->getMessage()); } } public function me() { $user = JWTAuth::parseToken()->authenticate(); return $this->response->withItem($user, new UserTransformer); } }