reorganized controller dir, added check for dash

seperated dash controllers for api controllers in the controller
directory to make them easier to manage

also added middleware to check authorization when accessing dash pages
This commit is contained in:
ro 2024-03-07 11:36:31 -06:00
parent 1e37580869
commit f7c9558da2
No known key found for this signature in database
GPG key ID: 29B551CDBD4D3B50
8 changed files with 108 additions and 57 deletions

View file

@ -1,8 +1,9 @@
<?php <?php
namespace App\Http\Controllers; namespace App\Http\Controllers\Dash;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
use App\Http\Controllers\Controller;
use App\Services\AuthService; use App\Services\AuthService;
use Illuminate\Http\Request; use Illuminate\Http\Request;
@ -27,7 +28,7 @@ class AuthController extends Controller
$result = $this->auth->check($request); $result = $this->auth->check($request);
if ($result['status']) { if ($result['status']) {
//$request->session()->regenerate(); //$request->session()->regenerate();
return redirect()->intended('dashboard'); return redirect()->intended('dashboard/start');
} else { } else {
return back()->withErrors([ return back()->withErrors([
'error' => $result['message'], 'error' => $result['message'],

View file

@ -1,12 +1,13 @@
<?php <?php
namespace App\Http\Controllers; namespace App\Http\Controllers\Dash;
use App\Interfaces\PageRepositoryInterface; use App\Interfaces\PageRepositoryInterface;
use App\Services\AuthService; use App\Services\AuthService;
use App\Services\ThemeService; use App\Services\ThemeService;
use App\Http\Controllers\Controller;
class DashController extends Controller class IndexController extends Controller
{ {
protected PageRepositoryInterface $pages; protected PageRepositoryInterface $pages;
protected AuthService $auth; protected AuthService $auth;
@ -22,6 +23,18 @@ class DashController extends Controller
$this->themes = $themeService; $this->themes = $themeService;
} }
public function login()
{
if ($this->auth::status()) {
return redirect('dashboard/start');
} else {
return view('back.login', [
"status" => $this->auth::status(),
"title" => "Hi!"
]);
}
}
public function start() public function start()
{ {
$result = []; $result = [];

View file

@ -40,7 +40,7 @@ class Kernel extends HttpKernel
'api' => [ 'api' => [
// \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
\Illuminate\Routing\Middleware\ThrottleRequests::class.':api', \Illuminate\Routing\Middleware\ThrottleRequests::class . ':api',
\Illuminate\Routing\Middleware\SubstituteBindings::class, \Illuminate\Routing\Middleware\SubstituteBindings::class,
], ],
]; ];
@ -53,16 +53,17 @@ class Kernel extends HttpKernel
* @var array<string, class-string|string> * @var array<string, class-string|string>
*/ */
protected $middlewareAliases = [ protected $middlewareAliases = [
'auth' => \App\Http\Middleware\Authenticate::class, 'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class, 'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class, 'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'precognitive' => \Illuminate\Foundation\Http\Middleware\HandlePrecognitiveRequests::class, 'precognitive' => \Illuminate\Foundation\Http\Middleware\HandlePrecognitiveRequests::class,
'signed' => \App\Http\Middleware\ValidateSignature::class, 'signed' => \App\Http\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'member.check' => \App\Http\Middleware\MemberCheck::class,
]; ];
} }

View file

@ -0,0 +1,32 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use App\Services\AuthService;
class MemberCheck
{
protected $auth;
public function __construct(
AuthService $authService,
) {
$this->auth = $authService;
}
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next)
{
if ($this->auth::status()) {
return $next($request);
} else {
return redirect('dashboard');
}
}
}

View file

@ -0,0 +1,7 @@
@extends('frame')
@section('title', 'The Dash | Start')
@section('main-content')
@include('forms.login')
@endsection

View file

@ -3,9 +3,36 @@
@section('title', 'The Dash | Start') @section('title', 'The Dash | Start')
@section('main-content') @section('main-content')
@if($status) <section class="index-header">
@include('includes.index') <div class="index-header-left">
@else <h1>Recent</h1>
@include('forms.login') </div>
@endif <div class="index-header-right"></div>
</section>
<section class="index-recent-pages">
@if($result['entryCount'] != 0)
@foreach($result['pages'] as $page)
@php
$type = '';
$file = '';
isset($page['media'][0]['type']) ? $type = $page['media'][0]['type'] : $type = '';
isset($page['media'][0]['file']) ? $file = $page['media'][0]['file'] : $file = '';
@endphp
@if($type =='mp4')
<a href="/dashboard/page/edit/{{ $page['uuid'] }}" id="{{ $page['uuid'] }}" class="post-video-link recent-link">
@include('includes.recent-meta')
<video class="post-video" loop muted autoplay>
<source src="{{ $file }}" type="video/mp4">
Sorry, your browser doesn't support embedded videos.
</video>
</a>
@else
<a href="/dashboard/page/edit/{{ $page['uuid'] }}" id="{{ $page['uuid'] }}" class="post-link recent-link" style="background: url({{ $file }}) no-repeat center center / cover #fc6399">
@include('includes.recent-meta')
</a>
@endif
@endforeach
@endif
</section>
@endsection @endsection

View file

@ -1,31 +0,0 @@
<section class="index-header">
<div class="index-header-left">
<h1>Recent</h1>
</div>
<div class="index-header-right"></div>
</section>
<section class="index-recent-pages">
@if($result['entryCount'] != 0)
@foreach($result['pages'] as $page)
@php
$type = '';
$file = '';
isset($page['media'][0]['type']) ? $type = $page['media'][0]['type'] : $type = '';
isset($page['media'][0]['file']) ? $file = $page['media'][0]['file'] : $file = '';
@endphp
@if($type =='mp4')
<a href="/dashboard/page/edit/{{ $page['uuid'] }}" id="{{ $page['uuid'] }}" class="post-video-link recent-link">
@include('includes.recent-meta')
<video class="post-video" loop muted autoplay>
<source src="{{ $file }}" type="video/mp4">
Sorry, your browser doesn't support embedded videos.
</video>
</a>
@else
<a href="/dashboard/page/edit/{{ $page['uuid'] }}" id="{{ $page['uuid'] }}" class="post-link recent-link" style="background: url({{ $file }}) no-repeat center center / cover #fc6399">
@include('includes.recent-meta')
</a>
@endif
@endforeach
@endif
</section>

View file

@ -1,8 +1,8 @@
<?php <?php
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
use App\Http\Controllers\DashController; use App\Http\Controllers\Dash\IndexController;
use App\Http\Controllers\AuthController; use App\Http\Controllers\Dash\AuthController;
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
@ -22,12 +22,13 @@ Route::get('/', function () {
//DASHBOARD //DASHBOARD
//login stuff //login stuff
Route::get("/dashboard", [IndexController::class, 'login']);
Route::post("/login", [AuthController::class, 'enter']); Route::post("/login", [AuthController::class, 'enter']);
//back //back
Route::group(['prefix' => 'dashboard'], function () { Route::group(['prefix' => 'dashboard', 'middleware' => 'member.check'], function () {
Route::get("/", [DashController::class, 'start']); Route::get("/start", [IndexController::class, 'start'])->name('start');
Route::get("/pages/{pageFilter?}/{pageNum?}", [DashController::class, 'book']); Route::get("/pages/{pageFilter?}/{pageNum?}", [IndexController::class, 'book']);
Route::get("/page/{mode}/{uuid}", [DashController::class, 'page']); Route::get("/page/{mode}/{uuid}", [IndexController::class, 'page']);
Route::get("/logout", [AuthController::class, 'exit']); Route::get("/logout", [AuthController::class, 'exit']);
}); });