Письмо с подтверждением пользователя не может быть отправлено в laravel - PullRequest
1 голос
/ 16 апреля 2020

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

Но я хочу отправить электронное письмо с информацией об активации учетной записи, как только администратор создал Учетная запись.

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

Но я не могу отправить пользователю сообщение об активации, когда Администратор создает учетную запись ..

Ниже приводится моя модель пользователя

<?php

namespace App;

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Spatie\Permission\Traits\HasRoles;

class User extends Authenticatable implements MustVerifyEmail
{
    use Notifiable;
    use HasRoles;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name','last_name', 'email', 'password','username','mobile','user_roles',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];

    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];
}

И мой пользовательский контроллер (включена только функция хранения), как показано ниже

public function store(Request $request)
    {
        request()->validate([
            'name' => ['required', 'alpha','min:2', 'max:255'],
            'last_name' => ['required', 'alpha','min:2', 'max:255'],
            'email' => ['required','email', 'max:255', 'unique:users'],
            'password' => ['required', 'string', 'min:12', 'confirmed','regex:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{12,}$/'],
            'mobile'=>['required', 'regex:/^\+[0-9]?()[0-9](\s|\S)(\d[0-9]{9})$/','numeric','min:9'],
            'username'=>['required', 'string', 'min:4', 'max:10', 'unique:users'],   
            'roles'=>['required'],
            'user_roles'=>['required'],
        ]);

        //Customer::create($request->all());

        $input = $request->all();
        $input['password'] = Hash::make($input['password']);

        $user = User::create($input);
        $user->assignRole($request->input('roles'));

        return redirect()->route('customers.index')
                        ->with('success','Customer created successfully.');
    }

И в моей сети. php У меня есть это,

Auth::routes(['verify' => true]);

Итак, в настоящее время пользователь успешно создает, но электронное письмо с подтверждением не отправляется.

Как я могу отправить электронное письмо с подтверждением? где мне нужно поменять?

Спасибо.

Ответы [ 2 ]

1 голос
/ 16 апреля 2020

После создания пользователя запустите событие Registered с новым экземпляром пользователя.

event(new Registered($user));
0 голосов
/ 16 апреля 2020

добавьте это перед возвратом

$user->sendEmailVerificationNotification();

это отправит уведомление о подтверждении пользователю

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...