Как отправить учетные данные пользователя по электронной почте

В моем EventServiceProvider у меня есть такое событие и слушатель

 protected $listen = [
        'App\Events\UserCreated' => [
            'App\Listeners\SendCredentials'
        ],
    ];

Когда пользователь создается администратором, его пароль генерируется автоматически, поэтому для того, чтобы они могли получить доступ к своей учетной записи, я должен отправить им свои учетные данные по электронной почте.

class UserCreated
{
    use Dispatchable, InteractsWithSockets, SerializesModels;
    public $user;
    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct($user)
    {
        $this->user = $user;
    }

}
class SendCredentials
{
    /**
     * Handle the event.
     *
     * @param  \App\Events\UserCreated  $event
     * @return void
     */
    public function handle(UserCreated $event)
    {
        $user = $event->user;
        Mail::to($user->email)->send(new SendUserMail($user));
    }
}

И вот как я отправляю событие UserCreated

public function createUser(){
        $this->validate();

        $randomPass = Str::random(8);
        $userCreds = ['email' => $this->email, 'password' => $randomPass];

        try{
            $test = User::firstOrCreate([
                'name' => $this->name,
                'email' => $this->email,
                'password' => Hash::make($randomPass),
                'email_verified_at' => Carbon::now(),
                'user_type' => (int)$this->selectedUser,
                'assigned_to' => (int)$this->selectedAssigned,
                'doctor_type' => $this->selectTypeDoc,
            ]);

            // Mail::to($this->email)->send(new SendUserMail($userCreds));
            UserCreated::dispatch($test);

            $this->reset();
            $this->emitUp('refreshParent');
            $this->dispatchBrowserEvent('swal-insert');

        }catch(\Exception $e){
            $this->dispatchBrowserEvent('createUser-error');
        }

        $this->closeModal();

    }

Как я могу отправить пароль в незашифрованном виде в данных электронной почты

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
0
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

когда пользователь создан и пароль хеширован, вы не можете получить пароль в читаемом виде.

В вашей ситуации я бы изменил UserCreated следующим образом:

class UserCreated
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $user;

    public $password;
    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct($user, $password)
    {
        $this->user = $user;
        $this->password = $password;
    }

}

Я бы также подумал об использовании геттеров и сеттеров UserCreated вместо того, чтобы публиковать их.

а ты createUser метод

public function createUser(){
        $this->validate();

        $randomPass = Str::random(8);
        $userCreds = ['email' => $this->email, 'password' => $randomPass];

        try{
            $test = User::firstOrCreate([
                'name' => $this->name,
                'email' => $this->email,
                'password' => Hash::make($randomPass),
                'email_verified_at' => Carbon::now(),
                'user_type' => (int)$this->selectedUser,
                'assigned_to' => (int)$this->selectedAssigned,
                'doctor_type' => $this->selectTypeDoc,
            ]);

            // Mail::to($this->email)->send(new SendUserMail($userCreds));
            UserCreated::dispatch($test, $randomPass);

            $this->reset();
            $this->emitUp('refreshParent');
            $this->dispatchBrowserEvent('swal-insert');

        }catch(\Exception $e){
            $this->dispatchBrowserEvent('createUser-error');
        }

        $this->closeModal();

    }

и SendCredentials

class SendCredentials
{
    /**
     * Handle the event.
     *
     * @param  \App\Events\UserCreated  $event
     * @return void
     */
    public function handle(UserCreated $event)
    {
        Mail::to($user->email)->send(new SendUserMail($event->user, $event->password));
    }
}

Другие вопросы по теме