feat: create email verification (#1575)
* feat: create email verification * Change setting toggle to config/phpvms.php * Fix style * Default verification enabled and verify first user * Fix style --------- Co-authored-by: Nabeel S <nabeelio@users.noreply.github.com>
This commit is contained in:
parent
41758ed84a
commit
13fb14a787
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
use App\Models\User;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class() extends Migration {
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::table('users', function (Blueprint $table) {
|
||||
$table->timestamp('email_verified_at')->nullable();
|
||||
});
|
||||
|
||||
User::where('email_verified_at', null)->update(['email_verified_at' => now()]);
|
||||
}
|
||||
};
|
||||
@ -485,4 +485,4 @@
|
||||
value: true
|
||||
options: ''
|
||||
type: boolean
|
||||
description: Send out a discord notification when a user's rank is changed
|
||||
description: Send out a discord notification when a user's rank is changed
|
||||
|
||||
@ -24,7 +24,7 @@ class VerificationController extends Controller
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $redirectTo = '/home';
|
||||
protected $redirectTo = '/dashboard';
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
|
||||
@ -304,12 +304,13 @@ class InstallerController extends Controller
|
||||
* KAUS, for giggles, though.
|
||||
*/
|
||||
$attrs = [
|
||||
'name' => $request->get('name'),
|
||||
'email' => $request->get('email'),
|
||||
'api_key' => Utils::generateApiKey(),
|
||||
'airline_id' => $airline->id,
|
||||
'password' => Hash::make($request->get('password')),
|
||||
'opt_in' => true,
|
||||
'name' => $request->get('name'),
|
||||
'email' => $request->get('email'),
|
||||
'api_key' => Utils::generateApiKey(),
|
||||
'airline_id' => $airline->id,
|
||||
'password' => Hash::make($request->get('password')),
|
||||
'opt_in' => true,
|
||||
'email_verified_at' => now(),
|
||||
];
|
||||
|
||||
$user = $this->userService->createUser($attrs, ['admin']);
|
||||
|
||||
@ -13,6 +13,7 @@ use App\Http\Middleware\TrustProxies;
|
||||
use App\Http\Middleware\UpdatePending;
|
||||
use Illuminate\Auth\Middleware\Authenticate;
|
||||
use Illuminate\Auth\Middleware\Authorize;
|
||||
use Illuminate\Auth\Middleware\EnsureEmailIsVerified;
|
||||
use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse;
|
||||
use Illuminate\Foundation\Http\Kernel as HttpKernel;
|
||||
use Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode;
|
||||
@ -20,6 +21,7 @@ use Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull;
|
||||
use Illuminate\Foundation\Http\Middleware\TrimStrings;
|
||||
use Illuminate\Routing\Middleware\SubstituteBindings;
|
||||
use Illuminate\Routing\Middleware\ThrottleRequests;
|
||||
use Illuminate\Routing\Middleware\ValidateSignature;
|
||||
use Illuminate\Session\Middleware\StartSession;
|
||||
use Illuminate\View\Middleware\ShareErrorsFromSession;
|
||||
|
||||
@ -61,5 +63,7 @@ class Kernel extends HttpKernel
|
||||
'theme' => SetActiveTheme::class,
|
||||
'throttle' => ThrottleRequests::class,
|
||||
'update_pending' => UpdatePending::class,
|
||||
'verified' => EnsureEmailIsVerified::class,
|
||||
'signed' => ValidateSignature::class,
|
||||
];
|
||||
}
|
||||
|
||||
@ -4,6 +4,7 @@ namespace App\Models;
|
||||
|
||||
use App\Models\Enums\JournalType;
|
||||
use App\Models\Traits\JournalTrait;
|
||||
use Illuminate\Contracts\Auth\MustVerifyEmail;
|
||||
use Illuminate\Database\Eloquent\Casts\Attribute;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
@ -62,7 +63,7 @@ use Staudenmeir\EloquentHasManyDeep\HasRelationships;
|
||||
* @mixin \Illuminate\Notifications\Notifiable
|
||||
* @mixin \Laratrust\Traits\HasRolesAndPermissions
|
||||
*/
|
||||
class User extends Authenticatable implements LaratrustUser
|
||||
class User extends Authenticatable implements LaratrustUser, MustVerifyEmail
|
||||
{
|
||||
use HasFactory;
|
||||
use HasRelationships;
|
||||
@ -109,6 +110,7 @@ class User extends Authenticatable implements LaratrustUser
|
||||
'notes',
|
||||
'created_at',
|
||||
'updated_at',
|
||||
'email_verified_at',
|
||||
];
|
||||
|
||||
/**
|
||||
@ -127,18 +129,19 @@ class User extends Authenticatable implements LaratrustUser
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
'id' => 'integer',
|
||||
'pilot_id' => 'integer',
|
||||
'flights' => 'integer',
|
||||
'flight_time' => 'integer',
|
||||
'transfer_time' => 'integer',
|
||||
'balance' => 'double',
|
||||
'state' => 'integer',
|
||||
'status' => 'integer',
|
||||
'toc_accepted' => 'boolean',
|
||||
'opt_in' => 'boolean',
|
||||
'lastlogin_at' => 'datetime',
|
||||
'deleted_at' => 'datetime',
|
||||
'id' => 'integer',
|
||||
'pilot_id' => 'integer',
|
||||
'flights' => 'integer',
|
||||
'flight_time' => 'integer',
|
||||
'transfer_time' => 'integer',
|
||||
'balance' => 'double',
|
||||
'state' => 'integer',
|
||||
'status' => 'integer',
|
||||
'toc_accepted' => 'boolean',
|
||||
'opt_in' => 'boolean',
|
||||
'lastlogin_at' => 'datetime',
|
||||
'deleted_at' => 'datetime',
|
||||
'email_verified_at' => 'datetime',
|
||||
];
|
||||
|
||||
public static $rules = [
|
||||
|
||||
@ -110,7 +110,7 @@ class RouteServiceProvider extends ServiceProvider
|
||||
'namespace' => 'Frontend',
|
||||
'prefix' => '',
|
||||
'as' => 'frontend.',
|
||||
'middleware' => ['auth'],
|
||||
'middleware' => (config('phpvms.registration.email_verification', false) ? ['auth', 'verified'] : ['auth']),
|
||||
], function () {
|
||||
Route::resource('dashboard', 'DashboardController');
|
||||
|
||||
|
||||
@ -119,4 +119,11 @@ return [
|
||||
'load_factor' => '/operations/flights#load-factor',
|
||||
'subfleets' => '/concepts/basics#subfleets-and-aircraft',
|
||||
],
|
||||
|
||||
/*
|
||||
* Enable/disable email verification on registration
|
||||
*/
|
||||
'registration' => [
|
||||
'email_verification' => true,
|
||||
],
|
||||
];
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
@extends('layouts.app')
|
||||
@extends('app')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
|
||||
Loading…
Reference in New Issue
Block a user