Skip to content

Commit 830c932

Browse files
committed
Middleware, Admin Checkout
1 parent a5249fc commit 830c932

File tree

13 files changed

+251
-11
lines changed

13 files changed

+251
-11
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\Admin;
4+
5+
use App\Http\Controllers\Controller;
6+
use Illuminate\Http\Request;
7+
use App\Models\Checkout;
8+
9+
class CheckoutController extends Controller
10+
{
11+
public function update(Request $request, Checkout $checkout)
12+
{
13+
$checkout->is_paid = true;
14+
$checkout->save();
15+
$request->session()->flash('success', "Checkout {$checkout->Camp->title} by {$checkout->User->name} has been Updated!");
16+
return redirect(route('admin.dashboard'));
17+
}
18+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\Admin;
4+
5+
use Illuminate\Http\Request;
6+
use App\Http\Controllers\Controller;
7+
use App\Models\Checkout;
8+
use Auth;
9+
10+
class DashboardController extends Controller
11+
{
12+
public function index()
13+
{
14+
$checkouts = Checkout::with('Camp')->get();
15+
return view('admin.dashboard', [
16+
'checkouts' => $checkouts
17+
]);
18+
}
19+
}

app/Http/Controllers/HomeController.php

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,20 @@
33
namespace App\Http\Controllers;
44

55
use Illuminate\Http\Request;
6-
use App\Models\Checkout;
76
use Auth;
87

98
class HomeController extends Controller
109
{
1110
public function dashboard()
1211
{
13-
$checkouts = Checkout::with('Camp')->whereUserId(Auth::id())->get();
14-
return view('user.dashboard', [
15-
'checkouts' => $checkouts
16-
]);
12+
switch (Auth::user()->is_admin) {
13+
case true:
14+
return redirect(route('admin.dashboard'));
15+
break;
16+
17+
default:
18+
return redirect(route('user.dashboard'));
19+
break;
20+
}
1721
}
1822
}

app/Http/Controllers/User/CheckoutController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public function create(Request $request, Camp $camp)
3232
{
3333
if($camp->isRegistered){
3434
$request->session()->flash('error', "You already registered on {$camp->title}!");
35-
return redirect(route('dashboard'));
35+
return redirect(route('user.dashboard'));
3636
}
3737
return view('checkout.create',[
3838
'camp' => $camp
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\User;
4+
5+
use App\Http\Controllers\Controller;
6+
use Illuminate\Http\Request;
7+
use App\Models\Checkout;
8+
use Auth;
9+
10+
class DashboardController extends Controller
11+
{
12+
public function index()
13+
{
14+
$checkouts = Checkout::with('Camp')->whereUserId(Auth::id())->get();
15+
return view('user.dashboard',[
16+
'checkouts' => $checkouts
17+
]);
18+
}
19+
}

app/Http/Kernel.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,5 +63,6 @@ class Kernel extends HttpKernel
6363
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
6464
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
6565
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
66+
'ensureUserRole' => \App\Http\Middleware\EnsureUserRole::class,
6667
];
6768
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
3+
namespace App\Http\Middleware;
4+
5+
use Closure;
6+
use Illuminate\Http\Request;
7+
8+
class EnsureAdminRole
9+
{
10+
/**
11+
* Handle an incoming request.
12+
*
13+
* @param \Illuminate\Http\Request $request
14+
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
15+
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
16+
*/
17+
public function handle(Request $request, Closure $next, $role)
18+
{
19+
$user = Auth::user();
20+
if(($role == 'user' && $user->is_admin) || !$role == 'admin' && !$user->is_admin)
21+
{
22+
abort(403);
23+
}
24+
return $next($request);
25+
}
26+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
3+
namespace App\Http\Middleware;
4+
5+
use Closure;
6+
use Illuminate\Http\Request;
7+
use Auth;
8+
9+
class EnsureUserRole
10+
{
11+
/**
12+
* Handle an incoming request.
13+
*
14+
* @param \Illuminate\Http\Request $request
15+
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
16+
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
17+
*/
18+
public function handle(Request $request, Closure $next, $role)
19+
{
20+
$user = Auth::user();
21+
if(($role == 'admin' && !$user->is_admin) || ($role == 'user' && $user->is_admin))
22+
{
23+
abort(403);
24+
}
25+
return $next($request);
26+
}
27+
}

public/frontend/style/main1.css

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
@extends('layouts.app')
2+
3+
@section('title')
4+
Dashboard
5+
@endsection
6+
7+
@section('content')
8+
<section class="dashboard my-5">
9+
<div class="container">
10+
<div class="row text-left">
11+
<div class=" col-lg-12 col-12 header-wrap mt-4">
12+
<p class="story">
13+
Checkouts
14+
</p>
15+
<h2 class="primary-header ">
16+
Checkout Lists
17+
</h2>
18+
</div>
19+
</div>
20+
<div class="row my-5">
21+
@include('components.alert')
22+
<table class="table table-bordered">
23+
<thead class="bg-dark text-white">
24+
<tr class="align-middle">
25+
<th>Camp</th>
26+
<th>Name</th>
27+
<th>Price</th>
28+
<th>Register Date</th>
29+
<th>Paid Status</th>
30+
<th>Action</th>
31+
</tr>
32+
</thead>
33+
<tbody class="bg-light">
34+
@forelse ($checkouts as $checkout)
35+
<tr class="align-middle">
36+
<td>
37+
{{$checkout->Camp->title}}
38+
</td>
39+
<td>
40+
{{$checkout->User->name}}
41+
</td>
42+
<td>
43+
<strong><span class="text-danger">$</span>{{$checkout->Camp->price}},00</strong>
44+
</td>
45+
<td>
46+
{{$checkout->created_at->format('d M Y')}}
47+
</td>
48+
<td class="text-center">
49+
@if ($checkout->is_paid)
50+
<div class="badge bg-success">Success</div>
51+
@else
52+
<div class="badge bg-warning">Waiting</div>
53+
@endif
54+
</td>
55+
<td>
56+
@if (!$checkout->is_paid)
57+
<form action="{{route('admin.checkout.update', $checkout->id)}}" method="post">
58+
@csrf
59+
<button class="btn btn-primary btn-sm">Set to Paid</button>
60+
</form>
61+
@else
62+
63+
@endif
64+
</td>
65+
</tr>
66+
@empty
67+
<tr class="align-middle">
68+
<div class="alert alert-info" role="alert">
69+
No Data!
70+
</div>
71+
</tr>
72+
@endforelse
73+
</tbody>
74+
</table>
75+
</div>
76+
</div>
77+
</section>
78+
@endsection

0 commit comments

Comments
 (0)