Laravel Passport - refresh_token

135
24 июля 2019, 17:10

Решил попробовать сделать API с помощью Laravel. Все оказалось в принципе достаточно просто, но один момент остался непонятным.

Имею контроллер для login, logout, register:

namespace App\Http\Controllers\API;
use Illuminate\Http\Request;
use App\Http\Controllers\API\BaseController;
use App\User;
use Illuminate\Support\Facades\Auth;
use Validator;
use Lcobucci\JWT\Parser;
class UserController extends BaseController
{
    public $successStatus = 200;
    public function login()
    { 
        if(Auth::attempt(['email' => request('email'), 'password' => request('password')])){ 
            $user = Auth::user(); 
            $success['token'] =  $user->createToken('MyApp')->accessToken; 
            return response()->json(['success' => $success], $this->successStatus); 
        } else{ 
            return response()->json(['error'=>'Unauthorised (User doesn\'t exist)'], 401); 
        } 
    }
    public function logout(Request $request)
    {
        $value = $request->bearerToken();
        $id = (new Parser())->parse($value)->getHeader('jti');
        $token = $request->user()->tokens->find($id);
        $token->revoke();
        return response()->json(['success' => 'You have been successfully logged out!'], $this->successStatus);
    }
    public function register(Request $request) 
    { 
        $validator = Validator::make($request->all(), [ 
            'name' => 'required', 
            'email' => 'required|email', 
            'password' => 'required', 
            'c_password' => 'required|same:password', 
        ]);
        if ($validator->fails()) { 
            return $this->sendError('Validation Error.', $validator->errors());
        }
        $input = $request->all();
        $input['password'] = bcrypt($input['password']);
        $user = User::create($input);
        $success['token'] =  $user->createToken('MyApp')->accessToken;
        $success['name'] =  $user->name;
        return $this->sendResponse($success, 'User register successfully.');
    }
    public function details() 
    { 
        $user = Auth::user(); 
        return response()->json(['success' => $user], $this->successStatus); 
    }
}

Все это делал по примерам и все работает вроде нормально. В общем вопрос в refresh_token. Как генерировать refresh_token и следить за expiration date access_token по истичении которого сгенирировать новые access_token и refresh_token и отправить access_token клиенту?

READ ALSO
Обновление данных за каждую неделю

Обновление данных за каждую неделю

Разрабатываю систему учета использую LaravelЗадача состоит в том что бы выводить данные из базы только за одну неделю (последнюю)

115
Laravel. Помогите передать в шаблон информацию из базы данных один ко многим

Laravel. Помогите передать в шаблон информацию из базы данных один ко многим

Существуют много таблицОдна характеризует слайдеры, другие содержат информацию внутри слайдеров

117
Проблема с регулярным выражением PHP

Проблема с регулярным выражением PHP

Имеем строку к примеру:

112
как передать значение php файлам

как передать значение php файлам

Привет всем друзья я новичек в PHPу меня такая проблема нужно войти в сайт с этим проблем нет вроде проверяю вхожу но другие страницы не запоминают...

153