Я ноб в Laravel и работаю с Laravel 5. Для регистрации пользователя и входа в систему я хочу использовать стандартную систему laravel. Но нужно расширить его двумя следующими функциями:
Как это сделать?
Вы можете изменить регистратор Laravel 5 по умолчанию, расположенный в приложении / службах
<?php namespace App\Services; use App\User; use Validator; use Illuminate\Contracts\Auth\Registrar as RegistrarContract; use Mail; class Registrar implements RegistrarContract { /** * Get a validator for an incoming registration request. * * @param array $data * @return \Illuminate\Contracts\Validation\Validator */ public function validator(array $data) { return Validator::make($data, [ 'name' => 'required|max:255', 'email' => 'required|email|max:255|unique:users', 'password' => 'required|confirmed|min:6' ]); } /** * Create a new user instance after a valid registration. * * @param array $data * @return User */ public function create(array $data) { $user = User::create([ 'name' => $data['name'], 'email' => $data['email'], 'password' => \Hash::make($data['password']), //generates a random string that is 20 characters long 'verification_code' => str_random(20) ]); //do your role stuffs here //send verification mail to user //--------------------------------------------------------- $data['verification_code'] = $user->verification_code; Mail::send('emails.welcome', $data, function($message) use ($data) { $message->from('no-reply@site.com', "Site name"); $message->subject("Welcome to site name"); $message->to($data['email']); }); return $user; } }
Внутри resources/emails/welcome.blade.php
Hey {{$name}}, Welcome to our website. <br> Please click <a href="{!! url('/verify', ['code'=>$verification_code]) !!}"> Here</a> to confirm email
NB: вам необходимо создать маршрут / контроллер для проверки
Laravel имеет пустой метод с именем, зарегистрированным в признаке Illuminate \ Foundation \ Auth \ RegistersUsers, чтобы упростить эту операцию, просто переопределив его следующим образом:
Сначала добавьте новое уведомление:
<?php namespace App\Notifications; use Illuminate\Notifications\Messages\MailMessage; use Illuminate\Notifications\Notification; class UserRegisteredNotification extends Notification { public function __construct($user) { $this->user = $user; } public function via($notifiable) { return ['mail']; } public function toMail($notifiable) { return (new MailMessage) ->success() ->subject('Welcome') ->line('Dear ' . $this->user->name . ', we are happy to see you here.') ->action('Go to site', url('/')) ->line('Please tell your friends about us.'); } }
Добавьте эту строку использования в свой регистр RegisterController.php:
use App\Notifications\UserRegisteredNotification;
и добавьте этот метод:
protected function registered(Request $request, $user) { $user->notify(new UserRegisteredNotification($user)); }
Вы сделали.
Вы знаете, как настроить регистратора, чтобы пользователь мог подтвердить электронную почту перед входом в систему.
Я думаю о добавлении подтвержденного & подтвержденного_кода в таблицу пользователей и отправить их после регистрации.
Но есть ли какое-либо другое решение, которое построит аутентификацию laravel 5? ???