Enabled password resets
This commit is contained in:
parent
2cae5d984c
commit
55fcfa2e4a
40
app/Http/Controllers/Auth/ConfirmPasswordController.php
Normal file
40
app/Http/Controllers/Auth/ConfirmPasswordController.php
Normal file
@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Providers\RouteServiceProvider;
|
||||
use Illuminate\Foundation\Auth\ConfirmsPasswords;
|
||||
|
||||
class ConfirmPasswordController extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Confirm Password Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller is responsible for handling password confirmations and
|
||||
| uses a simple trait to include the behavior. You're free to explore
|
||||
| this trait and override any functions that require customization.
|
||||
|
|
||||
*/
|
||||
|
||||
use ConfirmsPasswords;
|
||||
|
||||
/**
|
||||
* Where to redirect users when the intended url fails.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $redirectTo = RouteServiceProvider::HOME;
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('auth');
|
||||
}
|
||||
}
|
@ -50,7 +50,7 @@ class RegisterController extends Controller
|
||||
protected function validator(array $data)
|
||||
{
|
||||
return Validator::make($data, [
|
||||
'name' => ['required', 'string', 'max:255'],
|
||||
'name' => ['required', 'string', 'min:3', 'max:255'],
|
||||
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
|
||||
'password' => ['required', 'string', 'min:8', 'confirmed'],
|
||||
]);
|
||||
|
@ -7,7 +7,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Foundation\Auth\User as Authenticatable;
|
||||
use Illuminate\Notifications\Notifiable;
|
||||
|
||||
class User extends Authenticatable
|
||||
class User extends Authenticatable implements MustVerifyEmail
|
||||
{
|
||||
use HasFactory, Notifiable;
|
||||
|
||||
|
@ -5,18 +5,6 @@
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
|
||||
<symbol id="check-circle-fill" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z"/>
|
||||
</symbol>
|
||||
<symbol id="info-fill" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zm.93-9.412-1 4.705c-.07.34.029.533.304.533.194 0 .487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703 0-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381 2.29-.287zM8 5.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/>
|
||||
</symbol>
|
||||
<symbol id="exclamation-triangle-fill" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path d="M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5zm.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z"/>
|
||||
</symbol>
|
||||
</svg>
|
||||
|
||||
@if(isset($login_note) AND $login_note)
|
||||
<div class="row">
|
||||
<div class="col-8 m-auto">
|
||||
@ -32,39 +20,6 @@
|
||||
</div>
|
||||
@endisset
|
||||
|
||||
@if (Session::has('error'))
|
||||
<div class="row">
|
||||
<div class="col-8 m-auto">
|
||||
<div class="alert alert-danger alert-dismissible" role="alert">
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||
<h4 class="alert-heading">
|
||||
<svg class="bi flex-shrink-0 me-2" width="24" height="24" role="img" aria-label="Danger:"><use xlink:href="#exclamation-triangle-fill"/></svg>
|
||||
<strong>Whoops!</strong> Some is not right...
|
||||
</h4>
|
||||
{{ Session::get('error') }}</li>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if (count($errors) > 0)
|
||||
<div class="row">
|
||||
<div class="col-8 m-auto">
|
||||
<div class="alert alert-danger" role="alert">
|
||||
<h4 class="alert-heading">
|
||||
<svg class="bi flex-shrink-0 me-2" width="24" height="24" role="img" aria-label="Danger:"><use xlink:href="#exclamation-triangle-fill"/></svg>
|
||||
<strong>Whoops!</strong> Some is not right...
|
||||
</h4>
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="row">
|
||||
<div class="col-6 m-auto">
|
||||
<div class="greyframe titledbox shadow0xb0 text-center">
|
||||
@ -78,10 +33,16 @@
|
||||
<label for="email" class="form-label">Email</label>
|
||||
<div class="input-group has-validation">
|
||||
<span class="input-group-text"><i class="bi bi-person-badge"></i></span>
|
||||
<input type="text" class="form-control" id="email" placeholder="Email" name="email" required>
|
||||
<div class="invalid-feedback">
|
||||
Your email is required.
|
||||
</div>
|
||||
<input type="text" class="form-control @error('email') is-invalid @enderror" id="email" placeholder="Email" name="email" required autocomplete="email" autofocus>
|
||||
@error('email')
|
||||
<span class="invalid-feedback" role="alert">
|
||||
{{ $message }}
|
||||
</span>
|
||||
@else
|
||||
<span class="invalid-feedback">
|
||||
Your email is required.
|
||||
</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -92,9 +53,9 @@
|
||||
<div class="input-group has-validation">
|
||||
<span class="input-group-text"><i class="bi bi-key-fill"></i></span>
|
||||
<input type="password" class="form-control" id="password" placeholder="Password" name="password" required>
|
||||
<div class="invalid-feedback">
|
||||
<span class="invalid-feedback">
|
||||
Your password is required.
|
||||
</div>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
61
resources/views/auth/passwords/email.blade.php
Normal file
61
resources/views/auth/passwords/email.blade.php
Normal file
@ -0,0 +1,61 @@
|
||||
@extends('layouts.auth')
|
||||
|
||||
@section('htmlheader_title')
|
||||
Forgot Password
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
@if (Session('status'))
|
||||
<div class="row">
|
||||
<div class="col-8 m-auto">
|
||||
<div class="alert alert-success" role="alert">
|
||||
{{ session('status') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="row">
|
||||
<div class="col-6 m-auto">
|
||||
<div class="greyframe titledbox shadow0xb0 text-center">
|
||||
<h2 class="cap">Forgot Password</h2>
|
||||
|
||||
<form class="row g-0 needs-validation" method="post" action="{{ route('password.email') }}" novalidate>
|
||||
@csrf
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<label for="email" class="form-label">Email</label>
|
||||
<div class="input-group has-validation">
|
||||
<span class="input-group-text"><i class="bi bi-person-badge"></i></span>
|
||||
<input type="text" class="form-control @error('email') is-invalid @enderror" id="email" placeholder="Email" name="email" value="{{ old('email') }}" autocomplete="email" autofocus required>
|
||||
@error('email')
|
||||
<span class="invalid-feedback" role="alert">
|
||||
{{ $message }}
|
||||
</span>
|
||||
@else
|
||||
<span class="invalid-feedback">
|
||||
Your email is required.
|
||||
</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<a href="{{ url('/') }}" class="btn btn-danger">Cancel</a>
|
||||
<button type="submit" name="submit" class="btn btn-success mr-0 float-end">Reset</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row pt-4">
|
||||
<div class="col-12">
|
||||
<a class="link-danger" href="{{ url('login') }}">Login</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
89
resources/views/auth/passwords/reset.blade.php
Normal file
89
resources/views/auth/passwords/reset.blade.php
Normal file
@ -0,0 +1,89 @@
|
||||
@extends('layouts.auth')
|
||||
|
||||
@section('htmlheader_title')
|
||||
Reset Password
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
@if (Session('status'))
|
||||
<div class="row">
|
||||
<div class="col-8 m-auto">
|
||||
<div class="alert alert-success" role="alert">
|
||||
{{ session('status') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="row">
|
||||
<div class="col-6 m-auto">
|
||||
<div class="greyframe titledbox shadow0xb0 text-center">
|
||||
<h2 class="cap">Reset Password</h2>
|
||||
|
||||
<form class="row g-0 needs-validation" method="post" action="{{ route('password.update') }}" novalidate>
|
||||
@csrf
|
||||
<input type="hidden" name="token" value="{{ $token }}">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<label for="email" class="form-label">Email</label>
|
||||
<div class="input-group has-validation">
|
||||
<span class="input-group-text"><i class="bi bi-person-badge"></i></span>
|
||||
<input type="text" class="form-control @error('email') is-invalid @enderror" id="email" placeholder="Email" name="email" value="{{ $email ?? old('email') }}" required autocomplete="email" autofocus>
|
||||
@error('email')
|
||||
<span class="invalid-feedback" role="alert">
|
||||
{{ $message }}
|
||||
</span>
|
||||
@else
|
||||
<span class="invalid-feedback">
|
||||
Your email is required.
|
||||
</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<label for="password" class="form-label">Password</label>
|
||||
<div class="input-group has-validation">
|
||||
<span class="input-group-text"><i class="bi bi-key-fill"></i></span>
|
||||
<input type="password" class="form-control @error('password') is-invalid @enderror" id="password" placeholder="Password" name="password" required>
|
||||
@error('password')
|
||||
<span class="invalid-feedback" role="alert">
|
||||
{{ $message }}
|
||||
</span>
|
||||
@else
|
||||
<span class="invalid-feedback">
|
||||
Your password is required.
|
||||
</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<label for="password" class="form-label">Password Again</label>
|
||||
<div class="input-group has-validation">
|
||||
<span class="input-group-text"><i class="bi bi-key-fill"></i></span>
|
||||
<input type="password" class="form-control" id="password" placeholder="Password Again" name="password_confirmation" required>
|
||||
<div class="invalid-feedback">
|
||||
Please re-enter your password.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row pb-4">
|
||||
<div class="col-12">
|
||||
<a href="{{ url('/') }}" class="btn btn-danger">Cancel</a>
|
||||
<button type="submit" name="submit" class="btn btn-success mr-0 float-end">Sign In</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
@ -5,112 +5,98 @@
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<div class="col-6 pt-2 pb-2 m-auto bg-blue">
|
||||
<div class="login-logo">
|
||||
<a>{!! config('app.name_html_long') !!}</a>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-6 m-auto">
|
||||
<div class="greyframe titledbox shadow0xb0 text-center">
|
||||
<h2 class="cap">Register</h2>
|
||||
|
||||
@if (count($errors) > 0)
|
||||
<div class="alert alert-danger">
|
||||
<strong>Whoops!</strong> {{ trans('message.someproblems') }}<br><br>
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if (Session::has('error'))
|
||||
<div class="alert alert-danger">
|
||||
<strong>Whoops!</strong> {{ trans('message.someproblems') }}<br><br>
|
||||
<ul>
|
||||
<li>{{ Session::get('error') }}</li>
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<!-- /.login-logo -->
|
||||
<div class="">
|
||||
<div class="xcard-body">
|
||||
<div class="text-light text-center p-3 pb-4"><h4>Register</h4></div>
|
||||
|
||||
<form method="post">
|
||||
<form class="row g-0 needs-validation" method="post" novalidate>
|
||||
{{ csrf_field() }}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-3 text-right">
|
||||
Name:
|
||||
</div>
|
||||
|
||||
<div class="col-8">
|
||||
<div class="input-group mb-3">
|
||||
<input type="text" name="name" class="form-control" placeholder="Name">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-3 text-right">
|
||||
Email:
|
||||
</div>
|
||||
|
||||
<div class="col-8">
|
||||
<div class="input-group mb-3">
|
||||
<input type="email" name="email" class="form-control" placeholder="Email">
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text"><i class="fas fa-envelope fa-fw"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-3 text-right">
|
||||
Password:
|
||||
</div>
|
||||
|
||||
<div class="col-8">
|
||||
<div class="input mb-3">
|
||||
<input type="password" name="password" class="form-control" placeholder="Password">
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text"><i class="fas fa-key fa-fw"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-3 text-right">
|
||||
Password Again:
|
||||
</div>
|
||||
|
||||
<div class="col-8">
|
||||
<div class="input mb-3">
|
||||
<input type="password" name="password_confirmation" class="form-control" placeholder="Password">
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text"><i class="fas fa-key fa-fw"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<!-- /.col -->
|
||||
<div class="col-12">
|
||||
<button type="submit" name="submit" class="btn btn-lg btn-success mr-0 float-right">Register</button>
|
||||
<a href="{{ url('/') }}" class="btn btn-lg btn-primary float-right">Cancel</a>
|
||||
<label for="name" class="form-label">Name</label>
|
||||
<div class="input-group has-validation">
|
||||
<span class="input-group-text"><i class="bi bi-person-square"></i></span>
|
||||
<input type="text" class="form-control @error('name') is-invalid @enderror" id="name" placeholder="Full Name" name="name" required autocomplete="name" autofocus>
|
||||
@error('name')
|
||||
<span class="invalid-feedback" role="alert">
|
||||
{{ $message }}
|
||||
</span>
|
||||
@else
|
||||
<span class="invalid-feedback">
|
||||
Your name is required.
|
||||
</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<label for="email" class="form-label">Email</label>
|
||||
<div class="input-group has-validation">
|
||||
<span class="input-group-text"><i class="bi bi-person-badge"></i></span>
|
||||
<input type="text" class="form-control @error('email') is-invalid @enderror" id="email" placeholder="Email" name="email" required autocomplete="email">
|
||||
@error('email')
|
||||
<span class="invalid-feedback" role="alert">
|
||||
{{ $message }}
|
||||
</span>
|
||||
@else
|
||||
<span class="invalid-feedback">
|
||||
Your email is required.
|
||||
</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<label for="password" class="form-label">Password</label>
|
||||
<div class="input-group has-validation">
|
||||
<span class="input-group-text"><i class="bi bi-key-fill"></i></span>
|
||||
<input type="password" class="form-control @error('password') is-invalid @enderror" id="password" placeholder="Password" name="password" required>
|
||||
@error('password')
|
||||
<span class="invalid-feedback" role="alert">
|
||||
{{ $message }}
|
||||
</span>
|
||||
@else
|
||||
<div class="invalid-feedback">
|
||||
Your password is required.
|
||||
</div>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<label for="password" class="form-label">Password Again</label>
|
||||
<div class="input-group has-validation">
|
||||
<span class="input-group-text"><i class="bi bi-key-fill"></i></span>
|
||||
<input type="password" class="form-control" id="password_confirmation" placeholder="Password Again" name="password_confirmation" required>
|
||||
<div class="invalid-feedback">
|
||||
Please re-enter your password.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<a href="{{ url('/') }}" class="btn btn-danger">Cancel</a>
|
||||
<button type="submit" name="submit" class="btn btn-success mr-0 float-end">Sign In</button>
|
||||
</div>
|
||||
<!-- /.col -->
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<p class="mb-2">
|
||||
<a name="login" href="{{ url('login') }}">Login</a>
|
||||
</p>
|
||||
<div class="row pt-4">
|
||||
<div class="col-12">
|
||||
<a class="link-danger" href="{{ url('login') }}">Login</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /.login-card-body -->
|
||||
</div>
|
||||
</div>
|
||||
<!-- /.login-box -->
|
||||
@endsection
|
37
resources/views/auth/verify.blade.php
Normal file
37
resources/views/auth/verify.blade.php
Normal file
@ -0,0 +1,37 @@
|
||||
@extends('layouts.auth')
|
||||
|
||||
@section('htmlheader_title')
|
||||
Verify your Email
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
@if (Session('resent'))
|
||||
<div class="row">
|
||||
<div class="col-8 m-auto">
|
||||
<div class="alert alert-success alert-dismissible" role="alert">
|
||||
{{ __('A fresh verification link has been sent to your email address.') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="row">
|
||||
<div class="col-6 m-auto">
|
||||
<div class="greyframe titledbox shadow0xb0 text-center">
|
||||
<h2 class="cap">Verify</h2>
|
||||
|
||||
<form class="row" method="post" action="{{ route('verification.resend') }}" novalidate>
|
||||
@csrf
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
{{ __('Before proceeding, please check your email for a verification link.') }}
|
||||
{{ __('If you did not receive the email') }},
|
||||
<button type="submit" class="btn btn-link p-0" style="text-decoration: none;line-height: 1.0;">{{ __('click here to request another') }}</button>.
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
@ -30,16 +30,18 @@ Route::get('logout',[LoginController::class,'logout']);
|
||||
Route::redirect('/','about');
|
||||
Route::view('about','about');
|
||||
|
||||
Route::get('ftn/domain',[DomainController::class,'home']);
|
||||
Route::match(['get','post'],'ftn/domain/addedit/{o?}',[DomainController::class,'add_edit'])
|
||||
->where('o','[0-9]+');
|
||||
Route::middleware(['verified'])->group(function () {
|
||||
Route::get('ftn/domain',[DomainController::class,'home']);
|
||||
Route::match(['get','post'],'ftn/domain/addedit/{o?}',[DomainController::class,'add_edit'])
|
||||
->where('o','[0-9]+');
|
||||
|
||||
Route::get('ftn/node',[NodeController::class,'home']);
|
||||
Route::match(['get','post'],'ftn/node/addedit/{o?}',[NodeController::class,'add_edit'])
|
||||
->where('o','[0-9]+');
|
||||
Route::get('ftn/node',[NodeController::class,'home']);
|
||||
Route::match(['get','post'],'ftn/node/addedit/{o?}',[NodeController::class,'add_edit'])
|
||||
->where('o','[0-9]+');
|
||||
|
||||
Route::get('ftn/zone',[ZoneController::class,'home']);
|
||||
Route::match(['get','post'],'ftn/zone/addedit/{o?}',[ZoneController::class,'add_edit'])
|
||||
->where('o','[0-9]+');
|
||||
Route::get('ftn/zone',[ZoneController::class,'home']);
|
||||
Route::match(['get','post'],'ftn/zone/addedit/{o?}',[ZoneController::class,'add_edit'])
|
||||
->where('o','[0-9]+');
|
||||
|
||||
Route::get('ftn/network/{name}',[HomeController::class,'network']);
|
||||
Route::get('ftn/network/{name}',[HomeController::class,'network']);
|
||||
});
|
Loading…
Reference in New Issue
Block a user