%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/news/app/Http/Controllers/Api/
Upload File :
Create Path :
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);
    }

}

Zerion Mini Shell 1.0