I have these guards and i have created the register/login workflow which works fine, but I also need each one to have an email verification being fired prior to being able to log, which does not seem to be fired or working
I checked the event service and it seems to be working as well
My objective is to create a multi auth system that also fires verification emails to the users who register under each guard, there is no other support therefore I feel like my question will set precedence for others who have the same issue
I have set my email to log and it does not show on laravel's telescope module (log viewer)
These are my routes related to Auth
Auth::routes(['verify' => true]);
/*Start Login and Register Related Events*/
Route::get('/login/lawyers', 'Auth\LoginController@showLawyerloginForm');
Route::get('/login/customers', 'Auth\LoginController@showCustomerLoginForm');
Route::get('/login/admins', 'Auth\LoginController@showAdminloginForm');
Route::get('/register/lawyers', 'Auth\RegisterController@showLawyerRegisterForm');
Route::get('/register/customers', 'Auth\RegisterController@showCustomerRegisterForm');
Route::get('/register/admins', 'Auth\RegisterController@showAdminRegisterForm');
Route::post('/login/lawyers', 'Auth\LoginController@lawyerLogin');
Route::post('/login/customers', 'Auth\LoginController@customerLogin');
Route::post('/login/admins', 'Auth\LoginController@adminLogin');
Route::post('/register/lawyers', 'Auth\RegisterController@createLawyer');
Route::post('/register/customers', 'Auth\RegisterController@createCustomer');
Route::post('/register/admins', 'Auth\RegisterController@createAdmin');
/*End Login and Register Related Events*/
This is an example of my Lawyer Model (Authenticatable)
<?php
namespace App;
use App\Events\LawyerCreated;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Database\Eloquent\SoftDeletes;
class Lawyer extends Authenticatable implements MustVerifyEmail
{
use SoftDeletes;
use Notifiable;
//
protected $dispatchesEvents = [
'created' => LawyerCreated::class
];
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'fname', 'oname', 'lname', 'address', 'email', 'password', 'nic', 'mobile',
];
/**
* The attribute name containing the email address.
*
* @var string
*/
public $gravatarEmail = 'email';
public $profile = 'profile_url';
public function getAvatar()
{
if($this->attributes[$this->profile] != "-"){
return url($this->profile);
}else{
$hash = md5(strtolower(trim($this->attributes[$this->gravatarEmail])));
return "https://www.gravatar.com/avatar/".$hash;
}
}
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
public function firm()
{
# code...
return $this->belongsToMany('App\Firm')->withTimestamps();
}
public function myfiles()
{
# code...
return $this->hasOne('App\File', 'lawyer_id');
}
public function files()
{
# code...
return $this->belongsToMany('App\File')->withTimestamps();
}
public function myfirm()
{
# code...
return $this->hasOne('App\Firm', 'lawyer_id');
}
//
public function mobiles()
{
return $this->morphMany('App\Mobile', 'hasmobile');
}
/**
* The roles that belong to the lawyer.
*/
public function roles()
{
return $this->belongsToMany('App\Role')->withPivot('id');;
}
/**
* Get the comments for the blog post.
*/
public function notifications()
{
return $this->hasMany('App\LawyerNotification');
}
public function cases()
{
# code...
return $this->hasMany('App\CourtCase');
}
public function clients()
{
# code...
return $this->hasMany('App\Customer');
}
public function tasks()
{
return $this->hasMany('App\Task');
}
public function communications()
{
# code...
return $this->hasMany('App\Communication', 'lawyer_id');
}
public function expenses()
{
# code...
return $this->hasMany('App\Expense', 'lawyer_id');
}
public function invoices()
{
# code...
return $this->hasMany('App\Invoice', 'lawyer_id');
}
public function activities()
{
# code...
return $this->hasMany('App\Activity', 'lawyer_id');
}
public function billings()
{
# code...
return $this->hasMany('App\Billing', 'lawyer_id');
}
public function billingpayments()
{
# code...
return $this->hasMany('App\BillingPayment', 'lawyer_id');
}
}
These are from Auth.php
<?php
return [
/*
|--------------------------------------------------------------------------
| Authentication Defaults
|--------------------------------------------------------------------------
|
| This option controls the default authentication "guard" and password
| reset options for your application. You may change these defaults
| as required, but they're a perfect start for most applications.
|
*/
'defaults' => [
'guard' => 'lawyers',
'passwords' => 'users',
],
/*
|--------------------------------------------------------------------------
| Authentication Guards
|--------------------------------------------------------------------------
|
| Next, you may define every authentication guard for your application.
| Of course, a great default configuration has been defined for you
| here which uses session storage and the Eloquent user provider.
|
| All authentication drivers have a user provider. This defines how the
| users are actually retrieved out of your database or other storage
| mechanisms used by this application to persist your user's data.
|
| Supported: "session", "token"
|
*/
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'lawyers' => [
'driver' => 'session',
'provider' => 'lawyers',
],
'customers' => [
'driver' => 'session',
'provider' => 'customers',
],
'admins' => [
'driver' => 'session',
'provider' => 'admins',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
],
via Chebli Mohamed
Aucun commentaire:
Enregistrer un commentaire