LoginSignup
1
0

More than 3 years have passed since last update.

Symfony3/Symfony4の認証エラー時のメッセージを変更する

Last updated at Posted at 2018-11-23

概要

Symfonyのデフォルトの機能で認証処理を実装するとエラーメッセージが「資格が無効です。」となりユーザーフレンドリーではないため変更する。
UserAuthenticationProviderクラスでSymfony3までは「Bad credentials.」と返しており、Symfony4では、「Invalid credentials.」と返しているため、これを翻訳している。
ここのメッセージを変更するためだけに独自Providerを作るのはカナリ手間なので翻訳を書き換えて対応する。

環境

  • PHP → 7.1.23
  • symfony/symfony → v3.4.18 / v4.4.0

Configの言語指定の確認

「jp」ではなく「ja」である事に注意

symfony3

app/config/config.yml
parameters:
    # デフォルトだと「en」
    locale: ja

symfony4

%kernel.project_dir%/config/packages/translation.yml
framework:
    default_locale: ja     # デフォルトだと「en」
    translator:
        default_path: '%kernel.project_dir%/translations'
        fallbacks:
            - ja     # デフォルトだと「en」

翻訳の書き換え

Symfony3

app/Resources/translations/messages.ja.yml
# ログインエラー時のメッセージがユーザーフレンドリーではないため
Bad credentials.: "ユーザー名もしくはパスワードが間違っています。"

Symfony4

%kernel.project_dir%/translations/security.ja.yml
# ログインエラー時のメッセージがユーザーフレンドリーではないため
Invalid credentials.: "ユーザー名もしくはパスワードが間違っています。"

エラーメッセージ表示の準備

app/Resources/views/admin/login_sample.html.twig
<body>
    <div class="login-form" >
         <h1>管理画面ログイン</h1>
        {% if error %}
            <div class="alert-danger p-2">
                {{ error.message | trans }}
            </div>
        {% endif %}
        <form action="" method="post" >
            {# ... #}
        </form>
    </div>
</body>
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0