Login_ResetPassword モジュール【~ Ver. 3.0】

この機能は Ver. 3.1 で廃止されました。新しい会員機能についてのドキュメントは以下をご覧ください。

ログイン・会員機能の基本

Login_ResetPassword モジュールとは、ユーザーのパスワード変更を行うための POST モジュールです。

ユーザーのパスワードをユーザー自身が指定したパスワードに変更できます。パスワード変更が成功すると自動的にログインし、現在のブログのトップページにリダイレクトされます。

ユーザーがログインパスワードを忘れてログインできない場合に、パスワードの再設定を行い、ログインできるようにするために利用できます。

また、Login_ResetPassword モジュールは Login_Remind モジュールで発行されたパスワード変更のURLから実行する必要がありますのでご注意ください。

2段階認証が有効な場合は、パスワード変更が成功した場合でもリダイレクトせず、そのままログイン画面に遷移します。

有効なフィールド(項目)

Login_ResetPassword モジュールで有効なフィールド(項目)について説明します。以下のフィールド(項目)が送信できます。

また、Login_ResetPassword モジュールで送信するフィールド(項目)は name 属性に user[] を、 value 属性に 送信したいフィールド(項目)名を指定した input タグを一緒に記述する必要があります。

<input type="password" name="pass" value="{pass}" class="acms-admin-form-large validator-result-{pass:validator#required} validator-result-{pass:validator#password}" autocomplete="off" />
<input type="hidden" name="user[]" value="pass" />


フィールド名(項目) 概要 入力例
pass(必須) 新しく設定したいパスワード password
retype_pass(必須) 新しく設定したいパスワード(確認用) password

Login_ResetPassword モジュールのサンプルコード

<!-- BEGIN_MODULE Login -->
<form action="" method="post" enctype="multipart/form-data">
  <!-- BEGIN reset -->
  <div class="acms-admin-loginBox">
      <div class="acms-admin-siteImageText">パスワード変更</div>

      <!-- BEGIN_IF [{pass:validator#required}/eq/0] -->
      <p class="validator-result-0 acms-admin-alert acms-admin-alert-danger">パスワードが入力されていません。</p>
      <!-- END_IF -->
      <!-- BEGIN_IF [{pass:validator#password}/eq/0] -->
      <p class="validator-result-0 acms-admin-alert acms-admin-alert-danger">不正なパスワードです。別のパスワードを入力ください。</p>
      <!-- END_IF -->
      <!-- BEGIN_IF [{retype_pass:validator#equalTo}/eq/0] -->
      <p class="validator-result-0 acms-admin-alert acms-admin-alert-danger">パスワードが一致しません。</p>
      <!-- END_IF -->
      <!-- BEGIN_IF [{reset:validator#isOperable}/eq/0] -->
      <p class="validator-result-0 acms-admin-alert acms-admin-alert-danger">不正な操作です。</p>
      <!-- END_IF -->

      <div class="acms-admin-form">
        <label class="acms-admin-form-block acms-admin-clear">新しいパスワード</label>
        <div class="js-password_strength">
          <input type="password" name="pass" value="{pass}" class="js-input acms-admin-form-large  validator-result-{pass:validator#required} validator-result-{pass:validator#password}" autocomplete="off" />
          <input type="hidden" name="user[]" value="pass" />
          <div>
            <div class="js-meter acms-admin-password-strength-meter acms-admin-form-width-full"></div>
          </div>
          <span class="js-label acms-admin-password-strength-label" aria-live="assertive"></span>
        </div>

        <label class="acms-admin-form-block acms-admin-clear">新しいパスワードを確認</label>
        <input type="password" name="retype_pass" value="{retype_pass}" class="acms-admin-form-large validator-result-{retype_pass:validator#equalTo}" autocomplete="off" />
        <input type="hidden" name="user[]" value="retype_pass" />
        <input type="hidden" name="retype_pass:validator#equalTo" value="pass" id="validator-retype_pass-equalTo" />

        <!-- BEGIN passwordPolicyMessage:veil -->
        <p class="acms-admin-text-danger">{passwordPolicyMessage}</p>
        <!-- END passwordPolicyMessage:veil -->
      </div>
      <p class="loginAction">
        <button type="submit" class="acms-admin-btn-admin" name="ACMS_POST_Login_ResetPassword">パスワードを変更</button>
      </p>
    </div>
  <!-- END reset -->
</form>
<!-- END_MODULE Login -->

エラー時の表示

Login_ResetPassword モジュールで何らかのエラーが起きた場合には以下のフィールド(項目)がバリデーションエラーとして表示されます。



フィールド(項目)名 オプション名 概要
pass required パスワードが入力されていない場合に発生するエラーです。
pass password コンフィグ > ログイン設定 > パスワードポリシーで設定したルールに違反している場合に発生するエラーです。
retype_pass equalTo 入力されたパスワードが retype_pass のフィールド(項目)で入力したパスワードと一致していない場合に発生するエラーです。
reset isOperable Login_Remind モジュールで発行されたパスワード変更のURLでないURLや、パスワード変更のURLの有効期限が切れていた場合などに発生するエラーです。

Login_Subscribe モジュール【~ Ver. 3.0】

この機能は Ver. 3.1 で廃止されました。新しい会員機能についてのドキュメントは以下をご覧ください。

ログイン・会員機能の基本

Login_Subscribe モジュールとは、外部申請によるユーザー登録を行うためのPOSTモジュールです。

Login_Subscribe モジュールを使うことで、サイト閲覧者自身でユーザー登録を行うことができます。これにより、サイト閲覧者に会員登録をしてもらうことを想定した会員制サイトを構築することが可能です。

また、Login_Subscribe モジュールでは、メールアドレスや名前などのユーザーの基本設定だけでなく、ユーザーのカスタムフィールドも登録することが可能です。また、コンフィグ > ログイン設定 > 読者登録機能から登録するユーザーのステータスや権限の設定や、メールアドレスの有効性認証を行うかどうかをカスタマイズできます。

Login_Subscribe モジュールを使ったユーザー登録フォームのカスタマイズについては、以下のドキュメントで詳しく紹介されています。


有効なフィールド(項目)

Login_Subscribe モジュールではユーザーの基本設定のフィールド(項目)とカスタムフィールドのデータを送信できます。基本設定のフィールド(項目)を送信する場合は、 name 属性に `user[]` を、 value 属性に 送信したいフィールド(項目)名を指定した input タグを一緒に記述する必要があります。

<input type="text" name="name" value="{name}" class="acms-form-large validator-result-{name:validator#required}" placeholder="" />
<input type="hidden" name="user[]" value="name" />

<!-- ↓カスタムフィールドも追加できます -->
<input type="text" name="company" value="{company}" class="acms-form-large" />
<input type="hidden" name="field[]" value="company" />


フィールド名(項目) 概要 入力例
name(必須) 登録するユーザーの名前です。 アップルップル
mail(必須) 登録するユーザーのメールアドレスです。 info@example.com
pass(必須) 登録するユーザーのパスワードです。 password
retype_pass(必須) 登録するユーザーのパスワード(確認用)です。 password
code 登録するユーザーのユーザーコードです。 ablogcms
url 登録するユーザーのURLです。 https://example.com
mail_magazine 登録するユーザーがメールマガジンを受信するかどうか(on | off)です。 off

上記のユーザー基本設定に加えて、ユーザーのカスタムフィールドを登録することも可能です。

Login_Subscribe モジュールのサンプルコード

<!-- BEGIN_MODULE Login -->
<form action="" method="post" enctype="multipart/form-data">
  <!-- BEGIN subscribe -->
  <div class="acms-admin-loginBox">
      <div class="acms-admin-siteImageText">新規ユーザー登録</div>

      <!-- BEGIN sendMsg#before -->
      <p class="acms-admin-login-text">登録いただくと指定されたメールアドレスに確認メールが送信されます。メールの内容に従って登録を完了してください。</p>
      <!-- END sendMsg#before -->
      <!-- BEGIN sendMsg#after -->
      <p class="acms-admin-alert acms-admin-alert-info">入力されたメールアドレス宛に、確認用メールを送信しました。</p>
      <!-- END sendMsg#after -->

      <!-- BEGIN_IF [{name:validator#required}/eq/0] -->
      <p class="validator-result-0 acms-admin-alert acms-admin-alert-danger">名前が入力されていません。</p>
      <!-- END_IF -->
      <!-- BEGIN_IF [{mail:validator#required}/eq/0] -->
      <p class="validator-result-0 acms-admin-alert acms-admin-alert-danger">メールアドレスが入力されていません。</p>
      <!-- END_IF -->

      <!-- BEGIN_IF [{mail:validator#email}/eq/0] -->
      <p class="validator-result-0 acms-admin-alert acms-admin-alert-danger">不正なメールアドレスです。</p>
      <!-- END_IF -->
      <!-- BEGIN_IF [{mail:validator#doubleMail}/eq/0] -->
      <p class="validator-result-0 acms-admin-alert acms-admin-alert-danger">すでに登録されているメールアドレスです。</p>
      <!-- END_IF -->
      <!-- BEGIN_IF [{mail:validator#send}/eq/0] -->
      <p class="validator-result-0 acms-admin-alert acms-admin-alert-danger">メールの送信に失敗しました。システムの設定に問題があります。システムの管理者にお問い合わせください。</p>
      <!-- END_IF -->
      <!-- BEGIN_IF [{pass:validator#required}/eq/0] -->
      <p class="validator-result-0 acms-admin-alert acms-admin-alert-danger">パスワードが入力されていません。</p>
      <!-- END_IF -->
      <!-- BEGIN_IF [{pass:validator#password}/eq/0] -->
      <p class="validator-result-0 acms-admin-alert acms-admin-alert-danger">不正なパスワードです。別のパスワードを入力ください。</p>
      <!-- END_IF -->
      <!-- BEGIN_IF [{retype_pass:validator#equalTo}/eq/0] -->
      <p class="validator-result-0 acms-admin-alert acms-admin-alert-danger">パスワードが一致しません。</p>
      <!-- END_IF -->

      <div class="acms-admin-form">
        <label class="acms-admin-form-block acms-admin-clear">名前</label>
        <input type="text" name="name" value="{name}" class="acms-admin-form-large  validator-result-{name:validator#required}" placeholder="" />
        <input type="hidden" name="user[]" value="name" />

        <label class="acms-admin-form-block acms-admin-clear">メールアドレス</label>
        <input type="text" name="mail" value="{mail}" class="acms-admin-form-large  validator-result-{mail:validator#required} validator-result-{mail:validator#email} validator-result-{mail:validator#doubleMail} validator-result-{mail:validator#send}" placeholder="" />
        <input type="hidden" name="user[]" value="mail" />

        <label class="acms-admin-form-block acms-admin-clear">パスワード</label>
        <div class="js-password_strength">
          <input type="password" name="pass" value="{pass}" class="js-input acms-admin-form-large validator-result-{pass:validator#required} validator-result-{pass:validator#password}" autocomplete="off" />
          <input type="hidden" name="user[]" value="pass" />
          <div>
            <div class="js-meter acms-admin-password-strength-meter acms-admin-form-width-full"></div>
          </div>
          <span class="js-label acms-admin-password-strength-label" aria-live="assertive"></span>
        </div>

        <label class="acms-admin-form-block acms-admin-clear">パスワード(確認)</label>
        <input type="password" name="retype_pass" value="{retype_pass}" class="acms-admin-form-large validator-result-{retype_pass:validator#equalTo}" autocomplete="off" />
        <input type="hidden" name="user[]" value="retype_pass" />
      </div>
      <!-- BEGIN passwordPolicyMessage:veil -->
      <p class="acms-admin-text-danger">{passwordPolicyMessage}</p>
      <!-- END passwordPolicyMessage:veil -->
      <!-- BEGIN submit -->
      <p class="loginAction">
        <button type="submit" class="acms-admin-btn-admin acms-admin-btn-admin-primary acms-admin-btn-block acms-admin-btn-large" name="ACMS_POST_Login_Subscribe"><!--T-->読者登録<!--/T--></button>
      </p>
     <!-- END submit -->
    </div>
  <!-- END subscribe -->
</form>
<!-- END_MODULE Login -->

エラー時の表示

Login_Subscribe モジュールで何らかのエラーが起きた場合には以下のフィールド(項目)がバリデーションエラーとして表示されます。



フィールド(項目)名 オプション名 概要
name required ユーザーの名前が入力されていない場合に発生するエラー
mail required ユーザーのメールアドレスが入力されていない場合に発生するエラー
mail email ユーザーのメールアドレスの形式が間違っている場合に発生するエラー
mail doubleMail 入力されたメールアドレスで登録されたユーザーが既に存在する場合に発生するエラー
mail send 読者登録メールの送信に失敗した場合に発生するエラー
pass required ユーザーのパスワードが入力されていない場合に発生するエラー
pass password ユーザーのパスワードがコンフィグで設定したパスワードポリシーに違反している場合に発生するエラー
retype_pass equalTo ユーザーのパスワード(確認用)が入力されたパスワードと一致しない場合に発生するエラー
code regex ユーザーコードが不正な形式である場合に発生するエラー
code doubleCode 入力されたコードで登録されたユーザーが既に存在する場合に発生するエラー
url url ユーザーのURLの形式が間違っている場合に発生するエラー
login isOperable コンフィグ > ログイン設定 > 読者登録機能のユーザー登録の外部申請が無効になっている場合に発生するエラー

自動送信メールで使用できる変数

Login_Subscribe モジュールで送信された自動送信メールでは以下の変数が利用できます。



変数名 概要
uid 作成されたユーザーのユーザーIDです。
name 作成されたユーザーの名前です。
mail 作成されたユーザーのメールアドレスです。
code 作成されたユーザーのユーザーコードです。
url 作成されたユーザーのURLです。
subscribeUrl メールアドレスの有効性認証ための認証URLです。

Login_Tfa_Recovery モジュール【~ Ver. 3.0】

この機能は Ver. 3.1 で廃止されました。新しい会員機能についてのドキュメントは以下をご覧ください。

ログイン・会員機能の基本

Login_Tfa_Recovery モジュールとは、リカバリーコードを活用して2段階認証を無効にするための POST モジュールです。

このページは Login_Tfa_Recovery モジュールについてのドキュメントです。2段階認証の設定方法については以下をご確認ください。


有効なフィールド(項目)

Login_Tfa_Recovery モジュールで有効なフィールド(項目)について説明します。以下のフィールド(項目)が送信できます。

また、Login_Tfa_Recovery モジュールで送信するフィールド(項目)は name 属性に login[] を、 value 属性に 送信したいフィールド(項目)名を指定した input タグを一緒に記述する必要があります。

<input type="password" name="recovery" value="{recovery}"  class="acms-admin-form-large  validator-result-{recovery:validator#auth}" autocomplete="off" />
<input type="hidden" name="login[]" value="recovery" />


フィールド名(項目) 概要 入力例
mail 2段階認証を無効化するユーザーのメールアドレス info@example.com
pass 2段階認証を無効化するユーザーのパスワード password
recovery リカバリコード aaaaaaaa

Login_Tfa_Recovery モジュールのサンプルコード

<!-- BEGIN_MODULE Login -->
<form action="" method="post" enctype="multipart/form-data">
  <!-- BEGIN recovery -->
  <div class="acms-admin-loginBox clearfix">
      <div class="acms-admin-siteImageText">ログイン</div>
      <div class="acms-admin-form">
        <p class="validator-result-{pass:validator#auth} acms-admin-alert acms-admin-alert-danger">ユーザーIDまたはパスワードが違います。</label>
        <p class="validator-result-{recovery:validator#auth} acms-admin-alert acms-admin-alert-danger">正しいリカバリーコードを入力してください。</label>
        <p class="validator-result-{mail:validator#lock} acms-admin-alert acms-admin-alert-danger">{trialNumber}回ログインに失敗したため、アカウントがロックされました。{lockTime}分後にもう一度試してください。</p>

        <label class="acms-admin-form-block acms-admin-clear">ユーザーID / メールアドレス</label>
        <input type="text" name="mail" value="{mail}" class="acms-admin-form-large validator-result-{pass:validator#auth}” id="input-text-mail" placeholder="" />
        <input type="hidden" name="login[]" value="mail" />

        <label class="acms-admin-form-block">パスワード</label>
        <input type="password" name="pass" value="{pass}"  class="acms-admin-form-large  validator-result-{pass:validator#auth}" placeholder="" />
        <input type="hidden" name="login[]" value="pass" />

        <label class="acms-admin-form-block">リカバリーコード</label>
        <input type="password" name="recovery" value="{recovery}"  class="acms-admin-form-large validator-result-{recovery:validator#auth}" placeholder="" />
        <input type="hidden" name="login[]" value="recovery" />
      </div>
      <p class="loginAction">
        <button type="submit" class="acms-admin-btn-admin" name="ACMS_POST_Login_Tfa_Recovery">2段階認証を無効化</button>
      </p>
    </div>
  <!-- END recovery -->
</form>
<!-- END_MODULE Login -->

2段階認証の無効化に成功すると Login モジュールの auth ブロック内で tfaRecovery という変数が利用できます。以下のようにテンプレートを記述することで2段階認証の無効化に成功したことを表示できます。

<!-- BEGIN_IF [{tfaRecovery}/eq/on] -->
<p class="validator-result-0 acms-admin-alert acms-admin-alert-info">2段階認証を無効化しました</p>
<!-- END_IF -->

エラー時の表示

Login_Tfa_Recovery モジュールで何らかのエラーが起きた場合には以下のフィールド(項目)がバリデーションエラーとして表示されます。



フィールド(項目)名 オプション名 概要
pass auth コンフィグ > アクセス設定 > ログイン制限で設定した制限に引っかかった場合に発生するエラー
mail lock コンフィグ > ログイン設定 > アカウントロックで設定した、パスワード認証の再試行制限に引っかかった場合に発生するエラー
recovery auth 間違ったリカバリーコードを送信した場合に発生するエラー

GIF画像をアップロードできない

メディア機能などで、PNGやJPEGはアップロードできるが、GIF画像がアップロードできない現象が起こる場合があります。

これは、画像エンジンに GD を使用していて、WebP画像 をサポートしている場合に、サーバー環境によって、GIF画像からWebP画像が生成できずにエラーが出てしまうためとなります。

対策1: GDではなく、ImageMagick に変更する

対策の1つとして、画像エンジンを GD ではなく、ImageMagick に変更する方法があります。(デフォルトは ImageMagick
private/config.system.yaml に以下の記述をすることで、画像エンジンを GDからImageMagickに変更できます。

image_magick : on

注意点として、サーバー環境によっては、ImageMagickを利用できない環境もあります。利用できない環境では、上記設定をしても画像エンジンは GD のままとなります。

対策2:WebP画像サポートをやめる

もう一つの対策は、WebP画像サポートをやめることです。 private/config.system.yaml に以下記述をすることで、WebP画像の生成をやめることができます。

webp_support: off

エントリーなどの編集作業を行なっても、古い情報が表示される場合がある

キャッシュの影響が考えられます。キャッシュドライバーに「APCu」を選択している場合、サーバー環境によってはPHPプロセス毎にキャッシュが確保されてしまい、古いキャッシュが返ってきてしまう問題を確認しています。たとえば、XSERVERの「Xアクセラレーター Ver. 1」や「Xアクセラレータオフ」 を選択している場合(Xアクセラレーター Ver. 2 は大丈夫です)、この環境となります。

このような環境の場合、「.env」ファイルを修正して「APCu」ドライバーを使わないように修正をお願いします。

# テンプレートのキャッシュをするドライバーを選択します
CACHE_TEMPLATE_DRIVER=file
CACHE_TEMPLATE_NAMESPACE=template
CACHE_TEMPLATE_LIFETIME=2678400

# フィールド情報のキャッシュをするドライバーを選択します
CACHE_FIELD_DRIVER=file
CACHE_FIELD_NAMESPACE=field
CACHE_FIELD_LIFETIME=86400

# 一時キャッシュで利用するドライバーを選択します
CACHE_TEMP_DRIVER=memory
CACHE_TEMP_NAMESPACE=temp
CACHE_TEMP_LIFETIME=10800