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();
}