CakePHP3でパスワード用のハッシュを生成するワンライナー

こんにちは。

CakePHP3でユーザログイン周りを実装していて、初期データを入れたくなりました。
CakePHPでは認証について公式マニュアルが充実しているのですごく便利です。

ここでは一般的な「登録ページは公開」するサイトについての記載がありました。
今回自分のケースではログイン用の初期データを用意する必要があったため、シェル的に取れないかな、ということで試してみました。

ググったところだとコードベースでハッシュ生成をする、というサイトがありました。

CakePHPの認証用のハッシュは環境によってSecuritySaltが違うため、\Cake\Auth\DefaultPasswordHasher()を呼び出すことで生成させます。
これをコンソールから呼び出してみました。

$ export PLAIN=password; \
echo "(new \Cake\Auth\DefaultPasswordHasher())->hash('${PLAIN}');" | bin/cake console
You can exit with `CTRL-C` or `exit`

Psy Shell v0.8.13 (PHP 7.0.23 — cli) by Justin Hileman
>>> (new \Cake\Auth\DefaultPasswordHasher())->hash('password');
=> "$2y$10$NQGTeLeTGwyMKJ7PgklHCeWfKmOOOoA3vwnEInzF2kyiMOQ9AlFXO"
>>>
Exit:  Ctrl+D

という感じで取れました。
便利です!

ワンライナー系で使う場合に、bin/cake consoleは実際に送られたコマンドが表示されるため、シングルクォートなどに間違いがないかなど確認できて便利ですね。
ただ逆にこの出力を他のプログラムにパイプで渡す場合にはサイレントモードが欲しいですね。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする