web-dev-qa-db-ja.com

すべてのユーザーが一度ログインする方法は?

すべてのユーザーに1回限りのログインを送信したいので、drush uliを使用して、次のようなリンクを取得しています。

http://html/user/reset/1/1509979615/VBPx_FMfKeJUEt1moVcsSQGUMX_tFUSYEdEfRlmq7eA

したがって、ユーザー5が1回のログインを使用したい場合、これはユーザー1のみに使用されますよね?基本的には、すべてのユーザーに対して一度のログインを設定します。

このURLをDrupal 8で渡すにはどうすればよいですか?

忘れたパスワードメールでこれを使用する方法を知りたいだけです。

3
Panda

drush

特定のユーザーの1回限りのログインを取得するには、次の構文を使用します。

_drush uli <user>
_

ここで、_<user>_はuid(_5_など)、ユーザー名、またはユーザーのメールアドレスのいずれかです。

複数のユーザーまたはすべてのユーザーのワンタイムログインURLを取得するには、ループでdrushを実行する必要があります。

_for uid in $(drush sqlq "SELECT uid FROM users"); do drush uli $uid; done
_

構文のヘルプを表示するには、_drush help uli_を実行します。

_http://html_の部分を修正するには、_-l http://example.com_パラメータを追加するか、設定ファイルで_$base_url_を設定します。

カスタムコード

Drupalを使用して電子メールで1回限りのログインを送信することに興味がある場合は、カスタムコードで user_pass_reset_url() 関数を使用できます。

ユーザーがログインしてパスワードをリセットするための一意のURLを生成します。

Contribモジュール

または 1回のログイン モジュールを使用します(D8の場合、これを確認してください issue )。

1回のログインは、1回限りのログインリンクをユーザーに電子メールで送信する機能を提供します。

5
kenorb

すべてのユーザーに常にワンタイムログインリンク経由でのログインを強制したい場合は、 passwordless モジュールを使用できます。

Settings.phpファイルに$ base_urlを設定すると、Drushのユーザーログインコマンドにより、出力に正しいURLが生成されます。次に、簡単なスクリプトを記述して、各ユーザーに独自のログインリンクをメールで送信します。

ユーザーにパスワードリセットリンクをメールで送信するDrushコマンドはありませんが、もちろんDrupalはパスワードのリクエストページでこれを行います。ユーザーモジュールをガイドとして使用して、すべてのユーザーを一括リセットする単純なモジュールまたはDrushコマンド。

3
greg_1_anderson

Drushバージョン> 9では、

drush uli --name=USERNAME

通知reset/{UID}/がリセットしようとしたユーザーのIDである必要がある後の数字を見てください

あなたの場合user/reset/1/は明らかに使用済みのパスワードをリセットします。

したがって、すべてのユーザーに対して実行する場合は、ターミナルで次のコマンドを実行します。

for name in $(drush sqlq "SELECT name FROM users"); do drush uli --name=$name; done
2
Yusef