カスタムLaravelパスポートチェック

Seakleng Say

findForPassportにさらに1つの変数を追加または渡す方法はありますか?

デフォルトのlaravelパスポートログインでは、2つの変数(ユーザー名、パスワード)しか渡すことができませんが、さらに1つの変数を渡し、そのユーザーが他のテーブルに属しているかどうかをfindForPassportでチェックインしたいと思います。

Seakleng Say

この答えが他の人に役立つことを願っています。
あなたは変数を追加し、ユーザー認証モデルでfindPassport関数に、この変数を渡したい場合は、パスポートの3クラスに更新する必要があります:
  - UserRepositoryInterfaceベンダーで\リーグ\のOAuth2-サーバー\ SRC \リポジトリ\ UserRepositoryInterface
  - PasswordGrantベンダー\リーグでの\ OAuth2-サーバー\ SRC \グラント\ PasswordGrant
  - UserRepositoryベンダーで\ laravel \パスポート\ SRC \橋\ UserRepository

私は親の変数やコードを追加しますサンプルコードでは、次のようになります。

+ UserRepositoryInterfaceクラス内

interface UserRepositoryInterface extends RepositoryInterface
{

/**
 * Get a user entity.
 *
 * @param string                $username
 * @param string                $password
 * @param string                $grantType    The grant type used
 * @param ClientEntityInterface $clientEntity
 *
 * @return UserEntityInterface
 */
public function getUserEntityByUserCredentials(
    $username,
    $password,
    $parent,                           <------variable example 
    $grantType,
    ClientEntityInterface $clientEntity
);
}

+ PasswordGrantクラスで

class PasswordGrant extends AbstractGrant{ 
protected function validateUser(ServerRequestInterface $request, ClientEntityInterface $client)
{
    $username = $this->getRequestParameter('username', $request);
    if (is_null($username)) {
        throw OAuthServerException::invalidRequest('username');
    }

    $password = $this->getRequestParameter('password', $request);
    if (is_null($password)) {
        throw OAuthServerException::invalidRequest('password');
    }

  /**
  * Get a user parent.
  * varaible example 
  */
    $parent = $this->getRequestParameter('parent', $request);  
    if (is_null($parent)) {
        throw OAuthServerException::invalidRequest('password');
    }

    $user = $this->userRepository->getUserEntityByUserCredentials(
        $username,
        $password,
        $parent,                          <--- variable example get from request
        $this->getIdentifier(),
        $client
    );
    if ($user instanceof UserEntityInterface === false) {
        $this->getEmitter()->emit(new RequestEvent(RequestEvent::USER_AUTHENTICATION_FAILED, $request));

        throw OAuthServerException::invalidCredentials();
    }

    return $user;
}  }

+ UserRepositoryクラス内

class UserRepository implements UserRepositoryInterface
{

public function getUserEntityByUserCredentials($username, $password, $parent, $grantType, ClientEntityInterface $clientEntity) 
/*add 1more parameter that implement from UserRepositoryInterface*/
{
    $provider = config('auth.guards.api.provider');

    if (is_null($model = config('auth.providers.'.$provider.'.model'))) {
        throw new RuntimeException('Unable to determine authentication model from configuration.');
    }

    if (method_exists($model, 'findForPassport')) {
        $user = (new $model)->findForPassport($username,$parent);    <--- finally we pass parent variable to findForPassport here
    } else {
        $user = (new $model)->where('email', $username)->first();
    }

    if (! $user) {
        return;
    } elseif (method_exists($user, 'validateForPassportPasswordGrant')) {
        if (! $user->validateForPassportPasswordGrant($password)) {
            return;
        }
    } elseif (! $this->hasher->check($password, $user->getAuthPassword())) {
        return;
    }

    return new User($user->getAuthIdentifier());
}
}

次に、findForPassportのパラメーターから$ parent値を取得できますが、値を雄弁なユーザーとして返すようにしてください。テーブルに参加する場合は、以下のサンプルコードを参照してください。

class User extends Authenticatable{

..........
public function findForPassport($identifier,$parent) {
    $a = $this
        ->Join('role as r', 'r.user_id', '=', 'users.id')
        ->get();
    return $a->where('name', $identifier)->where('role_id',$parent)->first();

  }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

カスタムブートストラップ-Vueチェックボックスコンポーネント

分類Dev

Tensorflowチェックポイントカスタムマップ

分類Dev

RadGridViewをExcelカスタムチェックボックスにYES / NOとしてエクスポート

分類Dev

Azureパイプラインでカスタムチェックスタイルレポートをレポートする方法

分類Dev

MVVMパターンを使用したWPFのチェックボックスとカスタムリスト

分類Dev

PayPalカスタムチェックアウトフォーム

分類Dev

laravelパスポートカスタムパスワード欄

分類Dev

カスタムトランスポートを使用したフェッチ/クローン/プルの例外

分類Dev

Laravelカスタム検証チェックパラメータで提供される他のフィールド

分類Dev

カスタムパスポートを作成する-jwt戦略ミドルウェアコールバック

分類Dev

Odoo 10 QwebPDFレポートのカスタムチェックページで改ページの問題

分類Dev

C ++:オブジェクトキーのマルチマップカスタムコンパレータ

分類Dev

スタイルブートストラップ4カスタムチェックボックス

分類Dev

Visual Studio2017のカスタムTFSチェックインポリシー

分類Dev

Visual Studio 2015 のカスタム TFS チェックイン ポリシー

分類Dev

カスタムLaravelパスポートBearerTokenResponse

分類Dev

Bootstrapポップオーバーのカスタムラウンドチェックボックス

分類Dev

LaravelパスポートAPIの非認証URLの認証チェック

分類Dev

Laravel-カスタムリンクレジスタとバリデーターのチェック

分類Dev

カスタムフェッチコンパレータ

分類Dev

QtDesignerカスタムチェックボックスの相対パス

分類Dev

ポーカーストレートをチェックする

分類Dev

カスタム値のPaypalチェックアウトフォーム

分類Dev

カスタムチェックボックスを追加する Woocommerce クーポン

分類Dev

カスタムコンパイル時チェック

分類Dev

カスタムチェックボックスウィジェットをトリガーする方法

分類Dev

Firefoxのカスタムチェック

分類Dev

インジケーターのないカスタムチェックボックス(テキスト)

分類Dev

ブートストラップ4カスタムチェックボックスは表示されません

Related 関連記事

  1. 1

    カスタムブートストラップ-Vueチェックボックスコンポーネント

  2. 2

    Tensorflowチェックポイントカスタムマップ

  3. 3

    RadGridViewをExcelカスタムチェックボックスにYES / NOとしてエクスポート

  4. 4

    Azureパイプラインでカスタムチェックスタイルレポートをレポートする方法

  5. 5

    MVVMパターンを使用したWPFのチェックボックスとカスタムリスト

  6. 6

    PayPalカスタムチェックアウトフォーム

  7. 7

    laravelパスポートカスタムパスワード欄

  8. 8

    カスタムトランスポートを使用したフェッチ/クローン/プルの例外

  9. 9

    Laravelカスタム検証チェックパラメータで提供される他のフィールド

  10. 10

    カスタムパスポートを作成する-jwt戦略ミドルウェアコールバック

  11. 11

    Odoo 10 QwebPDFレポートのカスタムチェックページで改ページの問題

  12. 12

    C ++:オブジェクトキーのマルチマップカスタムコンパレータ

  13. 13

    スタイルブートストラップ4カスタムチェックボックス

  14. 14

    Visual Studio2017のカスタムTFSチェックインポリシー

  15. 15

    Visual Studio 2015 のカスタム TFS チェックイン ポリシー

  16. 16

    カスタムLaravelパスポートBearerTokenResponse

  17. 17

    Bootstrapポップオーバーのカスタムラウンドチェックボックス

  18. 18

    LaravelパスポートAPIの非認証URLの認証チェック

  19. 19

    Laravel-カスタムリンクレジスタとバリデーターのチェック

  20. 20

    カスタムフェッチコンパレータ

  21. 21

    QtDesignerカスタムチェックボックスの相対パス

  22. 22

    ポーカーストレートをチェックする

  23. 23

    カスタム値のPaypalチェックアウトフォーム

  24. 24

    カスタムチェックボックスを追加する Woocommerce クーポン

  25. 25

    カスタムコンパイル時チェック

  26. 26

    カスタムチェックボックスウィジェットをトリガーする方法

  27. 27

    Firefoxのカスタムチェック

  28. 28

    インジケーターのないカスタムチェックボックス(テキスト)

  29. 29

    ブートストラップ4カスタムチェックボックスは表示されません

ホットタグ

アーカイブ