Laravel Passport:发送令牌请求时的附加模型条件

Gau*_*rav 0 oauth-2.0 laravel laravel-5 laravel-passport

我正在使用密码授予令牌为移动应用程序构建API .当用户尝试登录应用程序时,客户端会发送访问令牌请求.

用户可能没有使用发送到他的电子邮件的链接验证他的帐户.我希望为查询添加一个附加条件,并相应地提供错误响应.目前,由于Passport管理令牌部分,我无法直接执行.

怎么解决这个问题?如果用户帐户有任何问题,我如何潜入令牌请求并发送自定义响应?并继续发送令牌.

Gau*_*rav 6

来自Laravel贡献者的回答:

制作自己的oauth/token路由并将其放在/ routes 中的oauth.php文件中:

Route::post('/oauth/token', [
    'uses' => 'Auth\CustomAccessTokenController@issueUserToken'
]);
Run Code Online (Sandbox Code Playgroud)

制作CustomAccessTokenController.php

<?php

namespace App\Http\Controllers\Auth;

use Psr\Http\Message\ServerRequestInterface;
use Laravel\Passport\Http\Controllers\AccessTokenController;

class CustomAccessTokenController extends AccessTokenController
{
    /**
     * Hooks in before the AccessTokenController issues a token
     *
     *
     * @param  ServerRequestInterface $request
     * @return mixed
     */
    public function issueUserToken(ServerRequestInterface $request)
    {
        $httpRequest = request();

        // 1.
        if ($httpRequest->grant_type == 'password') {
            // 2.
            $user = \App\User::where('email', $httpRequest->username)->first();

            // Perform your validation here

            // If the validation is successfull:
            return $this->issueToken($request);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

参考链接 - https://github.com/laravel/passport/issues/225#issuecomment-271057428