Laravel отправляет «создать электронное письмо с паролем» после того, как администратор создал нового пользователя на панели администратора

#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
    }