У меня две системы laravel, и обе подключены к одной главной базе данных
1.customer portal-customer.test
2.admin portal - admin.test
Клиентам не разрешен доступ к порталу администрирования.
Но администратор может создавать клиентов из панели администратора.
Клиенты не могут войти в свой профиль, пока не подтвердят свой адрес электронной почты.
В настоящее время, если пользователь создает учетную запись непосредственно через портал для клиентов, пользователь получает электронное письмо с подтверждением, и если он / она нажимает на ссылку в течение 60 минут, учетная запись проверяется и активируется.
ссылка для подтверждения выглядит так:
http://customer.test/email/verify/13/976bdd188ad675ad87c827ca9723fb4a7bda2178?expires=1588242534&signature=cc628ef025eb7cd03fe76093be1e9e3fdfce12f5208c185560d1996b9f662744
Но теперь, когда администратор создает учетную запись пользователя для клиента через панель администратора (admin.test), должен происходить тот же процесс.
Ниже приведена моя функция создания пользователя в контроллере.
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]{8})$/','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'));
event(new Registered($user));
//$user->notify(new SendRegisterMailNotification());
return redirect()->route('customers.index')
->with('success','Customer created successfully. Verification email has been sent to user email. ');
}
Здесь также пользователь успешно создает, электронная почта также отправляется на электронную почту пользователя, НО проблема заключается в базовом URL-адресе ссылки для подтверждения .... он должен быть, customer.test, но он включает admin.test ..... Так что теперь, когда когда-либо пользователь щелкнув по этой ссылке, клиент перейдет по такой ссылке, как,
http://admin.test/email/verify/22/3b7c357f630a62cb2bac0e18a47610c245962182?expires=1588247915&signature=7e6869deb1b6b700dcd2a49b2ec66ae32fb0b6dc99aa0405095e9844962bb53c
Поскольку клиенты не имеют доступа к панели администратора, пользователь получает сообщение 403 запрещено.
Итак, как я могу изменить этот базовый URL ???
event(new Registered($user));
обрабатывает отправку электронной почты один раз при создании пользователя.
Registered
обработчике / слушателе событий. Вам нужно будет добавить URL-адрес в прослушиватель, чтобы отправить электронное письмо. Если я вижу слушателя, я могу предложить решение. - person Etin   schedule 01.05.2020Registered
- может потребоваться создать для этого пользовательское событие - person Christophe Hubert   schedule 01.05.2020