From f0096f2e9776b07fab9ce7ecbf844b150f51dfda Mon Sep 17 00:00:00 2001 From: Graphictoria Date: Sat, 7 May 2022 22:37:05 -0400 Subject: [PATCH] Major refactors to the way routes work --- web/app/Http/Controllers/IndexController.php | 19 --- .../Auth/AuthenticatedSessionController.php | 8 +- .../Auth/ConfirmablePasswordController.php | 6 +- .../Auth/DoubleSessionBlockController.php | 8 +- ...mailVerificationNotificationController.php | 4 +- .../EmailVerificationPromptController.php | 4 +- .../{ => Web}/Auth/NewPasswordController.php | 10 +- .../Auth/PasswordResetLinkController.php | 8 +- .../Auth/RegisteredUserController.php | 8 +- .../Auth/UserModerationController.php | 6 +- .../{ => Web}/Auth/VerifyEmailController.php | 4 +- .../Http/Controllers/Web/HomeController.php | 19 +++ web/app/Http/Middleware/Authenticate.php | 2 +- .../Middleware/DoubleSessionProtector.php | 10 +- web/app/Models/User.php | 14 ++ .../ResetPasswordNotification.php | 66 +++++++++ web/app/Providers/RouteServiceProvider.php | 9 +- web/resources/js/components/Feed.js | 36 +++++ web/resources/js/components/Loader.js | 10 ++ web/resources/js/components/Main.js | 3 + web/resources/js/pages/Dashboard.js | 18 +++ .../views/emails/password-reset.blade.php | 12 ++ web/resources/views/layouts/email.blade.php | 42 ++++++ .../{ => web}/auth/confirm-password.blade.php | 2 +- .../{ => web}/auth/ddos_blocked.blade.php | 2 +- .../{ => web}/auth/forgot-password.blade.php | 10 +- .../views/{ => web}/auth/login.blade.php | 12 +- .../views/{ => web}/auth/moderated.blade.php | 0 .../views/{ => web}/auth/register.blade.php | 4 +- .../{ => web}/auth/reset-password.blade.php | 2 +- .../{ => web}/auth/verify-email.blade.php | 0 .../views/{ => web/home}/dashboard.blade.php | 16 +-- .../home/landing.blade.php} | 2 +- web/routes/web.php | 127 +++++++----------- web/webpack.mix.js | 3 +- 35 files changed, 341 insertions(+), 165 deletions(-) delete mode 100644 web/app/Http/Controllers/IndexController.php rename web/app/Http/Controllers/{ => Web}/Auth/AuthenticatedSessionController.php (91%) rename web/app/Http/Controllers/{ => Web}/Auth/ConfirmablePasswordController.php (91%) rename web/app/Http/Controllers/{ => Web}/Auth/DoubleSessionBlockController.php (81%) rename web/app/Http/Controllers/{ => Web}/Auth/EmailVerificationNotificationController.php (94%) rename web/app/Http/Controllers/{ => Web}/Auth/EmailVerificationPromptController.php (93%) rename web/app/Http/Controllers/{ => Web}/Auth/NewPasswordController.php (88%) rename web/app/Http/Controllers/{ => Web}/Auth/PasswordResetLinkController.php (91%) rename web/app/Http/Controllers/{ => Web}/Auth/RegisteredUserController.php (94%) rename web/app/Http/Controllers/{ => Web}/Auth/UserModerationController.php (67%) rename web/app/Http/Controllers/{ => Web}/Auth/VerifyEmailController.php (95%) create mode 100644 web/app/Http/Controllers/Web/HomeController.php create mode 100644 web/app/Notifications/ResetPasswordNotification.php create mode 100644 web/resources/js/components/Feed.js create mode 100644 web/resources/js/components/Loader.js create mode 100644 web/resources/js/pages/Dashboard.js create mode 100644 web/resources/views/emails/password-reset.blade.php create mode 100644 web/resources/views/layouts/email.blade.php rename web/resources/views/{ => web}/auth/confirm-password.blade.php (93%) rename web/resources/views/{ => web}/auth/ddos_blocked.blade.php (95%) rename web/resources/views/{ => web}/auth/forgot-password.blade.php (73%) rename web/resources/views/{ => web}/auth/login.blade.php (73%) rename web/resources/views/{ => web}/auth/moderated.blade.php (100%) rename web/resources/views/{ => web}/auth/register.blade.php (88%) rename web/resources/views/{ => web}/auth/reset-password.blade.php (91%) rename web/resources/views/{ => web}/auth/verify-email.blade.php (100%) rename web/resources/views/{ => web/home}/dashboard.blade.php (82%) rename web/resources/views/{welcome.blade.php => web/home/landing.blade.php} (92%) diff --git a/web/app/Http/Controllers/IndexController.php b/web/app/Http/Controllers/IndexController.php deleted file mode 100644 index 3a072ec..0000000 --- a/web/app/Http/Controllers/IndexController.php +++ /dev/null @@ -1,19 +0,0 @@ -view('auth.ddos_blocked', [], 403); + ->view('web.auth.ddos_blocked', [], 403); } public function store() diff --git a/web/app/Http/Controllers/Auth/EmailVerificationNotificationController.php b/web/app/Http/Controllers/Web/Auth/EmailVerificationNotificationController.php similarity index 94% rename from web/app/Http/Controllers/Auth/EmailVerificationNotificationController.php rename to web/app/Http/Controllers/Web/Auth/EmailVerificationNotificationController.php index 3362dca..7de5f4c 100644 --- a/web/app/Http/Controllers/Auth/EmailVerificationNotificationController.php +++ b/web/app/Http/Controllers/Web/Auth/EmailVerificationNotificationController.php @@ -1,10 +1,10 @@ $request]); + return view('web.auth.reset-password', ['request' => $request]); } /** @@ -57,7 +57,7 @@ class NewPasswordController extends Controller // the application's home authenticated view. If there is an error we can // redirect them back to where they came from with their error message. return $status == Password::PASSWORD_RESET - ? redirect()->route('login')->with('status', __($status)) + ? redirect()->route('auth.login.index')->with('status', __($status)) : back()->withErrors(['status' => __($status)]); } } diff --git a/web/app/Http/Controllers/Auth/PasswordResetLinkController.php b/web/app/Http/Controllers/Web/Auth/PasswordResetLinkController.php similarity index 91% rename from web/app/Http/Controllers/Auth/PasswordResetLinkController.php rename to web/app/Http/Controllers/Web/Auth/PasswordResetLinkController.php index 667ab94..fc10057 100644 --- a/web/app/Http/Controllers/Auth/PasswordResetLinkController.php +++ b/web/app/Http/Controllers/Web/Auth/PasswordResetLinkController.php @@ -1,10 +1,10 @@ expectsJson()) { - return route('login'); + return route('auth.login.index'); } } } diff --git a/web/app/Http/Middleware/DoubleSessionProtector.php b/web/app/Http/Middleware/DoubleSessionProtector.php index afbdf9b..165c57a 100644 --- a/web/app/Http/Middleware/DoubleSessionProtector.php +++ b/web/app/Http/Middleware/DoubleSessionProtector.php @@ -9,9 +9,9 @@ use App\Models\Session; class DoubleSessionProtector { protected function handlePage(Request $request, Closure $next) { - if($request->route()->getName() != 'ddos.bypass' && !$request->isMethod('post')) { + if(!str_starts_with($request->route()->getName(), 'auth.protection')) { return redirect() - ->to(route('ddos.bypass', ['ReturnUrl' => urlencode('/'.$request->path())]), 302); + ->to(route('auth.protection.index', ['ReturnUrl' => url()->full()]), 302); } return $next($request); @@ -39,13 +39,13 @@ class DoubleSessionProtector } } - if($request->route()->getName() == 'ddos.bypass') { + if(str_starts_with($request->route()->getName(), 'auth.protection')) { $returnUrl = $request->input('ReturnUrl'); if(!$returnUrl) - $returnUrl = '/'; + $returnUrl = route('home.landing'); - return redirect('/', 302); + return redirect(route('home.landing'), 302); } return $next($request); diff --git a/web/app/Models/User.php b/web/app/Models/User.php index 282eb9b..87168fa 100644 --- a/web/app/Models/User.php +++ b/web/app/Models/User.php @@ -6,6 +6,7 @@ use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; +use App\Notifications\ResetPasswordNotification; use Laravel\Sanctum\HasApiTokens; class User extends Authenticatable @@ -42,4 +43,17 @@ class User extends Authenticatable 'email_verified_at' => 'datetime', 'next_reward' => 'datetime', ]; + + /** + * Send a password reset notification to the user. + * + * @param string $token + * @return void + */ + public function sendPasswordResetNotification($token) + { + $url = route('auth.password.reset-submit', ['token' => $token]); + + $this->notify(new ResetPasswordNotification($url, $this)); + } } diff --git a/web/app/Notifications/ResetPasswordNotification.php b/web/app/Notifications/ResetPasswordNotification.php new file mode 100644 index 0000000..4d4a5dc --- /dev/null +++ b/web/app/Notifications/ResetPasswordNotification.php @@ -0,0 +1,66 @@ +token = $token; + $this->user = $user; + } + + /** + * Get the notification's delivery channels. + * + * @param mixed $notifiable + * @return array + */ + public function via($notifiable) + { + return ['mail']; + } + + /** + * Get the mail representation of the notification. + * + * @param mixed $notifiable + * @return \Illuminate\Notifications\Messages\MailMessage + */ + public function toMail($notifiable) + { + $title = 'Graphictoria Password Reset'; + + return (new MailMessage) + ->subject($title) + ->view('emails.password-reset', ['title' => $title, 'user' => $this->user->username, 'link' => $this->token]); + } + + /** + * Get the array representation of the notification. + * + * @param mixed $notifiable + * @return array + */ + public function toArray($notifiable) + { + return [ + // + ]; + } +} diff --git a/web/app/Providers/RouteServiceProvider.php b/web/app/Providers/RouteServiceProvider.php index 5ddb67e..0a7894c 100644 --- a/web/app/Providers/RouteServiceProvider.php +++ b/web/app/Providers/RouteServiceProvider.php @@ -36,6 +36,7 @@ class RouteServiceProvider extends ServiceProvider // Route::domain(DomainHelper::TopLevelDomain()) ->middleware('web') + ->namespace('App\Http\Controllers\Web') ->group(base_path('routes/web.php')); // @@ -43,13 +44,15 @@ class RouteServiceProvider extends ServiceProvider // Route::domain('www.' . DomainHelper::TopLevelDomain()) ->middleware('web') + ->namespace('App\Http\Controllers\Web') ->group(base_path('routes/web.php')); // // Domain: api.gtoria.net // Route::domain('api.' . DomainHelper::TopLevelDomain()) - ->middleware('api') + ->middleware('web') + ->namespace('App\Http\Controllers\Api') ->group(base_path('routes/api.php')); }); } @@ -61,8 +64,6 @@ class RouteServiceProvider extends ServiceProvider */ protected function configureRateLimiting() { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); + // } } diff --git a/web/resources/js/components/Feed.js b/web/resources/js/components/Feed.js new file mode 100644 index 0000000..8750046 --- /dev/null +++ b/web/resources/js/components/Feed.js @@ -0,0 +1,36 @@ +// © XlXi 2021 +// Graphictoria 5 + +import { useState, useRef } from 'react'; + +import Loader from './Loader'; + +const Feed = () => { + const inputRef = useRef(); + const submitRef = useRef(); + const feedRef = useRef(); + const [feedLoaded, setFeedLoaded] = useState(false); + + return ( + <> +

My Feed

+
+
+ + +
+
+
+ { + feedLoaded ? + +

feed

+ : + + } +
+ + ); +}; + +export default Feed; \ No newline at end of file diff --git a/web/resources/js/components/Loader.js b/web/resources/js/components/Loader.js new file mode 100644 index 0000000..3118470 --- /dev/null +++ b/web/resources/js/components/Loader.js @@ -0,0 +1,10 @@ +// © XlXi 2021 +// Graphictoria 5 + +const Loader = () => { + return ( +
+ ); +}; + +export default Loader; \ No newline at end of file diff --git a/web/resources/js/components/Main.js b/web/resources/js/components/Main.js index 1a43dba..b8fb9d4 100644 --- a/web/resources/js/components/Main.js +++ b/web/resources/js/components/Main.js @@ -1,3 +1,6 @@ +// © XlXi 2021 +// Graphictoria 5 + import $ from 'jquery'; import * as Bootstrap from 'bootstrap'; diff --git a/web/resources/js/pages/Dashboard.js b/web/resources/js/pages/Dashboard.js new file mode 100644 index 0000000..9862ba5 --- /dev/null +++ b/web/resources/js/pages/Dashboard.js @@ -0,0 +1,18 @@ +// © XlXi 2021 +// Graphictoria 5 + +import $ from 'jquery'; +import * as Bootstrap from 'bootstrap'; + +import React from 'react'; +import { render } from 'react-dom'; + +import Feed from '../Components/Feed'; + +const feedId = 'gt-dash-feed'; + +$(document).ready(function() { + if (document.getElementById(feedId)) { + render(, document.getElementById(feedId)); + } +}); \ No newline at end of file diff --git a/web/resources/views/emails/password-reset.blade.php b/web/resources/views/emails/password-reset.blade.php new file mode 100644 index 0000000..92d43ef --- /dev/null +++ b/web/resources/views/emails/password-reset.blade.php @@ -0,0 +1,12 @@ +@extends('layouts.email') + +@section('title', 'Graphictoria Password Reset') + +@section('content') +

Hello, {{ $user }}!

+

We've received your password reset request. Simply just click the button below to change your password.

+Reset Password +

+ If you did not submit this request, you can ignore this email. +

+@endsection \ No newline at end of file diff --git a/web/resources/views/layouts/email.blade.php b/web/resources/views/layouts/email.blade.php new file mode 100644 index 0000000..497a685 --- /dev/null +++ b/web/resources/views/layouts/email.blade.php @@ -0,0 +1,42 @@ +@php + $slogan = (View::hasSection('description') ? View::getSection('description') . ' ' : '') . 'Graphictoria is an online social platform for those looking to relive the classic Roblox experience. So what are you waiting for? Join 8k+ other users in reliving the good ol\' days! Graphictoria is not affiliated with or sponsored by Roblox Corporation, all Roblox related indica and slogans belong to Roblox Corporation.'; + + $cssDriver = Storage::createLocalDriver(['root' => $_SERVER['DOCUMENT_ROOT'] . '/css']); +@endphp + + + Graphictoria{{ View::hasSection('title') ? ' | ' . View::getSection('title') : '' }} + + + + +
+ @env(['local', 'staging']) +

This is a test message.

+ @endenv +
+

{{ $title }}

+
+
+ @yield('content') +
+
+

Copyright © {{ \Carbon\Carbon::now()->format('Y') }} Graphictoria. All rights reserved.

+
+

Graphictoria is not affiliated with, endorsed by, or sponsored by Roblox Corporation.

+
+ + \ No newline at end of file diff --git a/web/resources/views/auth/confirm-password.blade.php b/web/resources/views/web/auth/confirm-password.blade.php similarity index 93% rename from web/resources/views/auth/confirm-password.blade.php rename to web/resources/views/web/auth/confirm-password.blade.php index 466593a..d4e0791 100644 --- a/web/resources/views/auth/confirm-password.blade.php +++ b/web/resources/views/web/auth/confirm-password.blade.php @@ -13,7 +13,7 @@ -
+ @csrf diff --git a/web/resources/views/auth/ddos_blocked.blade.php b/web/resources/views/web/auth/ddos_blocked.blade.php similarity index 95% rename from web/resources/views/auth/ddos_blocked.blade.php rename to web/resources/views/web/auth/ddos_blocked.blade.php index f4882a3..10dc66f 100644 --- a/web/resources/views/auth/ddos_blocked.blade.php +++ b/web/resources/views/web/auth/ddos_blocked.blade.php @@ -29,7 +29,7 @@ @endif - + @csrf diff --git a/web/resources/views/auth/forgot-password.blade.php b/web/resources/views/web/auth/forgot-password.blade.php similarity index 73% rename from web/resources/views/auth/forgot-password.blade.php rename to web/resources/views/web/auth/forgot-password.blade.php index b7e247d..1218425 100644 --- a/web/resources/views/auth/forgot-password.blade.php +++ b/web/resources/views/web/auth/forgot-password.blade.php @@ -22,15 +22,21 @@ @endif + @if(session('status')) +
+
{{ session('status') }}
+
+ @endif +
Forgot your password? No problem!

Enter the email address associated with your account and we'll send you a reset link.

- + @csrf @foreach($fields as $field => $label) ($errors->first($field) != null)]) placeholder="{{ $label }}" name="{{ $field }}" :value="old($field)" /> @endforeach - Back  + Back 
diff --git a/web/resources/views/auth/login.blade.php b/web/resources/views/web/auth/login.blade.php similarity index 73% rename from web/resources/views/auth/login.blade.php rename to web/resources/views/web/auth/login.blade.php index d077599..fe0328b 100644 --- a/web/resources/views/auth/login.blade.php +++ b/web/resources/views/web/auth/login.blade.php @@ -24,7 +24,13 @@ @endif -
+ @if(session('status')) +
+
{{ session('status') }}
+
+ @endif + + @csrf @foreach($fields as $field => $label) ($errors->first($field) != null)]) placeholder="{{ $label }}" name="{{ $field }}" :value="old($field)" /> @@ -38,11 +44,11 @@
- Forgot your password? + Forgot your password?
New to Graphictoria?
-

Creating an account takes less than a minute, and you can join a community of 10k+ users for completely free.
Sign Up

+

Creating an account takes less than a minute, and you can join a community of 10k+ users for completely free.
Sign Up

diff --git a/web/resources/views/auth/moderated.blade.php b/web/resources/views/web/auth/moderated.blade.php similarity index 100% rename from web/resources/views/auth/moderated.blade.php rename to web/resources/views/web/auth/moderated.blade.php diff --git a/web/resources/views/auth/register.blade.php b/web/resources/views/web/auth/register.blade.php similarity index 88% rename from web/resources/views/auth/register.blade.php rename to web/resources/views/web/auth/register.blade.php index 0a9d71d..f805fb9 100644 --- a/web/resources/views/auth/register.blade.php +++ b/web/resources/views/web/auth/register.blade.php @@ -30,14 +30,14 @@ @endif -
+ @csrf @foreach($fields as $field => $label) ($errors->first($field) != null)]) placeholder="{{ $label }}" name="{{ $field }}" :value="old($field)" /> @endforeach
- Already have an account? + Already have an account?

By creating an account, you agree to our Terms of Service and our Privacy Policy.

diff --git a/web/resources/views/auth/reset-password.blade.php b/web/resources/views/web/auth/reset-password.blade.php similarity index 91% rename from web/resources/views/auth/reset-password.blade.php rename to web/resources/views/web/auth/reset-password.blade.php index 49f5846..372a19d 100644 --- a/web/resources/views/auth/reset-password.blade.php +++ b/web/resources/views/web/auth/reset-password.blade.php @@ -23,7 +23,7 @@ @endif -
+ @csrf @foreach($fields as $field => $label) diff --git a/web/resources/views/auth/verify-email.blade.php b/web/resources/views/web/auth/verify-email.blade.php similarity index 100% rename from web/resources/views/auth/verify-email.blade.php rename to web/resources/views/web/auth/verify-email.blade.php diff --git a/web/resources/views/dashboard.blade.php b/web/resources/views/web/home/dashboard.blade.php similarity index 82% rename from web/resources/views/dashboard.blade.php rename to web/resources/views/web/home/dashboard.blade.php index 85d7ddb..26f8e65 100644 --- a/web/resources/views/dashboard.blade.php +++ b/web/resources/views/web/home/dashboard.blade.php @@ -2,6 +2,10 @@ @section('title', 'Dashboard') +@section('page-specific') + +@endsection + @section('content')

Hello, {{ Auth::user()->username }}!

@@ -9,7 +13,6 @@
-

"abcd"

@@ -39,16 +42,7 @@ -

My Feed

-
-
- - -
-
-
- -
+
diff --git a/web/resources/views/welcome.blade.php b/web/resources/views/web/home/landing.blade.php similarity index 92% rename from web/resources/views/welcome.blade.php rename to web/resources/views/web/home/landing.blade.php index 28adbb4..28adb52 100644 --- a/web/resources/views/welcome.blade.php +++ b/web/resources/views/web/home/landing.blade.php @@ -9,7 +9,7 @@
Graphictoria aims to revive the classic Roblox experience. Join 9k+ other users and relive your childhood!

* Graphictoria is not affiliated with, endorsed by, or sponsored by Roblox Corporation.

- Create your account + Create your account
diff --git a/web/routes/web.php b/web/routes/web.php index 84d988b..1cc88cf 100644 --- a/web/routes/web.php +++ b/web/routes/web.php @@ -1,86 +1,53 @@ middleware(['guest'])->name('welcome'); - -Route::get('my/dashboard', function () { - return view('dashboard'); -})->middleware(['auth'])->name('dashboard'); - -Route::get('request-blocked', [DoubleSessionBlockController::class, 'create']) - ->name('ddos.bypass'); -Route::post('request-blocked', [DoubleSessionBlockController::class, 'store']); - -Route::get('moderation-notice', [UserModerationController::class, 'create']) - ->middleware(['banned']) - ->name('moderation.notice'); - -Route::middleware('guest')->group(function () { - Route::get('register', [RegisteredUserController::class, 'create']) - ->name('register'); - - Route::post('register', [RegisteredUserController::class, 'store']); - - Route::get('login', [AuthenticatedSessionController::class, 'create']) - ->name('login'); - - Route::post('login', [AuthenticatedSessionController::class, 'store']); - - Route::get('forgot-password', [PasswordResetLinkController::class, 'create']) - ->name('password.request'); - - Route::post('forgot-password', [PasswordResetLinkController::class, 'store']) - ->name('password.email'); - - Route::get('reset-password/{token}', [NewPasswordController::class, 'create']) - ->name('password.reset'); - - Route::post('reset-password', [NewPasswordController::class, 'store']) - ->name('password.update'); +Route::group(['as' => 'home.'], function() { + Route::get('/', 'HomeController@landing')->name('landing')->middleware('guest'); + Route::get('/my/dashboard', 'HomeController@dashboard')->name('dashboard')->middleware('auth'); }); -Route::middleware('auth')->group(function () { - Route::get('verify-email', [EmailVerificationPromptController::class, '__invoke']) - ->name('verification.notice'); +Route::group(['as' => 'auth.', 'namespace' => 'Auth'], function() { + Route::group(['as' => 'protection.', 'prefix' => 'request-blocked'], function() { + Route::get('/', 'DoubleSessionBlockController@index')->name('index'); + Route::post('/', 'DoubleSessionBlockController@store')->name('bypass'); + }); + + Route::get('/moderation-notice', 'UserModerationController@index')->middleware(['auth', 'banned'])->name('moderation.notice'); - Route::get('verify-email/{id}/{hash}', [VerifyEmailController::class, '__invoke']) - ->middleware(['signed', 'throttle:6,1']) - ->name('verification.verify'); + Route::middleware('guest')->group(function () { + Route::group(['as' => 'register.', 'prefix' => 'register'], function() { + Route::get('/', 'RegisteredUserController@index')->name('index'); + Route::post('/', 'RegisteredUserController@store')->name('submit'); + }); + + Route::group(['as' => 'login.', 'prefix' => 'login'], function() { + Route::get('/', 'AuthenticatedSessionController@index')->name('index'); + Route::post('/', 'AuthenticatedSessionController@store')->name('submit'); + }); + + Route::group(['as' => 'password.', 'prefix' => 'forgot-password'], function() { + Route::get('/', 'PasswordResetLinkController@index')->name('forgot'); + Route::post('/', 'PasswordResetLinkController@store')->name('forgot-submit'); + }); + + Route::group(['as' => 'password.', 'prefix' => 'reset-password'], function() { + Route::get('/{token}', 'NewPasswordController@index')->name('reset'); + Route::post('/{token}', 'NewPasswordController@store')->name('reset-submit'); + }); + }); + + Route::middleware('auth')->group(function () { + Route::group(['as' => 'verify-email.', 'prefix' => 'verify-email'], function() { + Route::get('/', 'EmailVerificationPromptController@__invoke')->name('index'); + Route::post('/', 'EmailVerificationNotificationController@store')->middleware('throttle:6,1')->name('submit'); + Route::get('/{hash}', 'VerifyEmailController@__invoke')->middleware(['signed', 'throttle:6,1'])->name('verify'); + }); + - Route::post('email/verification-notification', [EmailVerificationNotificationController::class, 'store']) - ->middleware('throttle:6,1') - ->name('verification.send'); - - Route::get('confirm-password', [ConfirmablePasswordController::class, 'show']) - ->name('password.confirm'); - - Route::post('confirm-password', [ConfirmablePasswordController::class, 'store']); - - Route::get('logout', [AuthenticatedSessionController::class, 'destroy']) - ->name('logout'); -}); + Route::group(['as' => 'password.', 'prefix' => 'confirm-password'], function() { + Route::get('/', 'ConfirmablePasswordController@index')->name('confirm'); + Route::post('/', 'ConfirmablePasswordController@store')->name('confirm-submit'); + }); + + Route::get('/logout', 'AuthenticatedSessionController@destroy')->name('logout'); + }); +}); \ No newline at end of file diff --git a/web/webpack.mix.js b/web/webpack.mix.js index 032399e..7792940 100644 --- a/web/webpack.mix.js +++ b/web/webpack.mix.js @@ -13,7 +13,8 @@ require('laravel-mix-banner'); */ mix.js('resources/js/app.js', 'public/js') - .js('resources/js/pages/maintenance.js', 'public/js/pages') + .js('resources/js/pages/maintenance.js', 'public/js') + .js('resources/js/pages/dashboard.js', 'public/js') .react() .sass('resources/sass/graphictoria.scss', 'public/css') .banner({