class wakarana
wakarana_commonの派生クラス。Wakaranaの主要機能を提供し、wakarana_data_itemの子孫クラスのインスタンスは全てこのクラスのインスタンスにより生成される。- wakarana::__construct
- wakarana::get_rejection_reason
- ☆ wakarana::hash_password
- ☆ wakarana::check_password_strength
- wakarana::new_wakarana_user
- wakarana::get_user
- wakarana::count_user
- wakarana::get_all_users
- wakarana::create_user
- wakarana::new_wakarana_role
- wakarana::get_role
- wakarana::get_all_roles
- wakarana::create_role
- ☆ wakarana::check_resource_id_string
- ☆ wakarana::get_parent_resource_id
- wakarana::new_wakarana_permission
- wakarana::get_permission
- wakarana::get_all_permissions
- wakarana::create_permission
- ◆ wakarana::new_wakarana_permitted_value
- wakarana::get_permitted_value
- wakarana::get_all_permitted_values
- wakarana::create_permitted_value
- ☆ wakarana::create_random_password
- ☆ wakarana::create_token
- wakarana::delete_all_tokens
- wakarana::get_client_ip_address
- ☆ wakarana::get_client_environment
- wakarana::get_client_auth_logs
- wakarana::check_client_auth_interval
- wakarana::delete_auth_logs
- wakarana::authenticate
- wakarana::login
- wakarana::authenticate_with_email_address
- wakarana::login_with_email_address
- wakarana::delete_login_tokens
- wakarana::search_users_with_email_address
- wakarana::check_email_address
- wakarana::check_email_sending_interval
- wakarana::create_email_address_verification_code
- wakarana::email_address_verify
- wakarana::get_email_address_verification_code_expire
- wakarana::delete_email_address_verification_codes
- wakarana::check_invite_code
- wakarana::get_invite_codes
- wakarana::get_invite_code_info
- wakarana::delete_invite_code
- wakarana::delete_expired_invite_codes
- wakarana::reset_password
- wakarana::get_password_reset_token_expire
- wakarana::delete_password_reset_tokens
- wakarana::search_users_with_custom_field
- wakarana::delete_all_users_values
- wakarana::delete_2sv_tokens
- wakarana::totp_authenticate
- wakarana::totp_login
- wakarana::check
- wakarana::delete_login_token
- wakarana::logout
- wakarana::delete_one_time_tokens
- wakarana::totp_compare
- ◆☆ wakarana::bin_to_int
- ◆☆ wakarana::int_to_bin
- ☆ wakarana::create_random_code
- ◆☆ wakarana::base32_decode
- ◆☆ wakarana::get_totp_pin
wakarana::__construct($base_dir=NULL)
wakarana_common::__constructとwakarana_common::connect_dbを順に実行する。$base_dir : wakarana_config.iniのあるフォルダのパス。省略時はcommon.phpのあるフォルダを使用する。
wakarana::get_rejection_reason()
wakaranaインスタンスで直前に行われた各種認証・登録処理の結果が拒絶だった場合、その理由を取得する。返り値 : 認証・登録が拒絶されていた場合はその理由を表す文字列を返し、まだ認証・登録処理が行われていない場合や認証・登録が承認されていた場合、内部エラーにより認証・登録処理が中断されていた場合はNULLを返す。拒絶理由を表す文字列の候補は直前に行われた認証・登録処理により異なる。
☆ wakarana::hash_password($user_id, $password)
パスワードのハッシュ値を生成する。☆staticメソッド。
$user_id : ユーザーID
$password : パスワード
返り値 : ハッシュ化されたパスワードを返す。
☆ wakarana::check_password_strength($password, $min_length=10)
パスワードの強度を確認する。☆staticメソッド。
$password : パスワード
$min_length : 強いパスワードとみなす最小の文字数
返り値 : パスワードが指定した文字数以上かつ大文字・小文字・数字の全てを含むならTRUE、そうでないならFALSEを返す。
wakarana::new_wakarana_user($user_info)
wakarana_userインスタンスを生成する。この関数はクラス外から直接呼び出すべきではない。
$user_info : ユーザー情報("user_id"(ユーザーID)、"user_name"(ユーザー名)、"password"(ハッシュ化されたパスワード)、"user_created"(アカウント作成日時)、"last_updated"(アカウント情報更新日時)、"last_access"(最終アクセス日時)、"status"(アカウントが使用可能か停止されているか)、"totp_key"(TOTPワンタイムパスワード生成キー))を格納した連想配列。
wakarana::get_user($user_id)
ユーザーIDで指定したユーザーのwakarana_userインスタンスを生成する。$user_id : ユーザーID
返り値 : ユーザーが存在する場合はwakarana_userクラスのインスタンス、存在しない場合はFALSEを返す。
wakarana::count_user()
ユーザーの総数を数える。返り値 : 登録されているユーザーの総数を返す。
wakarana::get_all_users($start=0, $limit=100, $order_by=WAKARANA_ORDER_USER_CREATED, $asc=TRUE)
全ユーザーの一覧を順に返す。$start : 何番目のユーザーから取得するか(1番目なら「0」)
$limit : 何件まで取得するか
$order_by : 並び替え基準。WAKARANA_ORDER_USER_CREATEDまたはWAKARANA_ORDER_USER_IDまたはWAKARANA_ORDER_USER_NAMEのいずれか。
$asc : 昇順で取得する場合はTRUE、降順ならFALSE。
返り値 : 成功した場合は、wakarana_userインスタンスを配列で返す。失敗した場合はFALSEを返す。
wakarana::create_user($user_id, $password, $user_name="", $status=WAKARANA_STATUS_NORMAL)
新しいユーザーを追加する。追加したユーザーには自動的にベースロールが割り当てられる。既に存在するユーザーIDを指定した場合はエラーとなる。
$user_id : 追加するユーザーのID。半角英数字及びアンダーバーが使用可能。
$password : 追加するユーザーのパスワード
$user_name : 追加するユーザーのハンドルネーム
$status : WAKARANA_STATUS_UNAPPROVEDを指定すると未承認ユーザー(ログイン不可)として作成することができる。
返り値 : 成功した場合は追加したユーザーのwakarana_userインスタンスを返す。失敗した場合はFALSEを返す。
拒絶理由文字列 : "invalid_user_id"(ユーザーIDに使用できない文字が含まれる)、"user_already_exists"(ユーザーアカウントが既に存在している)、"weak_password"(弱いパスワードである)
wakarana::new_wakarana_role($role_info)
wakarana_roleインスタンスを生成する。この関数はクラス外から直接呼び出すべきではない。
$role_info : ロール情報("role_id"(ロールID)、"role_name"(ロール名)、"role_description"(ロールの説明文))を格納した連想配列。
wakarana::get_role($role_id)
ロールのwakarana_roleインスタンスを生成する。$role_id : ロールID
返り値 : ロールが存在する場合はロールのwakarana_roleクラスのインスタンス、ロールが存在しない場合はFALSEを返す。
wakarana::get_all_roles()
存在するロールの一覧(ベースロールと特権管理者ロールを含む)を取得する。返り値 : ロールのwakarana_roleインスタンスをロールIDのアルファベット順に格納した配列を返す。失敗した場合はFALSEを返す。
wakarana::create_role($role_id, $role_name, $role_description="")
ロールを新規作成する。$role_id : ロールID。半角英数字及びアンダーバーが使用可能。アルファベット大文字は小文字に変換される。
$role_name : ロールの表示名
$role_description : ロールについての説明文
返り値 : 成功した場合は作成したロールのwakarana_roleインスタンスを、失敗した場合はFALSEを返す。
拒絶理由文字列 : "invalid_role_id"(ロールIDに使用できない文字が含まれる)、"role_already_exists"(ロールが既に存在している)
☆ wakarana::check_resource_id_string($resource_id)
文字列にリソースIDとして使用できない文字が含まれないかどうかを検査する。☆staticメソッド。
$resource_id : 検査する文字列
返り値 : リソースIDとして使用可能な文字列ならTRUEを、それ以外の場合はFALSEを返す。
☆ wakarana::get_parent_resource_id($resource_id)
権限のリソースIDから親権限のリソースIDを切り出す。このとき、実際にその権限が存在するかどうかはチェックしない。☆staticメソッド。
$resource_id : リソースID
返り値 : 親権限のリソースIDが切り出せた場合はその文字列を返し、それ以外の場合はNULLを返す。
wakarana::new_wakarana_permission($permission_info)
wakarana_permissionインスタンスを生成する。この関数はクラス外から直接呼び出すべきではない。
$permission_info : 権限情報("resource_id"(権限対象リソースID)、"permission_name"(権限名)、"permission_description"(権限の説明文))を格納した連想配列。
wakarana::get_permission($resource_id)
権限のwakarana_permissionインスタンスを生成する。$resource_id : 権限対象リソースID
返り値 : 権限が存在する場合は権限のwakarana_permissionクラスのインスタンス、権限が存在しない場合はFALSEを返す。
wakarana::get_all_permissions()
存在する権限の一覧を取得する。返り値 : 権限のwakarana_permissionインスタンスを権限対象リソースIDのアルファベット順に格納した配列を返す。権限が存在しない場合は空配列を返す。失敗した場合はFALSEを返す。
wakarana::create_permission($resource_id, $permission_name, $permission_description="")
権限を新規作成する。権限は権限の表示名ではなく権限対象リソースのIDで識別される。権限対象リソースIDに「/」が含まれる場合、作成される権限は「/」以下を取り除いたリソースIDの権限(親権限)の子権限となり、親権限に存在する動作を全て持った状態で作成される。
存在しない親権限に子権限を作成することはできない。
権限の作成時、初期動作「any」が自動作成される。
$resource_id : 権限対象リソースID。半角英数字及びアンダーバー、「/」が使用可能(ただし、「/」はリソースIDの先頭や末尾に使用したり、複数文字連続させることはできない)。アルファベット大文字は小文字に変換される。
$permission_name : 権限の表示名
$permission_description : 権限についての説明文
返り値 : 成功した場合は作成した権限のwakarana_permissionインスタンスを、失敗した場合はFALSEを返す。
拒絶理由文字列 : "invalid_resource_id"(リソースIDに使用できない文字が含まれる)、"resource_already_exists"(権限対象リソースが既に存在している)、"parent_resource_not_exists"(親となる権限対象リソースが存在しない)
◆ wakarana::new_wakarana_permitted_value($permitted_value_info)
wakarana_permitted_valueインスタンスを生成する。◆クラス内呼び出し専用。
$permitted_value_info : 権限値情報("permitted_value_id"(権限値ID)、"permitted_value_name"(権限値名)、"permitted_value_description"(権限値の説明文))を格納した連想配列。
wakarana::get_permitted_value($permitted_value_id)
権限値のwakarana_permitted_valueインスタンスを生成する。$permitted_value_id : 権限値ID
返り値 : 権限値が存在する場合は権限値のwakarana_permitted_valueクラスのインスタンスを、権限値が存在しない場合は空配列を返す。
wakarana::get_all_permitted_values()
存在する権限値の一覧を取得する。返り値 : 権限値のwakarana_permitted_valueインスタンスを権限値IDのアルファベット順に格納した配列を返す。権限が存在しない場合は空配列を返す。
wakarana::create_permitted_value($permitted_value_id, $permitted_value_name, $permitted_value_description="")
権限値を新規作成する。$permitted_value_id : 権限値ID。半角英数字及びアンダーバーが使用可能。アルファベット大文字は小文字に変換される。
$ppermitted_value_name : 権限値の表示名
$permitted_value_description : 権限値についての説明文
返り値 : 成功した場合はTRUE、失敗した場合はFALSEを返す。
拒絶理由文字列 : "invalid_permitted_value_id"(権限値IDに使用できない文字が含まれる)、"permitted_value_already_exists"(権限値が既に存在している)
☆ wakarana::create_random_password($length=14)
パスワードとして使用可能な文字列をランダムに生成する。☆staticメソッド。
$length : 生成するパスワードの文字数。3以上の数値を指定した場合、大文字・小文字・数字の全てを含むパスワードを生成する。
返り値 : 英数字と記号(-と.)からなるランダムな文字列を返す。
☆ wakarana::create_token()
トークンとして使用可能な文字列をランダムに生成する。☆staticメソッド。
返り値 : 英数字と記号(-と_)からなるランダムな文字列を返す。
wakarana::delete_all_tokens()
データベースに存在する各種トークン(ログイントークン、ワンタイムトークン、メールアドレス確認トークン、パスワードリセット用トークン、2段階認証用一時トークン)を全て削除する。返り値 : 成功した場合はTRUE、失敗した場合はFALSEを返す。
wakarana::get_client_ip_address()
プロキシを除外してアクセス中のクライアント端末のIPアドレス文字列を取得し、それがIPアドレスとして正常な文字列であればそれを返す。返り値 : クライアント端末のIPアドレスをサニタイズして返す。IPアドレスの取得に失敗した場合は「0.0.0.0」を返す。
☆ wakarana::get_client_environment()
アクセス中のクライアント端末の情報を連想配列で返す。☆staticメソッド。
返り値 : キー"operating_system"(OS名)と"browser_name"(ブラウザ名)が含まれる連想配列。
wakarana::get_client_auth_logs($ip_address)
クライアントのIPアドレスからログイン試行履歴を新しい順に配列で取得する。$ip_address : サニタイズ済みのIPアドレス
返り値 : 成功した場合はそのIPアドレスの各試行履歴が格納された連想配列("user_id"(ユーザーID)、"succeeded"(正しいパスワードを入力したか否か)、"authenticate_datetime"(試行日時))を、配列に入れて返す。失敗した場合はFALSEを返す。
wakarana::check_client_auth_interval($ip_address, $unsucceeded_only=FALSE)
クライアントのIPアドレスが前回のログイン試行から次に試行できるようになるまでの期間を経過しているかを調べる。$ip_address : サニタイズ済みのIPアドレス
$unsucceeded_only : 失敗した試行のみを対象にする
返り値 : wakarana_config.iniで指定した期間が経過していればTRUE、そうでない場合はFALSEを返す。
wakarana::delete_auth_logs($expire=-1)
指定した期間より前のログイン試行履歴を全て削除する。$expire : 経過時間の秒数。-1を指定した場合はwakarana_config.iniで指定した履歴の保持秒数が代わりに使用される。
返り値 : 成功した場合はTRUE、失敗した場合はFALSEを返す。
wakarana::authenticate($user_id, $password, $totp_pin=NULL)
ユーザーIDとパスワード、TOTPコード(2要素認証を使用する場合)を照合するが、トークンの生成と送信は行わない。内部的にログイン試行ログの参照と登録は実施する。
$user_id : ユーザーID
$password : パスワード
$totp_pin : 6桁のTOTPコード。2要素認証を使用しない場合と2要素認証の入力画面を分ける場合は省略。
返り値 : 認証された場合はユーザーのwakarana_userインスタンス、ユーザーアカウントが停止中の場合はその状態値(WAKARANA_STATUS_DISABLEまたはWAKARANA_STATUS_UNAPPROVED)、ユーザーIDが2段階認証の対象ユーザーでTOTPコードがNULLだった場合は仮トークン、それ以外の場合はFALSEを返す。
拒絶理由文字列 : "parameters_not_matched"(ユーザーIDまたはパスワード、TOTPコードのいずれかが誤っている)、"unavailable_user"(ユーザーアカウントが停止中である)、"currently_locked_out"(ロックアウト中のためログインを試行できない)
wakarana::login($user_id, $password, $totp_pin=NULL)
ユーザーIDとパスワード、TOTPコード(2要素認証を使用する場合)を照合し、正しければログイントークンを生成してクライアント端末に送信する。この関数はHTTPヘッダーの出力を伴うため、この関数より前にHTTPヘッダー以外の何らかの文字が出力されていた場合はエラーとなる。
$user_id : ユーザーID
$password : パスワード
$totp_pin : 6桁のTOTPコード。2要素認証を使用しない場合と2要素認証の入力画面を分ける場合は省略。
返り値 : ログインが完了した場合はwakarana_userインスタンス、ユーザーアカウントが停止中の場合はその状態値(WAKARANA_STATUS_DISABLEまたはWAKARANA_STATUS_UNAPPROVED)、ユーザーIDが2要素認証の対象ユーザーでTOTPコードがNULLだった場合は仮トークン、それ以外の場合はFALSEを返す。
拒絶理由文字列 : "parameters_not_matched"(ユーザーIDまたはパスワード、TOTPコードのいずれかが誤っている)、"unavailable_user"(ユーザーアカウントが停止中である)、"currently_locked_out"(ロックアウト中のためログインを試行できない)
wakarana::authenticate_with_email_address($email_address, $password, $totp_pin=NULL)
ユーザーIDの代わりにメールアドレスを使用し、パスワードとTOTPコード(2要素認証を使用する場合)を照合する。トークンの生成と送信は行わない。内部的にログイン試行ログの参照と登録は実施する。
wakarana_config.iniで同じメールアドレスを複数アカウントに使用できるよう設定している場合、この関数は使用できない。
$email_address : メールアドレス
$password : パスワード
$totp_pin : 6桁のTOTPコード。2要素認証を使用しない場合と2要素認証の入力画面を分ける場合は省略。
返り値 : 認証された場合はユーザーのwakarana_userインスタンス、ユーザーアカウントが停止中の場合はその状態値(WAKARANA_STATUS_DISABLEまたはWAKARANA_STATUS_UNAPPROVED)、ユーザーIDが2段階認証の対象ユーザーでTOTPコードがNULLだった場合は仮トークン、それ以外の場合はFALSEを返す。
拒絶理由文字列 : "parameters_not_matched"(メールアドレスまたはパスワード、TOTPコードのいずれかが誤っている)、"unavailable_user"(ユーザーアカウントが停止中である)、"currently_locked_out"(ロックアウト中のためログインを試行できない)
wakarana::login_with_email_address($email_address, $password, $totp_pin=NULL)
ユーザーIDの代わりにメールアドレスを使用し、パスワードとTOTPコード(2要素認証を使用する場合)を照合、正しければログイントークンを生成してクライアント端末に送信する。この関数はHTTPヘッダーの出力を伴うため、この関数より前にHTTPヘッダー以外の何らかの文字が出力されていた場合はエラーとなる。
また、wakarana_config.iniで同じメールアドレスを複数アカウントに使用できるよう設定している場合、この関数は使用できない。
$email_address : メールアドレス
$password : パスワード
$totp_pin : 6桁のTOTPコード。2要素認証を使用しない場合と2要素認証の入力画面を分ける場合は省略。
返り値 : ログインが完了した場合はwakarana_userインスタンス、ユーザーアカウントが停止中の場合はその状態値(WAKARANA_STATUS_DISABLEまたはWAKARANA_STATUS_UNAPPROVED)、ユーザーIDが2要素認証の対象ユーザーでTOTPコードがNULLだった場合は仮トークン、それ以外の場合はFALSEを返す。
拒絶理由文字列 : "parameters_not_matched"(メールアドレスまたはパスワード、TOTPコードのいずれかが誤っている)、"unavailable_user"(ユーザーアカウントが停止中である)、"currently_locked_out"(ロックアウト中のためログインを試行できない)
wakarana::delete_login_tokens($expire=-1)
指定した経過時間より前に生成されたログイントークンを無効化する。$expire : 経過時間の秒数。-1を指定した場合はwakarana_config.iniで指定したログイントークンの有効秒数が代わりに使用される。
返り値 : 成功した場合はTRUE、失敗した場合はFALSEを返す。
wakarana::search_users_with_email_address($email_address)
メールアドレスからユーザーを逆引きする。$email_address : 調べるメールアドレス
返り値 : 指定したメールアドレスを登録しているユーザーがいれば、該当ユーザーらのwakarana_userインスタンスの配列、そうでない場合は空配列、エラーの場合は-1を返す。
wakarana::check_email_address($email_address)
指定した文字列がメールアドレスの規格に沿ったものであり、かつ、そのドメインがメールドメインブラックリストに含まれないドメインであることを確認する。$email_address : メールアドレス
返り値 : メールアドレスの規格に沿った文字列であり、かつ、メールドメインブラックリストに含まれないドメインの場合はTRUE、それ以外の場合はFALSEを返す。
拒絶理由文字列 : "invalid_email_address"(メールアドレスとして正しくない文字列である)、"blacklisted_email_domain"(メールドメインがブラックリストに登録されている)
wakarana::check_email_sending_interval($email_address)
アクセス者のIPアドレスと指定されたメールアドレスの両方が発行可能間隔以降にメールアドレス確認トークン発行を受けていないことを確認する。$email_address : メールアドレス
返り値 : アクセス者のIPアドレスと指定されたメールアドレスの両方が発行可能間隔以降にメールアドレス確認トークン発行を受けていなければTRUE、それ以外の場合はFALSEを返す。
wakarana::create_email_address_verification_code($email_address)
アカウント登録前の新規ユーザーに対してメールアドレス確認コードを生成し、データベースに登録する。この関数によりメールが送信されるわけではない。
$email_address : コードの送信先メールアドレス
返り値 : 成功した場合は8桁のメールアドレス確認コード文字列を、失敗した場合はFALSEを返す。
拒絶理由文字列 : "invalid_email_address"(メールアドレスとして正しくない文字列である)、"blacklisted_email_domain"(メールドメインがブラックリストに登録されている)、"email_address_already_exists"(既に登録されているメールアドレスである)、"currently_locked_out"(前回のメールアドレス確認コード発行時から規定の時間が経過していない)
wakarana::email_address_verify($email_address, $verification_code)
メールアドレスと、新規ユーザー登録用に生成された確認コードとを照合する。使用済みのメールアドレス確認コードは削除される。$email_address : コードが紐付けられたメールアドレス
$verification_code : メールアドレス確認コード。大文字小文字を区別しない。
返り値 : 認証された場合はTRUEを返し、それ以外の場合はFALSEを返す。
拒絶理由文字列 : "invalid_email_address"(メールアドレスとして正しくない文字列である)、"blacklisted_email_domain"(メールドメインがブラックリストに登録されている)、"email_address_already_exists"(既に登録されているメールアドレスである)、"parameters_not_matched"(メールアドレスまたは確認コードが誤っている)
wakarana::get_email_address_verification_code_expire($email_address, $verification_code)
新規ユーザー登録用に生成されたメールアドレス確認コードの有効期限を取得する。$email_address : コードが紐付けられたメールアドレス
$verification_code : メールアドレス確認コード。大文字小文字を区別しない。
返り値 : 新規ユーザー登録用の有効な確認コードだった場合はYYYY-MM-DD hh:mm:ss形式の有効期限、それ以外の場合はFALSEを返す。
wakarana::delete_email_address_verification_codes($expire=-1)
指定した経過時間より前に生成されたメールアドレス確認コードを無効化する。$expire : 経過時間の秒数。-1を指定した場合はwakarana_config.iniで指定したメールアドレス確認コードの有効秒数が代わりに使用される。
返り値 : 成功した場合はTRUE、失敗した場合はFALSEを返す。
wakarana::check_invite_code($invite_code)
ユーザー招待コードを検証する。$invite_code : 招待コード文字列。大文字小文字を区別しない。
$decrease_number : TRUEを指定するか省略した場合、招待コードの残り回数が1つ減る。
返り値 : 有効な招待コードだった場合はTRUE、それ以外の場合はFALSEを返す。
wakarana::get_invite_codes()
有効な全ての招待コードを取得する。返り値 : 成功した場合は、各招待コードの情報が格納された連想配列("invite_code"(招待コード本体)以外の項目はwakarana::get_invite_code_infoの返り値と同様)を発行日時の古い順に並べた配列(招待コードがない場合は空配列)を返す。失敗した場合はFALSEを返す。
wakarana::get_invite_code_info($invite_code)
ユーザー招待コードの情報(発行したユーザー、発行日時、有効期限、残り回数)を取得する。$invite_code : 招待コード文字列。大文字小文字を区別しない。
返り値 : 有効な招待コードだった場合は、ユーザー招待コードの情報を連想配列("user_id"(発行者のユーザーID)、"code_created"(YYYY-MM-DD hh:mm:ss形式の発行日時)、"code_expire"(YYYY-MM-DD hh:mm:ss形式の有効期限)、"remaining_number"(残り回数、無限の場合はNULL))で返す。それ以外の場合はFALSEを返す。
wakarana::delete_invite_code($invite_code=NULL)
ユーザー招待コードを削除する。$invite_code : 招待コード文字列。NULLを指定した場合は全ての招待コードを削除する。
返り値 : 成功した場合はTRUE、失敗した場合はFALSEを返す。
wakarana::delete_expired_invite_codes()
有効期限切れのユーザー招待コードをデータベースから削除する。返り値 : 成功した場合はTRUE、失敗した場合はFALSEを返す。
wakarana::reset_password($token, $new_password)
パスワードリセット用トークンに紐付けられたアカウントのパスワードを再設定する。使用済みトークンは自動的に削除される。$token : パスワードリセット用トークン
$new_password : 新しいパスワード
返り値 : 成功した場合はトークンに紐付けられたユーザーのwakarana_userクラスのインスタンスを返し、それ以外の場合はFALSEを返す。
拒絶理由文字列 : "invalid_token"(有効なトークンではない)、"weak_password"(弱いパスワードである)
wakarana::get_password_reset_token_expire($token)
パスワードリセット用トークンの有効期限を取得する。$token : パスワードリセット用トークン
返り値 : 有効な確認コードだった場合はYYYY-MM-DD hh:mm:ss形式の有効期限、それ以外の場合はFALSEを返す。
wakarana::delete_password_reset_tokens($expire=-1)
指定した経過時間より前に生成されたパスワードリセット用トークンを無効化する。$expire : 経過時間の秒数。-1を指定した場合はwakarana_config.iniで指定したパスワードリセット用トークンの有効秒数が代わりに使用される。
返り値 : 成功した場合はTRUE、失敗した場合はFALSEを返す。
wakarana::search_users_with_custom_field($custom_field_name, $custom_field_value)
カスタムフィールドの値からユーザーを逆引きする。$custom_field_name : カスタムフィールド名
$custom_field_value : カスタムフィールド値
返り値 : 指定した値と一致するカスタムフィールドの値を持つユーザーがいれば、該当ユーザーらのwakarana_userインスタンスの配列、そうでない場合は空配列、エラーの場合は-1を返す。
wakarana::delete_all_users_values($custom_field_name)
全ユーザーを対象に、指定したカスタムフィールドの全データを削除する。$custom_field_name : カスタムフィールド名
返り値 : 成功した場合はTRUE、失敗した場合はFALSEを返す。
wakarana::delete_2sv_tokens($expire=-1)
指定した経過時間より前に生成された2段階認証用一時トークンを無効化する。$expire : 経過時間の秒数。-1を指定した場合はwakarana_config.iniで指定した2段階認証用一時トークンの有効秒数が代わりに使用される。
返り値 : 成功した場合はTRUE、失敗した場合はFALSEを返す。
wakarana::totp_authenticate($tmp_token, $totp_pin)
ユーザーIDとパスワードが照合済みのユーザーに対してTOTPによる第2段階の認証を行う。tmp_token : wakarana::authenticateにより発行される仮トークン
$totp_pin : 6桁のTOTPコード
返り値 : 認証された場合はユーザーのwakarana_userインスタンス、そうでない場合はFALSEを返す。
拒絶理由文字列 : "invalid_token"(有効な仮トークンではない)、"pin_not_matched"(TOTPコードが一致しない)、"unavailable_user"(ユーザーアカウントが停止中である)、"currently_locked_out"(ロックアウト中のためログインを試行できない)
wakarana::totp_login($tmp_token, $totp_pin)
ユーザーIDとパスワードが照合済みのユーザーに対してTOTPによる第2段階の認証を行い、正しければログイントークンを生成してクライアント端末に送信する。この関数はHTTPヘッダーの出力を伴うため、この関数より前にHTTPヘッダー以外の何らかの文字が出力されていた場合はエラーとなる。
tmp_token : wakarana::loginにより発行される仮トークン
$totp_pin : 6桁のTOTPコード
返り値 : ログインが完了した場合はユーザーのwakarana_userインスタンス、そうでない場合はFALSEを返す。
拒絶理由文字列 : "invalid_token"(有効な仮トークンではない)、"pin_not_matched"(TOTPコードが一致しない)、"unavailable_user"(ユーザーアカウントが停止中である)、"currently_locked_out"(ロックアウト中のためログインを試行できない)
wakarana::check($token=NULL, $update_last_access=TRUE)
クライアント端末のcookieを参照し、正しくログインしているかどうかを照合する。$token : 文字列を指定した場合、クライアント端末のcookie情報に関係なくその文字列をログイントークンとみなして照合処理を行う。
$update_last_access : FALSEの場合、最終アクセス日時の更新を行わない。
返り値 : 正しいログイントークンでログインしており、かつ、停止中のアカウントでない場合はそのトークンに対応するユーザーのwakarana_userインスタンス、それ以外の場合はFALSEを返す。
wakarana::delete_login_token($token)
指定したログイントークンをデータベースから削除する。$token : ログイントークン
返り値 : 成功した場合はTRUE、失敗した場合はFALSEを返す。
wakarana::logout()
接続中のクライアント端末が持つログイントークンをクライアント端末とデータベースの双方から削除し、ログアウト状態にする。この関数はHTTPヘッダーの出力を伴うため、この関数より前にのHTMLやHTTPヘッダー以外の何らかの文字が出力されていた場合はエラーとなる。
返り値 : 成功した場合はTRUE、既にログアウトしている場合はNULL、失敗した場合はFALSEを返す。
wakarana::delete_one_time_tokens($expire=-1)
指定した経過時間より前に生成されたワンタイムトークンを無効化する。$expire : 経過時間の秒数。-1を指定した場合はwakarana_config.iniで指定したトークンの有効秒数が代わりに使用される。
返り値 : 成功した場合はTRUE、失敗した場合はFALSEを返す。
wakarana::totp_compare($totp_key, $totp_pin)
TOTPの規格に基づいて現在時刻のタイムスタンプで生成鍵とワンタイムコードを照合する。$totp_key : TOTP生成鍵
$totp_pin : 6桁のTOTPコード
返り値 : 生成鍵に対して正しいTOTPコードだった場合はTRUEを、それ以外の場合はFALSEを返す。
◆☆ wakarana::bin_to_int($bin, $start, $length)
バイナリデータをビット単位で切り出し、整数に変換する。◆クラス内呼び出し専用。
☆staticメソッド。
$bin : バイナリデータを格納した文字列
$start : 切り出し開始ビット
$length : 切り出すビット数
返り値 : 切り出したビット列を2進数として解釈した整数値を返す。
◆☆ wakarana::int_to_bin($int, $digits_start)
整数値型のデータから2進数で8桁分のビットを切り出して1バイトのバイナリに変換する。◆クラス内呼び出し専用。
☆staticメソッド。
$int : 整数値型データ
$digits_start : データを2進数に変換したときの下から何番目の位から切り出すか。
返り値 : 1バイトの文字列に格納されたバイナリを返す。
☆ wakarana::create_random_code($code_length=16)
TOTP生成鍵として使用できるランダムなBASE32文字列を作成する。☆staticメソッド。
$code_length : 作成する文字列の桁数。8の倍数でなければならない。
返り値 : 指定された桁数のランダムなBASE32文字列を返す。
◆☆ wakarana::base32_decode($base32_str)
Base32エンコードされた文字列をバイナリにデコードする。◆クラス内呼び出し専用。
☆staticメソッド。
$base32_str : Base32エンコードされた文字列
返り値 : バイナリデータを格納した文字列を返す。
◆☆ wakarana::get_totp_pin($key_base32, $past_30s=0)
TOTP生成鍵と現在時刻からワンタイムコードを生成する。◆クラス内呼び出し専用。
☆staticメソッド。
$key_base32 : TOTP生成鍵
$past_30s : 負でない整数値。この値に30をかけた秒数過去のタイムスタンプを現在時刻とみなす。
返り値 : ワンタイムコードを返す。
