【发布时间】:2021-03-05 13:59:54
【问题描述】:
我有一个管理仪表板。用户不能自己创建用户帐户,只有管理员有权这样做。但他只会创建一个带有“用户名”和“电子邮件”的用户。我想要实现的是当他创建一个新用户以使用他的“用户名”和“电子邮件”+按钮或链接向用户电子邮件地址发送电子邮件以创建他的密码时。我试图搜索有关自定义默认重置密码功能的信息,但失败了。有人可以为此提供一些更简单的方法吗?谢谢
【问题讨论】:
我有一个管理仪表板。用户不能自己创建用户帐户,只有管理员有权这样做。但他只会创建一个带有“用户名”和“电子邮件”的用户。我想要实现的是当他创建一个新用户以使用他的“用户名”和“电子邮件”+按钮或链接向用户电子邮件地址发送电子邮件以创建他的密码时。我试图搜索有关自定义默认重置密码功能的信息,但失败了。有人可以为此提供一些更简单的方法吗?谢谢
【问题讨论】:
我认为这很容易,而且在我看来,如果您开始考虑“如何自定义现有功能”而不是“如何创建自己的功能”,那么您很快就会自己弄清楚。
您可以这样做,例如,在注册用户后,您可以在注册电子邮件中发送“设置我的密码”链接,该链接可能类似于https://example.com/user/finish-registration?hash=sadfjasdnfdaisfnsduff
//migration
Schema::create($table, function() => {
$table->string("set_password_hash");
$table->string("username");
});
//signup method
public function signUpUser(Request $request) {
$user = new User();
$user->username = $request->input("username");
$user->email = $request->input("email");
$user->set_password_hash = Hash::make(20); //or some random hash generator
//set as empty string
$user->password = "";
$user->save();
$signupMail = new SignupMail($user);
$signupMail->send();
}
public function setPasswordView(Request $request) {
$user = User::where("set_password_hash", $request->input("hash"))->first();
if($user) {
if($user->password === "") {
//display a form for the user to create his own password
return view("user.setPassword");
} else {
//the password has already been set
}
}
//fail or something
}
【讨论】: