Wakaranaサンプルコード
バージョン20.12-1用
DBセットアップと管理者ユーザーの作成
test1.php
<?php
include "wakarana/main.php";
include "wakarana/config.php";
$wakarana_config = new wakarana_config();
$wakarana_config->setup_db();
$wakarana = new wakarana();
$wakarana->add_user("admin", "abc123", "管理者", NULL, TRUE);
print "セットアップ完了";
ユーザーの追加とそのユーザーでのログイン
test2.php
<?php
include "wakarana/main.php";
$user_id = "nanashi";
$password = "testtest";
$user_name = "名無しさん";
$wakarana = new wakarana();
$wakarana->add_user($user_id, $password, $user_name);
$wakarana->login($user_id, $password);
print "追加完了";
ログイン済みのユーザーに対して2要素認証を有効化
test3.php
<?php
include "wakarana/main.php";
$wakarana = new wakarana();
$user_id = $wakarana->check();
if ($user_id === FALSE) {
print "あなたはログインしていません";
exit();
}
$totp_key = $wakarana->create_totp_key();
?>
<form action="test4.php" method="post">
<?php
print "<input type='hidden' name='token' value='".$wakarana->create_one_time_token($user_id)."'>";
print "<input type='hidden' name='totp_key' value='".$totp_key."'>";
print $totp_key."<br>";
?>
上記のコードをTOTPクライアントアプリに登録し、表示された6桁の数字をここに入力してください。<br>
<input type="text" name="totp_pin"><br>
<button type="submit">送信</button>
</form>
test4.php
<?php
include "wakarana/main.php";
$wakarana = new wakarana();
$user_id = $wakarana->check();
if ($user_id === FALSE) {
print "あなたはログインしていません";
exit();
}
if (!$wakarana->check_one_time_token($user_id, $_POST["token"])) {
print "不正な操作です";
exit();
}
if ($wakarana->totp_compare($_POST["totp_key"], $_POST["totp_pin"])) {
$wakarana->enable_2_factor_auth($user_id, $_POST["totp_key"]);
print "2要素認証が有効になりました";
} else {
print "入力された数字が誤っています";
}
ログインフォーム
test5.php
<?php
include "wakarana/main.php";
$wakarana = new wakarana();
$user_id = $wakarana->check();
if ($user_id !== FALSE) {
print "既にログイン済みです";
exit();
}
?>
<form action="test6.php" method="post">
ユーザーID<input type="text" name="user_id"><br>
パスワード<input type="password" name="password"><br>
<button type="submit">送信</button>
</form>
test6.php
<?php
include "wakarana/main.php";
$wakarana = new wakarana();
$result = $wakarana->login($_POST["user_id"], $_POST["password"]);
if ($result === TRUE) {
print "ログイン成功";
exit();
} elseif($result === FALSE) {
print "IDまたはパスワードが誤っています";
exit();
}
?>
<form action="test7.php" method="post">
<?php
print "<input type='hidden' name='token' value='".$result."'>";
?>
TOTPクライアントアプリに表示された6桁の数字をここに入力してください。
<input type="text" name="totp_pin"><br>
<button type="submit">送信</button>
</form>
test7.php
<?php
include "wakarana/main.php";
$wakarana = new wakarana();
$result = $wakarana->totp_login($_POST["token"], $_POST["totp_pin"]);
if ($result === TRUE) {
print "ログイン成功";
exit();
} else {
print "2要素認証失敗";
exit();
}