#php #laravel
#php #ларавель
Вопрос:
У меня есть панель управления администратора. Пользователь не может создать учетную запись пользователя самостоятельно, только администратор имеет на это права. Но он создаст пользователя только с «именем пользователя» и «электронной почтой». Чего я хочу добиться, так это когда он создал нового пользователя, чтобы отправить электронное письмо на адрес электронной почты пользователя с его именем пользователя и кнопкой «email» или ссылкой для создания его пароля. Я пытался найти информацию о настройке функции сброса пароля по умолчанию, но мне это не удалось. Может ли кто-нибудь предложить какой-нибудь более простой подход к этому? Спасибо
Ответ №1:
Я думаю, что это довольно просто, и, на мой взгляд, если вы начнете думать вместо «как настроить существующую функциональность» на «как создать свою собственную функциональность», вы сможете разобраться в этом сами в кратчайшие сроки.
Вы можете сделать это, например, так, что после регистрации пользователя вы можете отправить в регистрационном электронном письме ссылку на «установить мой пароль», и ссылка может выглядеть так 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
}