I’m noob in Laravel and working with Laravel 5. For user registration and and login, I want to use default system of laravel. But, need to extend it with two following features:
- User will get an email just after registration.
- Upon saving of user registration, I need to make an entry in another role table (I’ve used Entrust package for role management)
How to do these things?
Advertisement
Answer
You can modify Laravel 5 default registrar located in app/services
JavaScript
x
<?php namespace AppServices;
use AppUser;
use Validator;
use IlluminateContractsAuthRegistrar as RegistrarContract;
use Mail;
class Registrar implements RegistrarContract {
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return IlluminateContractsValidationValidator
*/
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;
}
}
Inside resources/emails/welcome.blade.php
JavaScript
Hey {{$name}}, Welcome to our website. <br>
Please click <a href="{!! url('/verify', ['code'=>$verification_code]) !!}"> Here</a> to confirm email
NB: You need to create route/controller for verify