パスワードレスログインの為のプラグイン

はじめに

Web サービス(競技会採点システム COMPE-Scoring)上で、パスワードレスログインのために、Passwordless Login というプラグインを使用していました。ログイン時にメールアドレスを入力し、返信されてきたメールのマジックリンクをクリックするとログインできるというものです。ユーザーは2アクション必須なのですが、ログインしているユーザーの管理画面上から複数のユーザー宛てにマジックリンク付きのメールを送信する必要があり、Magic Login Mail を作成しました。以下の動作の、最初~15秒までが、2アクションのもの、22秒~最後までが1アクションのものです。

Passwordless Login を改変したものです。コードを見て、ん?と思うところを修正・削除し、上記の1アクションの機能をアクションフックとして追加しました。

1,000以上サイトで有効化中
50以上サイトで有効化中

動作

使い方

  • 固定ページに、[magic_login]というショートコードを設置するだけです。そのページがログインの為のページになります。
  • ユーザーとして登録されたメールアドレスが入力されると、ログインリンクを含むメールが送信されたというメッセージが出力され、メールにログインリンクが届き、リンクをクリックするとログインします。
  • ユーザーとして登録されていないメールアドレスを入力するとエラーが出ます。デフォルトでは10分以内に、リンクをクリックしないと期限切れのエラーが出ます。

カスタマイズ

管理画面はありません。カスタマイズは、フィルターフックとアクションフックで行います。上記のリンク先に、サンプルコードが書いてありますので、それを見て行ってください。

セキュリティ対策

このプラグインと併せて以下の様なセキュリティ対策を行う事もできると思います。

wp-login.php にアクセスしてきたら、ホームページへリダイレクトする

/** ==================================================
 * Redirect to home if the URI is wp-login.php
 *
 * @since 1.00
 */
function redirect_login() {
	if ( ! is_user_logged_in() && isset( $_SERVER['REQUEST_URI'] ) && ! empty( $_SERVER['REQUEST_URI'] ) ) {
		$request_uri = esc_url_raw( wp_unslash( $_SERVER['REQUEST_URI'] ) );
		if ( 'wp-login.php' === wp_basename( parse_url( $request_uri, PHP_URL_PATH ) ) ) {
			wp_safe_redirect( home_url(), 302 );
			exit();
		}
	}
}
add_action( 'init', 'redirect_login' );

この記事を書いた人