Ground Sunlight

Windowsで作る - PHPプログラミングの開発環境

ユーザ用ツール

サイト用ツール


apricot:ext:session-auth

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
apricot:ext:session-auth [2020/05/25 10:46]
y2sunlight [AuthController クラス]
apricot:ext:session-auth [2020/05/25 21:03] (現在)
y2sunlight [AuthController クラス]
行 271: 行 271:
 </code> </code>
  
 +  * **showForm()** : ログイン画面表示
 +    * AuthUser::check() で認証チェックします。
 +      * 認証済の場合:
 +        * ヘルパー関数redirect()でトップ画面にリダイレクトします。\\ \\ 
 +      * 未認証の場合:
 +        * AuthUser::remember()で自動ログインを試みます。
 +          * 成功の場合:
 +            * トップ画面にリダイレクトします。
 +          * 失敗の場合:
 +            * ログイン画面( login )にリダイレクトします。
 +
 +  * **login()** : ログイン(認証)
 +    * バリデーション( validate() )を実行します。
 +    * バリデーション全体については[[apricot:app:validation|こちら]]を、検証ルールについては[[apricot:app:validation#検証ルール|こちらを]]を参照して下さい。
 +    * バリデーションでエラーの場合:
 +      * withInputs()で入力変数をフラッシュ変数に保存します。
 +      * withErrors()でバリデーションのエラーバッグをフラッシュ変数に保存します。
 +      * redirect()でログイン画面にリダイレクトするResponseオブジェクトをします。\\ \\ 
 +    * Input::all()でフォームデータを取得します。
 +    * AuthUser::authenticate() でユーザ認証を行います。
 +      * 成功した場合:
 +        * AuthUser::getPathAfterLogin()でログイン後の画面を取得し、そこにリダイレクトします。
 +      * 失敗した場合:
 +        * withInputs()で入力変数をフラッシュ変数に保存します。
 +        * withErrors()でバリデーションのエラーバッグをフラッシュ変数に保存します。
 +        * redirect()でログイン画面にリダイレクトするResponseオブジェクトをします。
 +
 +  * **login()** : ログアウト
 +    *  AuthUser::forget() で認証セッションを破棄します。
 +    * ログイン画面にリダイレクトします。
 +
 +AuthUser の使用方法については、[[apricot:ext:user-auth#authuserクラス|こちら]]をご覧ください。
 +
 +> 認証コントローラのバリデーションは(コードが少量なので)[[apricot:app:validation#インターセプター|インターセプタークラス]]を作らずに自分のクラス内のメソッド( validate() で行っています。後述の「Apricot 拡張: [[apricot:ext:interceptor|インターセプター]]」では、validate()をクロージャにしてアクションと分離した形で再実装します。
  
  
行 377: 行 411:
 </html> </html>
 </code> </code>
- 
-<WRAP left important 60%> 
-TODO: 説明文 
-</WRAP> 
- 
-<WRAP left important 60%> 
-TODO: ソースに@csr追加 
-</WRAP> 
  
 \\ \\
行 424: 行 450:
 ... ...
             {{--             {{--
-            @if(app_has('auth'))+            @if(app('auth.menu',false))
             <ul class="navbar-nav ml-auto">             <ul class="navbar-nav ml-auto">
                 <a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>                 <a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>
-                    {{user()->account}} <span class="caret"></span>+                    {{AuthUser::getUser()->account}} <span class="caret"></span>
                 </a>                 </a>
                 <div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">                 <div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
行 461: 行 487:
  
 use App\Foundation\Controller; use App\Foundation\Controller;
 +use App\Foundation\Security\AuthUser;
  
 /** /**
行 473: 行 500:
     public function index()     public function index()
     {     {
-        $message = __('messages.home.msg_hello', [':account'=>user()->account]);+        $message = __('messages.home.msg_hello', [':account'=>AuthUser::getUser()->account]);
         return render('home',['message'=>$message]);         return render('home',['message'=>$message]);
     }     }
行 479: 行 506:
 </code> </code>
  
-  * '' [':account'=>env('APP_NAME')] '' の部分を '' user()->account '' に変更します。+  * ''AuthUser'' の ''use'' を追加します。 
 +  * '' [':account'<nowiki>=></nowiki>env('APP_NAME')] '' の部分を '' AuthUser::getUser()<nowiki>->account</nowiki> '' に変更します。
  
 \\ \\
行 500: 行 528:
 [{{apricot:ext:ext07.png?nolink}}] [{{apricot:ext:ext07.png?nolink}}]
 ■ 正しいユーザ名とパスワードを入力して[ログイン]ボタンを押すと、ホーム画面が画面が表示されます。\\  ■ 正しいユーザ名とパスワードを入力して[ログイン]ボタンを押すと、ホーム画面が画面が表示されます。\\ 
-■ [ログイン状態を保存する]をチェックすると、ログイン状態でブラウザを閉じてもログイン状態が保持され、再度Apricotにアクセスすると自動ログイン機能が働きます。自動ログインの有効期間は[[#ユーザ認証の設定|app.phpのauth.expires_sec]]で設定して下さい。+■ [ログイン状態を保存する]をチェックすると、ログイン状態でブラウザを閉じてもログイン状態が保持され、再度Apricotにアクセスすると自動ログイン機能が働きます。自動ログインの有効期間は[[#セッション認証の設定|app.phpのauth.expires_sec]]で設定して下さい。
  
 [{{apricot:ext:ext08.png?nolink}}] [{{apricot:ext:ext08.png?nolink}}]
apricot/ext/session-auth.1590371214.txt.gz · 最終更新: 2020/05/25 10:46 by y2sunlight