23 changed files with 2212 additions and 2 deletions
@ -0,0 +1,39 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace App\Http\Controllers\Auth; |
||||
|
|
||||
|
use App\Http\Controllers\Controller; |
||||
|
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 = '/home'; |
||||
|
|
||||
|
/** |
||||
|
* Create a new controller instance. |
||||
|
* |
||||
|
* @return void |
||||
|
*/ |
||||
|
public function __construct() |
||||
|
{ |
||||
|
$this->middleware('auth'); |
||||
|
} |
||||
|
} |
@ -0,0 +1,22 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace App\Http\Controllers\Auth; |
||||
|
|
||||
|
use App\Http\Controllers\Controller; |
||||
|
use Illuminate\Foundation\Auth\SendsPasswordResetEmails; |
||||
|
|
||||
|
class ForgotPasswordController extends Controller |
||||
|
{ |
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| Password Reset Controller |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
| This controller is responsible for handling password reset emails and |
||||
|
| includes a trait which assists in sending these notifications from |
||||
|
| your application to your users. Feel free to explore this trait. |
||||
|
| |
||||
|
*/ |
||||
|
|
||||
|
use SendsPasswordResetEmails; |
||||
|
} |
@ -0,0 +1,40 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace App\Http\Controllers\Auth; |
||||
|
|
||||
|
use App\Http\Controllers\Controller; |
||||
|
use Illuminate\Foundation\Auth\AuthenticatesUsers; |
||||
|
|
||||
|
class LoginController extends Controller |
||||
|
{ |
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| Login Controller |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
| This controller handles authenticating users for the application and |
||||
|
| redirecting them to your home screen. The controller uses a trait |
||||
|
| to conveniently provide its functionality to your applications. |
||||
|
| |
||||
|
*/ |
||||
|
|
||||
|
use AuthenticatesUsers; |
||||
|
|
||||
|
/** |
||||
|
* Where to redirect users after login. |
||||
|
* |
||||
|
* @var string |
||||
|
*/ |
||||
|
protected $redirectTo = '/home'; |
||||
|
|
||||
|
/** |
||||
|
* Create a new controller instance. |
||||
|
* |
||||
|
* @return void |
||||
|
*/ |
||||
|
public function __construct() |
||||
|
{ |
||||
|
$this->middleware('guest')->except('logout'); |
||||
|
$this->middleware('auth')->only('logout'); |
||||
|
} |
||||
|
} |
@ -0,0 +1,72 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace App\Http\Controllers\Auth; |
||||
|
|
||||
|
use App\Http\Controllers\Controller; |
||||
|
use App\Models\User; |
||||
|
use Illuminate\Foundation\Auth\RegistersUsers; |
||||
|
use Illuminate\Support\Facades\Hash; |
||||
|
use Illuminate\Support\Facades\Validator; |
||||
|
|
||||
|
class RegisterController extends Controller |
||||
|
{ |
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| Register Controller |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
| This controller handles the registration of new users as well as their |
||||
|
| validation and creation. By default this controller uses a trait to |
||||
|
| provide this functionality without requiring any additional code. |
||||
|
| |
||||
|
*/ |
||||
|
|
||||
|
use RegistersUsers; |
||||
|
|
||||
|
/** |
||||
|
* Where to redirect users after registration. |
||||
|
* |
||||
|
* @var string |
||||
|
*/ |
||||
|
protected $redirectTo = '/home'; |
||||
|
|
||||
|
/** |
||||
|
* Create a new controller instance. |
||||
|
* |
||||
|
* @return void |
||||
|
*/ |
||||
|
public function __construct() |
||||
|
{ |
||||
|
$this->middleware('guest'); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get a validator for an incoming registration request. |
||||
|
* |
||||
|
* @param array $data |
||||
|
* @return \Illuminate\Contracts\Validation\Validator |
||||
|
*/ |
||||
|
protected function validator(array $data) |
||||
|
{ |
||||
|
return Validator::make($data, [ |
||||
|
'name' => ['required', 'string', 'max:255'], |
||||
|
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], |
||||
|
'password' => ['required', 'string', 'min:8', 'confirmed'], |
||||
|
]); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Create a new user instance after a valid registration. |
||||
|
* |
||||
|
* @param array $data |
||||
|
* @return \App\Models\User |
||||
|
*/ |
||||
|
protected function create(array $data) |
||||
|
{ |
||||
|
return User::create([ |
||||
|
'name' => $data['name'], |
||||
|
'email' => $data['email'], |
||||
|
'password' => Hash::make($data['password']), |
||||
|
]); |
||||
|
} |
||||
|
} |
@ -0,0 +1,29 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace App\Http\Controllers\Auth; |
||||
|
|
||||
|
use App\Http\Controllers\Controller; |
||||
|
use Illuminate\Foundation\Auth\ResetsPasswords; |
||||
|
|
||||
|
class ResetPasswordController extends Controller |
||||
|
{ |
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| Password Reset Controller |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
| This controller is responsible for handling password reset requests |
||||
|
| and uses a simple trait to include this behavior. You're free to |
||||
|
| explore this trait and override any methods you wish to tweak. |
||||
|
| |
||||
|
*/ |
||||
|
|
||||
|
use ResetsPasswords; |
||||
|
|
||||
|
/** |
||||
|
* Where to redirect users after resetting their password. |
||||
|
* |
||||
|
* @var string |
||||
|
*/ |
||||
|
protected $redirectTo = '/home'; |
||||
|
} |
@ -0,0 +1,41 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace App\Http\Controllers\Auth; |
||||
|
|
||||
|
use App\Http\Controllers\Controller; |
||||
|
use Illuminate\Foundation\Auth\VerifiesEmails; |
||||
|
|
||||
|
class VerificationController extends Controller |
||||
|
{ |
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| Email Verification Controller |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
| This controller is responsible for handling email verification for any |
||||
|
| user that recently registered with the application. Emails may also |
||||
|
| be re-sent if the user didn't receive the original email message. |
||||
|
| |
||||
|
*/ |
||||
|
|
||||
|
use VerifiesEmails; |
||||
|
|
||||
|
/** |
||||
|
* Where to redirect users after verification. |
||||
|
* |
||||
|
* @var string |
||||
|
*/ |
||||
|
protected $redirectTo = '/home'; |
||||
|
|
||||
|
/** |
||||
|
* Create a new controller instance. |
||||
|
* |
||||
|
* @return void |
||||
|
*/ |
||||
|
public function __construct() |
||||
|
{ |
||||
|
$this->middleware('auth'); |
||||
|
$this->middleware('signed')->only('verify'); |
||||
|
$this->middleware('throttle:6,1')->only('verify', 'resend'); |
||||
|
} |
||||
|
} |
@ -0,0 +1,28 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace App\Http\Controllers; |
||||
|
|
||||
|
use Illuminate\Http\Request; |
||||
|
|
||||
|
class HomeController extends Controller |
||||
|
{ |
||||
|
/** |
||||
|
* Create a new controller instance. |
||||
|
* |
||||
|
* @return void |
||||
|
*/ |
||||
|
public function __construct() |
||||
|
{ |
||||
|
$this->middleware('auth'); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Show the application dashboard. |
||||
|
* |
||||
|
* @return \Illuminate\Contracts\Support\Renderable |
||||
|
*/ |
||||
|
public function index() |
||||
|
{ |
||||
|
return view('home'); |
||||
|
} |
||||
|
} |
@ -0,0 +1,32 @@ |
|||||
|
<?php |
||||
|
|
||||
|
use Illuminate\Database\Migrations\Migration; |
||||
|
use Illuminate\Database\Schema\Blueprint; |
||||
|
use Illuminate\Support\Facades\Schema; |
||||
|
|
||||
|
return new class extends Migration |
||||
|
{ |
||||
|
/** |
||||
|
* Run the migrations. |
||||
|
* |
||||
|
* @return void |
||||
|
*/ |
||||
|
public function up() |
||||
|
{ |
||||
|
Schema::create('password_resets', function (Blueprint $table) { |
||||
|
$table->string('email')->index(); |
||||
|
$table->string('token'); |
||||
|
$table->timestamp('created_at')->nullable(); |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Reverse the migrations. |
||||
|
* |
||||
|
* @return void |
||||
|
*/ |
||||
|
public function down() |
||||
|
{ |
||||
|
Schema::dropIfExists('password_resets'); |
||||
|
} |
||||
|
}; |
File diff suppressed because it is too large
@ -0,0 +1,7 @@ |
|||||
|
// Body |
||||
|
$body-bg: #f8fafc; |
||||
|
|
||||
|
// Typography |
||||
|
$font-family-sans-serif: 'Nunito', sans-serif; |
||||
|
$font-size-base: 0.9rem; |
||||
|
$line-height-base: 1.6; |
@ -0,0 +1,8 @@ |
|||||
|
// Fonts |
||||
|
@import url('https://fonts.bunny.net/css?family=Nunito'); |
||||
|
|
||||
|
// Variables |
||||
|
@import 'variables'; |
||||
|
|
||||
|
// Bootstrap |
||||
|
@import 'bootstrap/scss/bootstrap'; |
@ -0,0 +1,73 @@ |
|||||
|
@extends('layouts.app') |
||||
|
|
||||
|
@section('content') |
||||
|
<div class="container"> |
||||
|
<div class="row justify-content-center"> |
||||
|
<div class="col-md-8"> |
||||
|
<div class="card"> |
||||
|
<div class="card-header">{{ __('Login') }}</div> |
||||
|
|
||||
|
<div class="card-body"> |
||||
|
<form method="POST" action="{{ route('login') }}"> |
||||
|
@csrf |
||||
|
|
||||
|
<div class="row mb-3"> |
||||
|
<label for="email" class="col-md-4 col-form-label text-md-end">{{ __('Email Address') }}</label> |
||||
|
|
||||
|
<div class="col-md-6"> |
||||
|
<input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email" autofocus> |
||||
|
|
||||
|
@error('email') |
||||
|
<span class="invalid-feedback" role="alert"> |
||||
|
<strong>{{ $message }}</strong> |
||||
|
</span> |
||||
|
@enderror |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="row mb-3"> |
||||
|
<label for="password" class="col-md-4 col-form-label text-md-end">{{ __('Password') }}</label> |
||||
|
|
||||
|
<div class="col-md-6"> |
||||
|
<input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="current-password"> |
||||
|
|
||||
|
@error('password') |
||||
|
<span class="invalid-feedback" role="alert"> |
||||
|
<strong>{{ $message }}</strong> |
||||
|
</span> |
||||
|
@enderror |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="row mb-3"> |
||||
|
<div class="col-md-6 offset-md-4"> |
||||
|
<div class="form-check"> |
||||
|
<input class="form-check-input" type="checkbox" name="remember" id="remember" {{ old('remember') ? 'checked' : '' }}> |
||||
|
|
||||
|
<label class="form-check-label" for="remember"> |
||||
|
{{ __('Remember Me') }} |
||||
|
</label> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="row mb-0"> |
||||
|
<div class="col-md-8 offset-md-4"> |
||||
|
<button type="submit" class="btn btn-primary"> |
||||
|
{{ __('Login') }} |
||||
|
</button> |
||||
|
|
||||
|
@if (Route::has('password.request')) |
||||
|
<a class="btn btn-link" href="{{ route('password.request') }}"> |
||||
|
{{ __('Forgot Your Password?') }} |
||||
|
</a> |
||||
|
@endif |
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
@endsection |
@ -0,0 +1,49 @@ |
|||||
|
@extends('layouts.app') |
||||
|
|
||||
|
@section('content') |
||||
|
<div class="container"> |
||||
|
<div class="row justify-content-center"> |
||||
|
<div class="col-md-8"> |
||||
|
<div class="card"> |
||||
|
<div class="card-header">{{ __('Confirm Password') }}</div> |
||||
|
|
||||
|
<div class="card-body"> |
||||
|
{{ __('Please confirm your password before continuing.') }} |
||||
|
|
||||
|
<form method="POST" action="{{ route('password.confirm') }}"> |
||||
|
@csrf |
||||
|
|
||||
|
<div class="row mb-3"> |
||||
|
<label for="password" class="col-md-4 col-form-label text-md-end">{{ __('Password') }}</label> |
||||
|
|
||||
|
<div class="col-md-6"> |
||||
|
<input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="current-password"> |
||||
|
|
||||
|
@error('password') |
||||
|
<span class="invalid-feedback" role="alert"> |
||||
|
<strong>{{ $message }}</strong> |
||||
|
</span> |
||||
|
@enderror |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="row mb-0"> |
||||
|
<div class="col-md-8 offset-md-4"> |
||||
|
<button type="submit" class="btn btn-primary"> |
||||
|
{{ __('Confirm Password') }} |
||||
|
</button> |
||||
|
|
||||
|
@if (Route::has('password.request')) |
||||
|
<a class="btn btn-link" href="{{ route('password.request') }}"> |
||||
|
{{ __('Forgot Your Password?') }} |
||||
|
</a> |
||||
|
@endif |
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
@endsection |
@ -0,0 +1,47 @@ |
|||||
|
@extends('layouts.app') |
||||
|
|
||||
|
@section('content') |
||||
|
<div class="container"> |
||||
|
<div class="row justify-content-center"> |
||||
|
<div class="col-md-8"> |
||||
|
<div class="card"> |
||||
|
<div class="card-header">{{ __('Reset Password') }}</div> |
||||
|
|
||||
|
<div class="card-body"> |
||||
|
@if (session('status')) |
||||
|
<div class="alert alert-success" role="alert"> |
||||
|
{{ session('status') }} |
||||
|
</div> |
||||
|
@endif |
||||
|
|
||||
|
<form method="POST" action="{{ route('password.email') }}"> |
||||
|
@csrf |
||||
|
|
||||
|
<div class="row mb-3"> |
||||
|
<label for="email" class="col-md-4 col-form-label text-md-end">{{ __('Email Address') }}</label> |
||||
|
|
||||
|
<div class="col-md-6"> |
||||
|
<input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email" autofocus> |
||||
|
|
||||
|
@error('email') |
||||
|
<span class="invalid-feedback" role="alert"> |
||||
|
<strong>{{ $message }}</strong> |
||||
|
</span> |
||||
|
@enderror |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="row mb-0"> |
||||
|
<div class="col-md-6 offset-md-4"> |
||||
|
<button type="submit" class="btn btn-primary"> |
||||
|
{{ __('Send Password Reset Link') }} |
||||
|
</button> |
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
@endsection |
@ -0,0 +1,65 @@ |
|||||
|
@extends('layouts.app') |
||||
|
|
||||
|
@section('content') |
||||
|
<div class="container"> |
||||
|
<div class="row justify-content-center"> |
||||
|
<div class="col-md-8"> |
||||
|
<div class="card"> |
||||
|
<div class="card-header">{{ __('Reset Password') }}</div> |
||||
|
|
||||
|
<div class="card-body"> |
||||
|
<form method="POST" action="{{ route('password.update') }}"> |
||||
|
@csrf |
||||
|
|
||||
|
<input type="hidden" name="token" value="{{ $token }}"> |
||||
|
|
||||
|
<div class="row mb-3"> |
||||
|
<label for="email" class="col-md-4 col-form-label text-md-end">{{ __('Email Address') }}</label> |
||||
|
|
||||
|
<div class="col-md-6"> |
||||
|
<input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ $email ?? old('email') }}" required autocomplete="email" autofocus> |
||||
|
|
||||
|
@error('email') |
||||
|
<span class="invalid-feedback" role="alert"> |
||||
|
<strong>{{ $message }}</strong> |
||||
|
</span> |
||||
|
@enderror |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="row mb-3"> |
||||
|
<label for="password" class="col-md-4 col-form-label text-md-end">{{ __('Password') }}</label> |
||||
|
|
||||
|
<div class="col-md-6"> |
||||
|
<input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="new-password"> |
||||
|
|
||||
|
@error('password') |
||||
|
<span class="invalid-feedback" role="alert"> |
||||
|
<strong>{{ $message }}</strong> |
||||
|
</span> |
||||
|
@enderror |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="row mb-3"> |
||||
|
<label for="password-confirm" class="col-md-4 col-form-label text-md-end">{{ __('Confirm Password') }}</label> |
||||
|
|
||||
|
<div class="col-md-6"> |
||||
|
<input id="password-confirm" type="password" class="form-control" name="password_confirmation" required autocomplete="new-password"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="row mb-0"> |
||||
|
<div class="col-md-6 offset-md-4"> |
||||
|
<button type="submit" class="btn btn-primary"> |
||||
|
{{ __('Reset Password') }} |
||||
|
</button> |
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
@endsection |
@ -0,0 +1,77 @@ |
|||||
|
@extends('layouts.app') |
||||
|
|
||||
|
@section('content') |
||||
|
<div class="container"> |
||||
|
<div class="row justify-content-center"> |
||||
|
<div class="col-md-8"> |
||||
|
<div class="card"> |
||||
|
<div class="card-header">{{ __('Register') }}</div> |
||||
|
|
||||
|
<div class="card-body"> |
||||
|
<form method="POST" action="{{ route('register') }}"> |
||||
|
@csrf |
||||
|
|
||||
|
<div class="row mb-3"> |
||||
|
<label for="name" class="col-md-4 col-form-label text-md-end">{{ __('Name') }}</label> |
||||
|
|
||||
|
<div class="col-md-6"> |
||||
|
<input id="name" type="text" class="form-control @error('name') is-invalid @enderror" name="name" value="{{ old('name') }}" required autocomplete="name" autofocus> |
||||
|
|
||||
|
@error('name') |
||||
|
<span class="invalid-feedback" role="alert"> |
||||
|
<strong>{{ $message }}</strong> |
||||
|
</span> |
||||
|
@enderror |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="row mb-3"> |
||||
|
<label for="email" class="col-md-4 col-form-label text-md-end">{{ __('Email Address') }}</label> |
||||
|
|
||||
|
<div class="col-md-6"> |
||||
|
<input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email"> |
||||
|
|
||||
|
@error('email') |
||||
|
<span class="invalid-feedback" role="alert"> |
||||
|
<strong>{{ $message }}</strong> |
||||
|
</span> |
||||
|
@enderror |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="row mb-3"> |
||||
|
<label for="password" class="col-md-4 col-form-label text-md-end">{{ __('Password') }}</label> |
||||
|
|
||||
|
<div class="col-md-6"> |
||||
|
<input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="new-password"> |
||||
|
|
||||
|
@error('password') |
||||
|
<span class="invalid-feedback" role="alert"> |
||||
|
<strong>{{ $message }}</strong> |
||||
|
</span> |
||||
|
@enderror |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="row mb-3"> |
||||
|
<label for="password-confirm" class="col-md-4 col-form-label text-md-end">{{ __('Confirm Password') }}</label> |
||||
|
|
||||
|
<div class="col-md-6"> |
||||
|
<input id="password-confirm" type="password" class="form-control" name="password_confirmation" required autocomplete="new-password"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="row mb-0"> |
||||
|
<div class="col-md-6 offset-md-4"> |
||||
|
<button type="submit" class="btn btn-primary"> |
||||
|
{{ __('Register') }} |
||||
|
</button> |
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
@endsection |
@ -0,0 +1,28 @@ |
|||||
|
@extends('layouts.app') |
||||
|
|
||||
|
@section('content') |
||||
|
<div class="container"> |
||||
|
<div class="row justify-content-center"> |
||||
|
<div class="col-md-8"> |
||||
|
<div class="card"> |
||||
|
<div class="card-header">{{ __('Verify Your Email Address') }}</div> |
||||
|
|
||||
|
<div class="card-body"> |
||||
|
@if (session('resent')) |
||||
|
<div class="alert alert-success" role="alert"> |
||||
|
{{ __('A fresh verification link has been sent to your email address.') }} |
||||
|
</div> |
||||
|
@endif |
||||
|
|
||||
|
{{ __('Before proceeding, please check your email for a verification link.') }} |
||||
|
{{ __('If you did not receive the email') }}, |
||||
|
<form class="d-inline" method="POST" action="{{ route('verification.resend') }}"> |
||||
|
@csrf |
||||
|
<button type="submit" class="btn btn-link p-0 m-0 align-baseline">{{ __('click here to request another') }}</button>. |
||||
|
</form> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
@endsection |
@ -0,0 +1,23 @@ |
|||||
|
@extends('layouts.app') |
||||
|
|
||||
|
@section('content') |
||||
|
<div class="container"> |
||||
|
<div class="row justify-content-center"> |
||||
|
<div class="col-md-8"> |
||||
|
<div class="card"> |
||||
|
<div class="card-header">{{ __('Dashboard') }}</div> |
||||
|
|
||||
|
<div class="card-body"> |
||||
|
@if (session('status')) |
||||
|
<div class="alert alert-success" role="alert"> |
||||
|
{{ session('status') }} |
||||
|
</div> |
||||
|
@endif |
||||
|
|
||||
|
{{ __('You are logged in!') }} |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
@endsection |
@ -0,0 +1,80 @@ |
|||||
|
<!doctype html> |
||||
|
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> |
||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1"> |
||||
|
|
||||
|
<!-- CSRF Token --> |
||||
|
<meta name="csrf-token" content="{{ csrf_token() }}"> |
||||
|
|
||||
|
<title>{{ config('app.name', 'Laravel') }}</title> |
||||
|
|
||||
|
<!-- Fonts --> |
||||
|
<link rel="dns-prefetch" href="//fonts.bunny.net"> |
||||
|
<link href="https://fonts.bunny.net/css?family=Nunito" rel="stylesheet"> |
||||
|
|
||||
|
<!-- Scripts --> |
||||
|
@vite(['resources/sass/app.scss', 'resources/js/app.js']) |
||||
|
</head> |
||||
|
<body> |
||||
|
<div id="app"> |
||||
|
<nav class="navbar navbar-expand-md navbar-light bg-white shadow-sm"> |
||||
|
<div class="container"> |
||||
|
<a class="navbar-brand" href="{{ url('/') }}"> |
||||
|
{{ config('app.name', 'Laravel') }} |
||||
|
</a> |
||||
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="{{ __('Toggle navigation') }}"> |
||||
|
<span class="navbar-toggler-icon"></span> |
||||
|
</button> |
||||
|
|
||||
|
<div class="collapse navbar-collapse" id="navbarSupportedContent"> |
||||
|
<!-- Left Side Of Navbar --> |
||||
|
<ul class="navbar-nav me-auto"> |
||||
|
|
||||
|
</ul> |
||||
|
|
||||
|
<!-- Right Side Of Navbar --> |
||||
|
<ul class="navbar-nav ms-auto"> |
||||
|
<!-- Authentication Links --> |
||||
|
@guest |
||||
|
@if (Route::has('login')) |
||||
|
<li class="nav-item"> |
||||
|
<a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a> |
||||
|
</li> |
||||
|
@endif |
||||
|
|
||||
|
@if (Route::has('register')) |
||||
|
<li class="nav-item"> |
||||
|
<a class="nav-link" href="{{ route('register') }}">{{ __('Register') }}</a> |
||||
|
</li> |
||||
|
@endif |
||||
|
@else |
||||
|
<li class="nav-item dropdown"> |
||||
|
<a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre> |
||||
|
{{ Auth::user()->name }} |
||||
|
</a> |
||||
|
|
||||
|
<div class="dropdown-menu dropdown-menu-end" aria-labelledby="navbarDropdown"> |
||||
|
<a class="dropdown-item" href="{{ route('logout') }}" |
||||
|
onclick="event.preventDefault(); |
||||
|
document.getElementById('logout-form').submit();"> |
||||
|
{{ __('Logout') }} |
||||
|
</a> |
||||
|
|
||||
|
<form id="logout-form" action="{{ route('logout') }}" method="POST" class="d-none"> |
||||
|
@csrf |
||||
|
</form> |
||||
|
</div> |
||||
|
</li> |
||||
|
@endguest |
||||
|
</ul> |
||||
|
</div> |
||||
|
</div> |
||||
|
</nav> |
||||
|
|
||||
|
<main class="py-4"> |
||||
|
@yield('content') |
||||
|
</main> |
||||
|
</div> |
||||
|
</body> |
||||
|
</html> |
Loading…
Reference in new issue