В моем 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();
}
Как я могу отправить пароль в незашифрованном виде в данных электронной почты
когда пользователь создан и пароль хеширован, вы не можете получить пароль в читаемом виде.
В вашей ситуации я бы изменил 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));
}
}