今日は、Authパッケージについて調べてみたいと思います。Authパッケージは、複数のドライバに対応可能ですので、自分で認証システムを作成することは可能です。用意されているSimpleAuthを拡張して使いこなす方が現実的で、手っ取り早いと思います。以前は、FuelPHPの公式ドキュメントにはtodoの文字しか表示されていませんでしたが、今回チェックしたところかなりの部分が作成されていました。Authパッケージの基本的なメソッドforge($custom=array())指定した認証ドライバやconfigファイルで定義されているドライバをインスタンス化します。引数には、ドライバ名か、ドライバのconfig配列を渡します。値を指定しない場合は、Authの設定ファイルから値が適用されます。,'id'=>'customid'));instance($instance=null)ロードされたドライバインスタンスを取得します。複数のドライバをconfigで設定している場合、最初にロードされるドライバがデフォルトになります。引数をNULL値で指定すれば、デフォルトのドライバが指定されます。特定のドライバを取得するにはドライバのidを指定します。Auth::instance('simpleauth')->login(Input::post('username'),Input::post('password'));unload($driver_id=null)ロードされたドライバインスタンスを削除します。引数がNULL値の場合、デフォルトのドライバインスタンスが削除されます。アンロードが成功した場合はture、失敗した場合はfalseが返ります。Auth::unload('simpleauth');check($specific=null)全てのロードされたログインドライバか指定されたパラメータをチェックします。Auth::check(array('simpleauth','twitter'));verified($specifi=null)特定の検証ドライバ又は、全ての検証ドライバを取得します。全ての検証ドライバを配列で指定するか、特定のドライバidを指定します。logout()全ての現在ログイン中のドライバをログアウトします。register_driver_type($type,$check_method)新しいドライバタイプを登録します。第1引数は、認証ドライバの型、第2引数は、検証に使用するドライバメソッドを指定します。unregister_driver_type($type)指定するタイプの検証ドライバを削除します。独自のドライバ独自のドライバを作成するには、2つの方法があります。Authドライバクラスを拡張して作成するか、SimpleAuthクラスを拡張して、必要に応じて、それらを変更して作成します。Authドライバは下記の3つのタイプから構成されています。Login(Auth_Login_Driver)Group(Auth_Group_Driver)Acl(Auth_Acl_Driver)Authクラスの継承Authクラスは、下記のように継承します。}Auth_Login_Driverこのドライバは、全ての認証ログインドライバの基底クラスです。このドライバは、全てのログインドライバが実装しなければならない全てのメソッドに含まれている抽象クラスとして定義されています。下記に代表的なメソッドを記述します。get_id()get_idメソッドは、ドライバ固有のIDを返します。このメソッドは、ドライバを識別したり、特定のドライバインスタンスを取得するために使用することが出来ます。$id=Auth::instance('simpleauth')->get_id();set_config(キー、値)ドライバに値をセットします。第1引数に、設定キーの名前を指定します。第2引数は、設定キーの値を指定します。使用例//'key'名のキーに、'value'名の値をセットします。Auth::instance()->set_config('key','value');get_config(キー、既定値=null)指定した設定キーのドライバの設定値を取得します。指定したキーが存在しない場合、第2引数が返されます。第2引数を省略するとNULL値が返されます。使用例//指定したキーの値が返されます。キーが存在しない場合はfalseが返されます。$key=Auth::instance()->get_config('key',false);guest_login()ゲストログインをサポートしている場合、ドライバはゲストログインを返します。ゲストログインをサポートしていない場合はfalseを返します。//ここにゲストログイン用のコードを記述します}get_user_array(取得するフィールドの追加配列)現在ログイン中のユーザー情報の配列を取得します。そのユーザー情報の中には、最低限、screename(ログインユーザー名?)とEmailアドレスは含まれます。追加のフィールドはconfigドライバで指定するか、引数に配列として指定します。その追加情報を取得するには、そのドライバの中にget_user_fieldname()メソッドを持っている必要があります。使用例//デフォルトドライバで指定されているユーザー情報を取得します。//デフォルトドライバで何も指定されていなければ、screennameとemaiaddressを取得します。//SimpleAuthでユーザー情報を取得します。//もしverify_multiple_loginsがfalseにセットされていれば、静的に呼び出すことが出来ます。$user=Auth::get_user_array();hash_password(パスワード)指定したパスワードをbase64でエンコードされたハッシュ値を返します。このメソッドは非常に安全なpbkdf2ハッシュアルゴリズムを使用します。使用例//$passwの値をbase64でエンコードしたハッシュ値を返します。$password=Auth::instance()->hash_password($passw);抽象メソッドあなたが開発する全てのログインドライバは下記に記述する全てのメソッドを提供する必要があります。perform_check()現在のユーザーの有効なセッションがあるかどうかを確認する内部クラスメソッド。決定方法は自由に設定することが出来ます。このメソッドはAuth::check()メソッドで呼び出されます。アプリケーションで直接呼び出されることはありません。validate_user()このメソッドはログイン要求を検証するために使用します。検証方法は自由に決定することが出来ます。login()このメソッドは、ログイン要求を実行するために使用します。この要求を検証するためにvalidate_userメソッドを呼び出す必要があります。ログイン方法は自由に決定することが出来ます。logout()このメソッドは、現在のログインユーザーをログアウトするために使用します。ログアウト方法は自由に決定することが出来ます。現在ログインしているユーザーのID値を含む配列構造体を返します。get_groups()このメソッドは、現在ログイン中のユーザーに割り当てられたユーザーグループを返します。get_email()このメソッドは、現在ログイン中のユーザーのemailアドレスを返します。get_screen_name()このメソッドは、現在ログイン中のユーザーのスクリーン名(ニックネーム)を返します。Auth_Group_Driverこのドライバは、全ての認証グループドライバの基底クラスです。このドライバは、全てのグループドライバ、及び任意のグループドライバが実装しなければならない全てのメソッドの抽象クラスとして定義されています。ドライバの設定グループドライバは、このドライバが依存する追加ドライバ(基本的にACLドライバ)をロードすることが出来ます。カスタムドライバを実装することも出来ます。使用例//このグループドライバを読み込むときにSimpleACLを自動読み込みします。);GenericメソッドGenericメソッドは、グループベースのドライバで定義され、継承により全てのグループドライバを使用可能にします。これらのメソッドは基底グループと相互作用するために、アクセスをチェックする機能を提供します。get_id()get_idメソッドは、ドライバ固有のIDを返します。このメソッドは、ドライバを識別したり、特定のドライバインスタンスを取得するために使用することが出来ます。$id=Auth::instance('simplegroup')->get_id();set_config(キー、値)ドライバに値をセットします。第1引数に、設定キーの名前を指定します。第2引数は、設定キーの値を指定します。使用例//'key'名のキーに、'value'名の値をセットします。Auth::instance('simplegroup')->set_config('key','value');get_config(キー、既定値=null)指定した設定キーのドライバの設定値を取得します。指定したキーが存在しない場合、第2引数が返されます。第2引数を省略するとNULL値が返されます。使用例//指定したキーの値が返されます。キーが存在しない場合はfalseが返されます。$key=Auth::instance('simplegroup')->get_config('key',false);has_access(条件,ドライバ,グループ=null)このメソッドは、指定されて条件に従って、ユーザーのアクセス権を確認するために定義されたACLドライバを使用します。第1引数の条件は、必須項目で、文字列又は、配列で指定します。第2引数はドライバ名を指定します。必須項目ですが、NULL値を指定した場合、全てのドライバがアクセスチェックのために呼び出されます。アクセスが許可されたらtrue、許可されなかったら、falseを返します。Auth::instance('simplegroup')->has_access(array('comment',array('update','delete')),null);抽象メソッドあなたが開発する全てのグループドライバは下記の全てのメソッドを提供する必要があります。指定された全てのグループのID、又は、第2引数で指定された特定のドライバ又は、配列で指定されたドライバのメンバーであるかどうかを検証します。//'no_admin'へリダイレクトします。Auth::member(0,array('simplegroup','genericgroup'));get_name(グループ)このメソッドは指定したグループの表示名を取得します。Auth::instance('simplegroup')->get_name('admin');Auth_Acl_Driverこのドライバは、全てのACLドライバの基底クラスです。このドライバは全ての任意のドライバが実装しなければならない全てのメソッドの抽象クラスとして定義されています。GenericメソッドGenericメソッドはACLのベースドライバで定義され、継承することにより全ての認証ACLドライバで使用できるようになります。これらのメソッドは得手のACLを使用して対話するための、アクセスをチェックする機能を提供します。get_id()get_idメソッドは、ドライバ固有のIDを返します。このメソッドは、ドライバを識別したり、特定のドライバインスタンスを取得するために使用することが出来ます。$id=Auth::instance('simplegroup')->get_id();set_config(キー、値)ドライバに値をセットします。第1引数に、設定キーの名前を指定します。第2引数は、設定キーの値を指定します。使用例//'key'名のキーに、'value'名の値をセットします。Auth::instance('simplegroup')->set_config('key','value');get_config(キー、既定値=null)指定した設定キーのドライバの設定値を取得します。指定したキーが存在しない場合、第2引数が返されます。第2引数を省略するとNULL値が返されます。使用例//指定したキーの値が返されます。キーが存在しない場合はfalseが返されます。$key=Auth::instance('simplegroup')->get_config('key',false);抽象メソッドあなたが開発する全てのACLドライバは下記の全てのメソッドを提供する必要があります。has_access(条件,array($entity))このメソッドは、指定された条件に従って、ユーザーのアクセス権を確認するために定義されたACLドライバを使用します。第1引数の条件は、文字列又は配列で指定します。第2引数は、ユーザー又は、グループ識別子を配列の形式で指定します。}SimpleAuthSimpleAuthは、その名が示すように、Authパッケージに含まれている単純な認証システムです。独自のドライバを構築する場合に、リファレンスとしてこれを使用することが出来ます。Authのセットアップ設定は、SimpleAuthドライバを使用するAuthパッケージに行う必要があります。』で紹介していますので、省略いたします。SimpleAuthの設定値を下記に記述しておきます。app/configにコピーしたsimpleauth.phpを修正することによって設定値を変更します。db_connection使用するデータベースの接続名を指定します。null値を指定しておけば、app/configのdb.phpの設定値を適用します。table_name使用するユーザーテーブル名を指定します。初期値はuserです。table_columns使用するテーブルカラム名を指定します。初期値は、arry('*')です。最低限必要項目は、『username』『password』『email』『last_login』『login_hash』『group』『profile_fields』です。guest_loginゲストログインを使用するかどうかを指定します。初期値はtrueです。groups使用するSimpleAuthグループドライバを指定します。roles使用するロール(役割)を配列で指定します。SimpleAuthのACLドライバで定義されています。login_hash_saltログイン用のハッシュソルトを指定します。ここにランダムな文字列を指定することにより、パスワードのハッシュ値を計算する為の文字列の一部として使用されます。username_post_keyユーザー名を含むログインフォームの入力フィールドの名前を指定します。初期値はusernameです。password_post_keyパスワードを含むログインフォームの入力フィールドをの名前を指定します。初期値はpasswordです。クラスのメソッドvalidate_user(ユーザー名又はメールアドレス,パスワード)このメソッドは、ログインの要求を検証します。このメソッドは有効な資格情報としてメールアドレスとユーザー名の両方をサポートしています。検証NGの場合はfalseを、検証OKの場合は、ユーザー情報の配列を返します。login($username_or_email='',$password='')このメソッドはログインの要求を実行します。このメソッドは実行する前にvalidate_userメソッドを呼び出して検証をします。force_login($user_ids='')このメソッドは強制的にログイン要求を実行します。me機能として使用することが出来ます。loguout()ログインしているユーザーをログアウトします。$profile_fields=array())このメソッドは、指定した条件で、新しいユーザーレコードを作成します。作成に成功した場合はユーザーレコードのIDを返し、失敗した場合はfalseを返します。update_user($value,$username=null)このメソッドは、ユーザーレコード内の値を更新します。change_password(旧パスワード,新パスワード,ユーザー名)このメソッドは、指定した内容でパスワードを変更します。reset_password($username)このメソッドは指定したユーザーにランダムなパスワードを割り当てます。delete_user($username)このメソッドは指定したユーザーのアカウントを削除します。create_login_hash()このメソッドは、現在ログイン中のユーザーの新しいログインハッシュを生成します。get_user_id()このメソッドは、現在ログイン中のユーザーのIDを含む配列構造体を返します。ログインユーザーがいなければ、falseを返します。get_groups()このメソッドは、現在ログイン中のユーザーに割り当てられたユーザーグループを返します。get_email()現在ログイン中のユーザーのEメールアドレスを返します。get_screen_name()現在ログイン中のユーザーのスクリーンネーム(表示名)を返します。get_profile_fields()現在ログイン中のユーザーのプロファイルフィールドを配列で返します。guest_login()このメソッドは、ゲストログインが有効かどうかをチェックすることが出来ます。Groupmember(グループ名,ユーザー名)このメソッドは、ユーザーが指定したグループのメンバーかどうかをチェックします。第2引数のユーザー名を省略すると、現在ログインしているユーザーをチェックします。trueかfalseを返します。get_name(グループID)指定したグループIDの名前を取得します。get_roles(グループID)グループIDに定義されているロールを取得することが出来ます。Aclhas_access(条件)このメソッドは、現在ログイン中のユーザーが指定した条件の権限を持つ特定の場所へのアクセス権を持っているかどうかをチェックします。コメントをキャンセルメールアドレスが公開されることはありません。以前、『FuelPHPで簡単認証システム』でSimpleAuthの基本的な使い方を見てみましたが、実際にあれだけでは、ユーザー管理は出来ません。今日は、FuelPHPでデータベースに接続してみたいと思います。MySQLの接続情報をセットします。下記のコードを修正します。データベースは事前に作成しておきます。今日は、前回の『基本プロフィールの作成と表示』の続きをやりたいと思います。...FuelPHPのSessionクラス今日は、FuelPHPのセッションクラスについて調べてみたいと思います。セッションとは、サイトにアクセスしているユーザーを識別するための仕組みです。AFFINGER5.。