После моего комментария:
В RegisterController (App \ Http \ Controllers \ Auth)
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'institution' => $data['institution'],
'password' => 'NOT_SET',
]);
}
Затем создайте промежуточное программное обеспечение (например, php artisan make: middleware Must_have_password)
namespace App\Http\Middleware;
use Closure;
use Auth;
class Must_have_password
{
/**
* Verify if password is set, otherwise redirect to password-set page.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$user = Auth::user();
if ($user && $user->password !== 'NOT_SET') {
return $next($request);
}
else return redirect('/set-password');
}
}
Конечно, вам нужно создать представление настройки пароля и подключить его к маршруту / set-password.Как я сказал в комментарии, вы хотите убедиться, что маршрут / set-password хорошо защищен, потому что вы не хотите, чтобы люди таким образом взламывали учетные записи.Хорошая вещь об этом подходе (с использованием NOT_SET) заключается в том, что люди всегда могут использовать инфраструктуру password_reset для сброса своего пароля, если они не делают этого изначально.
Это немного глупо, но потому что Laravel всегда шифруетпароли, значение не может стать NOT_SET другим способом.В качестве альтернативы, вы можете добавить логическое значение к вашей пользовательской модели (что-то вроде Must_Reset), которое перенаправляет на страницу сброса пароля.
Вы также можете подключить функцию сброса пароля в Laravel, ищите «Один раз».Пароль Laravel '(например, здесь ).