Major refactors to the way routes work
This commit is contained in:
parent
a5d1d2f55b
commit
f0096f2e97
|
|
@ -1,19 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class IndexController extends Controller
|
||||
{
|
||||
/**
|
||||
* Handle the incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function __invoke(Request $request)
|
||||
{
|
||||
return view('welcome');
|
||||
}
|
||||
}
|
||||
|
|
@ -1,13 +1,13 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
namespace App\Http\Controllers\Web\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Auth\LoginRequest;
|
||||
use App\Providers\RouteServiceProvider;
|
||||
use App\Models\Session;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
class AuthenticatedSessionController extends Controller
|
||||
{
|
||||
|
|
@ -16,9 +16,9 @@ class AuthenticatedSessionController extends Controller
|
|||
*
|
||||
* @return \Illuminate\View\View
|
||||
*/
|
||||
public function create()
|
||||
public function index()
|
||||
{
|
||||
return view('auth.login');
|
||||
return view('web.auth.login');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1,12 +1,12 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
namespace App\Http\Controllers\Web\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Providers\RouteServiceProvider;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
class ConfirmablePasswordController extends Controller
|
||||
{
|
||||
|
|
@ -17,7 +17,7 @@ class ConfirmablePasswordController extends Controller
|
|||
*/
|
||||
public function show()
|
||||
{
|
||||
return view('auth.confirm-password');
|
||||
return view('web.auth.confirm-password');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1,17 +1,17 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
namespace App\Http\Controllers\Web\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Session;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
class DoubleSessionBlockController extends Controller
|
||||
{
|
||||
public function create()
|
||||
public function index()
|
||||
{
|
||||
return response()
|
||||
->view('auth.ddos_blocked', [], 403);
|
||||
->view('web.auth.ddos_blocked', [], 403);
|
||||
}
|
||||
|
||||
public function store()
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
namespace App\Http\Controllers\Web\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Providers\RouteServiceProvider;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
class EmailVerificationNotificationController extends Controller
|
||||
{
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
namespace App\Http\Controllers\Web\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Providers\RouteServiceProvider;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
class EmailVerificationPromptController extends Controller
|
||||
{
|
||||
|
|
@ -1,14 +1,14 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
namespace App\Http\Controllers\Web\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Auth\Events\PasswordReset;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Illuminate\Support\Facades\Password;
|
||||
use Illuminate\Support\Str;
|
||||
use Illuminate\Validation\Rules;
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
class NewPasswordController extends Controller
|
||||
{
|
||||
|
|
@ -18,9 +18,9 @@ class NewPasswordController extends Controller
|
|||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\View\View
|
||||
*/
|
||||
public function create(Request $request)
|
||||
public function index(Request $request)
|
||||
{
|
||||
return view('auth.reset-password', ['request' => $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)]);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
namespace App\Http\Controllers\Web\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Password;
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
class PasswordResetLinkController extends Controller
|
||||
{
|
||||
|
|
@ -13,9 +13,9 @@ class PasswordResetLinkController extends Controller
|
|||
*
|
||||
* @return \Illuminate\View\View
|
||||
*/
|
||||
public function create()
|
||||
public function index()
|
||||
{
|
||||
return view('auth.forgot-password');
|
||||
return view('web.auth.forgot-password');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1,8 +1,7 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
namespace App\Http\Controllers\Web\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\User;
|
||||
use App\Providers\RouteServiceProvider;
|
||||
use Illuminate\Auth\Events\Registered;
|
||||
|
|
@ -11,6 +10,7 @@ use Illuminate\Support\Facades\Auth;
|
|||
use Illuminate\Support\Facades\Hash;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Illuminate\Validation\Rules;
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
class RegisteredUserController extends Controller
|
||||
{
|
||||
|
|
@ -19,9 +19,9 @@ class RegisteredUserController extends Controller
|
|||
*
|
||||
* @return \Illuminate\View\View
|
||||
*/
|
||||
public function create()
|
||||
public function index()
|
||||
{
|
||||
return view('auth.register');
|
||||
return view('web.auth.register');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1,14 +1,14 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
namespace App\Http\Controllers\Web\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
class UserModerationController extends Controller
|
||||
{
|
||||
public function create()
|
||||
{
|
||||
return view('auth.moderated');
|
||||
return view('web.auth.moderated');
|
||||
}
|
||||
}
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
namespace App\Http\Controllers\Web\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Providers\RouteServiceProvider;
|
||||
use Illuminate\Auth\Events\Verified;
|
||||
use Illuminate\Foundation\Auth\EmailVerificationRequest;
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
class VerifyEmailController extends Controller
|
||||
{
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Web;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
class HomeController extends Controller
|
||||
{
|
||||
public function landing()
|
||||
{
|
||||
return view('web.home.landing');
|
||||
}
|
||||
|
||||
public function dashboard()
|
||||
{
|
||||
return view('web.home.dashboard');
|
||||
}
|
||||
}
|
||||
|
|
@ -15,7 +15,7 @@ class Authenticate extends Middleware
|
|||
protected function redirectTo($request)
|
||||
{
|
||||
if (! $request->expectsJson()) {
|
||||
return route('login');
|
||||
return route('auth.login.index');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,66 @@
|
|||
<?php
|
||||
|
||||
namespace App\Notifications;
|
||||
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Notifications\Messages\MailMessage;
|
||||
use Illuminate\Notifications\Notification;
|
||||
|
||||
class ResetPasswordNotification extends Notification
|
||||
{
|
||||
use Queueable;
|
||||
|
||||
protected $token;
|
||||
protected $user;
|
||||
|
||||
/**
|
||||
* Create a new notification instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($token, $user)
|
||||
{
|
||||
$this->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 [
|
||||
//
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -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());
|
||||
});
|
||||
//
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 (
|
||||
<>
|
||||
<h4>My Feed</h4>
|
||||
<div className="card mb-2">
|
||||
<div className="input-group p-2">
|
||||
<input ref={ inputRef } type="text" className="form-control" placeholder="What are you up to?" />
|
||||
<button ref={ submitRef } className="btn btn-secondary" type="submit">Share</button>
|
||||
</div>
|
||||
</div>
|
||||
<div ref={ feedRef } className="d-flex">
|
||||
{
|
||||
feedLoaded ?
|
||||
|
||||
<h1>feed</h1>
|
||||
:
|
||||
<Loader />
|
||||
}
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default Feed;
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
// © XlXi 2021
|
||||
// Graphictoria 5
|
||||
|
||||
const Loader = () => {
|
||||
return (
|
||||
<div className="gtoria-loader"><div></div><div></div><div></div><div></div></div>
|
||||
);
|
||||
};
|
||||
|
||||
export default Loader;
|
||||
|
|
@ -1,3 +1,6 @@
|
|||
// © XlXi 2021
|
||||
// Graphictoria 5
|
||||
|
||||
import $ from 'jquery';
|
||||
import * as Bootstrap from 'bootstrap';
|
||||
|
||||
|
|
|
|||
|
|
@ -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(<Feed />, document.getElementById(feedId));
|
||||
}
|
||||
});
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
@extends('layouts.email')
|
||||
|
||||
@section('title', 'Graphictoria Password Reset')
|
||||
|
||||
@section('content')
|
||||
<h4>Hello, <b>{{ $user }}</b>!</h4>
|
||||
<p>We've received your password reset request. Simply just click the button below to change your password.</p>
|
||||
<a class="btn btn-primary mt-2" href="{{ $link }}">Reset Password</a>
|
||||
<p class="mt-3" style="color:#ff0000;">
|
||||
If you did not submit this request, you can ignore this email.
|
||||
</p>
|
||||
@endsection
|
||||
|
|
@ -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
|
||||
<html class="gtoria-light" lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
||||
<head>
|
||||
<title>Graphictoria{{ View::hasSection('title') ? ' | ' . View::getSection('title') : '' }}</title>
|
||||
|
||||
<style>
|
||||
{{ $cssDriver->get('Graphictoria.css') }}
|
||||
|
||||
html, body {
|
||||
background-color: #fff!important;
|
||||
}
|
||||
|
||||
.emailCard {
|
||||
background-color: #b5e0ff;
|
||||
margin: 10px;
|
||||
text-align: center;
|
||||
padding: 10px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="gtoria-root">
|
||||
@env(['local', 'staging'])
|
||||
<h1 style="color:#ff0000;">This is a test message.</h1>
|
||||
@endenv
|
||||
<div class="card shadow-sm emailCard">
|
||||
<h3 class="my-auto">{{ $title }}</h3>
|
||||
</div>
|
||||
<div class="container text-center p-3">
|
||||
@yield('content')
|
||||
</div>
|
||||
<div class="card shadow-sm emailCard mt-auto">
|
||||
<p class="fw-light m-0">Copyright © {{ \Carbon\Carbon::now()->format('Y') }} Graphictoria. All rights reserved.</p>
|
||||
</div>
|
||||
<p class="text-muted text-center fw-light mt-0 mb-2">Graphictoria is not affiliated with, endorsed by, or sponsored by Roblox Corporation.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
<!-- Validation Errors -->
|
||||
<x-auth-validation-errors class="mb-4" :errors="$errors" />
|
||||
|
||||
<form method="POST" action="{{ route('password.confirm') }}">
|
||||
<form method="POST" action="{{ route('auth.password.confirm-submit') }}">
|
||||
@csrf
|
||||
|
||||
<!-- Password -->
|
||||
|
|
@ -29,7 +29,7 @@
|
|||
</div>
|
||||
@endif
|
||||
|
||||
<form method="POST" action="{{ route('ddos.bypass') }}">
|
||||
<form method="POST" action="{{ route('auth.protection.bypass') }}">
|
||||
@csrf
|
||||
|
||||
<input type="hidden" name="ReturnUrl" value="{{ request()->input('ReturnUrl') }}" />
|
||||
|
|
@ -22,15 +22,21 @@
|
|||
</div>
|
||||
@endif
|
||||
|
||||
@if(session('status'))
|
||||
<div class="px-3 mb-10">
|
||||
<div class="alert alert-success graphictoria-alert graphictoria-error-popup">{{ session('status') }}</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<h5 class="m-0">Forgot your password? No problem!</h5>
|
||||
<p class="mb-3">Enter the email address associated with your account and we'll send you a reset link.</p>
|
||||
|
||||
<form method="POST" action="{{ route('password.email') }}">
|
||||
<form method="POST" action="{{ route('auth.password.forgot-submit') }}">
|
||||
@csrf
|
||||
@foreach($fields as $field => $label)
|
||||
<input type="{{ $field }}" @class(['form-control', 'mb-2', 'is-invalid'=>($errors->first($field) != null)]) placeholder="{{ $label }}" name="{{ $field }}" :value="old($field)" />
|
||||
@endforeach
|
||||
<a href="{{ route('login') }}" class="btn btn-secondary px-5" ><i class="fa-solid fa-angles-left"></i> Back</a>
|
||||
<a href="{{ route('auth.login.index') }}" class="btn btn-secondary px-5" ><i class="fa-solid fa-angles-left"></i> Back</a>
|
||||
<button class="btn btn-primary px-5" type="submit">Send Reset Link</button>
|
||||
</form>
|
||||
</div>
|
||||
|
|
@ -24,7 +24,13 @@
|
|||
</div>
|
||||
@endif
|
||||
|
||||
<form method="POST" action="{{ route('login') }}">
|
||||
@if(session('status'))
|
||||
<div class="px-3 mb-10">
|
||||
<div class="alert alert-success graphictoria-alert graphictoria-error-popup">{{ session('status') }}</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<form method="POST" action="{{ route('auth.login.submit') }}">
|
||||
@csrf
|
||||
@foreach($fields as $field => $label)
|
||||
<input type="{{ $field }}" @class(['form-control', 'mb-2', 'is-invalid'=>($errors->first($field) != null)]) placeholder="{{ $label }}" name="{{ $field }}" :value="old($field)" />
|
||||
|
|
@ -38,11 +44,11 @@
|
|||
<button class="btn btn-primary px-5" type="submit">Sign In</button>
|
||||
</form>
|
||||
|
||||
<a href="/passwordreset" class="text-decoration-none fw-normal center" target="_blank">Forgot your password?</a>
|
||||
<a href="{{ route('auth.password.forgot') }}" class="text-decoration-none fw-normal center" target="_blank">Forgot your password?</a>
|
||||
</div>
|
||||
<div class="col">
|
||||
<h5>New to Graphictoria?</h5>
|
||||
<p>Creating an account takes less than a minute, and you can join a community of 10k+ users for <b>completely free</b>.<br/><a href="/register" class="btn btn-sm btn-success mt-2" target="_blank">Sign Up</a></p>
|
||||
<p>Creating an account takes less than a minute, and you can join a community of 10k+ users for <b>completely free</b>.<br/><a href="{{ route('auth.register.index') }}" class="btn btn-sm btn-success mt-2" target="_blank">Sign Up</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</x-slot>
|
||||
|
|
@ -30,14 +30,14 @@
|
|||
</div>
|
||||
@endif
|
||||
|
||||
<form method="POST" action="{{ route('register') }}">
|
||||
<form method="POST" action="{{ route('auth.register.submit') }}">
|
||||
@csrf
|
||||
@foreach($fields as $field => $label)
|
||||
<input type="{{ $field == 'password_confirmation' ? 'password' : $field }}" @class(['form-control', 'mb-2', 'is-invalid'=>($errors->first($field) != null)]) placeholder="{{ $label }}" name="{{ $field }}" :value="old($field)" />
|
||||
@endforeach
|
||||
<button class="btn btn-success px-5 mt-3" type="submit">Sign Up</button>
|
||||
</form>
|
||||
<a href="{{ route('login') }}" class="text-decoration-none fw-normal center" target="_blank">Already have an account?</a>
|
||||
<a href="{{ route('auth.login.index') }}" class="text-decoration-none fw-normal center" target="_blank">Already have an account?</a>
|
||||
|
||||
<p class="text-muted mt-3">By creating an account, you agree to our <a href="/legal/terms-of-service" class="text-decoration-none fw-normal" target="_blank">Terms of Service</a> and our <a href="/legal/privacy-policy" class="text-decoration-none fw-normal" target="_blank">Privacy Policy</a>.</p>
|
||||
</div>
|
||||
|
|
@ -23,7 +23,7 @@
|
|||
</div>
|
||||
@endif
|
||||
|
||||
<form method="POST" action="{{ route('password.update') }}">
|
||||
<form method="POST" action="{{ route('auth.password.reset-submit', $request->route('token')) }}">
|
||||
@csrf
|
||||
<input type="hidden" name="token" value="{{ $request->route('token') }}" />
|
||||
@foreach($fields as $field => $label)
|
||||
|
|
@ -2,6 +2,10 @@
|
|||
|
||||
@section('title', 'Dashboard')
|
||||
|
||||
@section('page-specific')
|
||||
<script src="{{ mix('js/dashboard.js') }}"></script>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<div class="container-lg my-2">
|
||||
<h4>Hello, {{ Auth::user()->username }}!</h4>
|
||||
|
|
@ -9,7 +13,6 @@
|
|||
<div class="col-md-3">
|
||||
<div class="card text-center">
|
||||
<img src="{{ asset('/images/testing/avatar.png') }}" class="img-fluid gt-charimg" />
|
||||
<p class="mb-3 px-3">"abcd"</p>
|
||||
</div>
|
||||
|
||||
<x-MiniCard class="mt-3 d-none d-md-flex">
|
||||
|
|
@ -39,16 +42,7 @@
|
|||
</x-slot>
|
||||
</x-MiniCard>
|
||||
|
||||
<h4>My Feed</h4>
|
||||
<div class="card mb-2">
|
||||
<div class="input-group p-2">
|
||||
<input type="text" class="form-control" placeholder="What are you up to?" area-label="What are you up to?"/>
|
||||
<button class="btn btn-secondary" type="submit">Share</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-flex">
|
||||
<x-loader />
|
||||
</div>
|
||||
<div id="gt-dash-feed"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
<h5 class="mb-0">Graphictoria aims to revive the classic Roblox experience. Join <b>9k+</b> other users and relive your childhood!</h5>
|
||||
<p class="graphictoria-homepage-fine-print fst-italic">* Graphictoria is not affiliated with, endorsed by, or sponsored by Roblox Corporation.</p>
|
||||
</div>
|
||||
<a href="{{ url('/register') }}" class="btn btn-success">Create your account<i class="ps-2 graphictoria-small-aligned-text fas fa-chevron-right"></i></a>
|
||||
<a href="{{ route('auth.register.index') }}" class="btn btn-success">Create your account<i class="ps-2 graphictoria-small-aligned-text fas fa-chevron-right"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="graphictoria-home-about my-1">
|
||||
|
|
@ -1,86 +1,53 @@
|
|||
<?php
|
||||
|
||||
use App\Http\Controllers\Auth\AuthenticatedSessionController;
|
||||
use App\Http\Controllers\Auth\ConfirmablePasswordController;
|
||||
use App\Http\Controllers\Auth\DoubleSessionBlockController;
|
||||
use App\Http\Controllers\Auth\EmailVerificationNotificationController;
|
||||
use App\Http\Controllers\Auth\EmailVerificationPromptController;
|
||||
use App\Http\Controllers\Auth\NewPasswordController;
|
||||
use App\Http\Controllers\Auth\PasswordResetLinkController;
|
||||
use App\Http\Controllers\Auth\RegisteredUserController;
|
||||
use App\Http\Controllers\Auth\UserModerationController;
|
||||
use App\Http\Controllers\Auth\VerifyEmailController;
|
||||
use App\Http\Controllers\IndexController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Web Routes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here is where you can register web routes for your application. These
|
||||
| routes are loaded by the RouteServiceProvider within a group which
|
||||
| contains the "web" middleware group. Now create something great!
|
||||
|
|
||||
*/
|
||||
|
||||
Route::get('/', function () {
|
||||
return view('welcome');
|
||||
})->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');
|
||||
});
|
||||
});
|
||||
|
|
@ -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({
|
||||
|
|
|
|||
Loading…
Reference in New Issue