diff --git a/app/Http/Controllers/Backend/AuthenticationController.php b/app/Http/Controllers/Backend/AuthenticationController.php
index cab4e6f..21ea1fd 100644
--- a/app/Http/Controllers/Backend/AuthenticationController.php
+++ b/app/Http/Controllers/Backend/AuthenticationController.php
@@ -48,11 +48,14 @@ public function signInCheck(SignInRequest $request)
try {
$user = User::where('contact_en', $request->username)->orWhere('email', $request->username)->first();
if ($user) {
- if (Hash::check($request->password, $user->password)) {
- $this->setSession($user);
- return redirect()->route('dashboard')->with('success', 'Successfully Logged In');
+ if ($user->status == 1) {
+ if (Hash::check($request->password, $user->password)) {
+ $this->setSession($user);
+ return redirect()->route('dashboard')->with('success', 'Successfully Logged In');
+ } else
+ return redirect()->route('login')->with('error', 'Username or Password is wrong!');
} else
- return redirect()->route('login')->with('error', 'Username or Password is wrong!');
+ return redirect()->route('login')->with('error', 'You are not an active user! Please contact to Authority');
} else
return redirect()->route('login')->with('error', 'Username or Password is wrong!');
} catch (Exception $e) {
@@ -68,8 +71,8 @@ public function setSession($user)
'userId' => encryptor('encrypt', $user->id),
'userName' => encryptor('encrypt', $user->name_en),
'emailAddress' => encryptor('encrypt', $user->email),
- 'role_id'=> encryptor('encrypt',$user->role_id),
- 'accessType'=> encryptor('encrypt',$user->full_access),
+ 'role_id' => encryptor('encrypt', $user->role_id),
+ 'accessType' => encryptor('encrypt', $user->full_access),
'role' => encryptor('encrypt', $user->role->type),
'roleIdentitiy' => encryptor('encrypt', $user->role->identity),
'language' => encryptor('encrypt', $user->language),
@@ -84,8 +87,8 @@ public function signOut()
return redirect('login')->with('danger', 'Succesfully Logged Out');
}
-public function show(User $data)
+ public function show(User $data)
{
- return view('backend.user.profile', compact('data'));
+ return view('backend.user.profile', compact('data'));
}
-}
\ No newline at end of file
+}
diff --git a/app/Http/Controllers/Backend/PermissionController.php b/app/Http/Controllers/Backend/PermissionController.php
new file mode 100644
index 0000000..d50078f
--- /dev/null
+++ b/app/Http/Controllers/Backend/PermissionController.php
@@ -0,0 +1,91 @@
+get();
+ return view('backend.permission.index', compact('role', 'permission'));
+ }
+
+ /**
+ * Show the form for creating a new resource.
+ */
+ public function create()
+ {
+ //
+ }
+
+ /**
+ * Store a newly created resource in storage.
+ */
+ public function store(Request $request)
+ {
+ //
+ }
+
+ public function save(SaveRequest $request, $role)
+ {
+ try {
+ // delete permission before saved
+ Permission::where('role_id', encryptor('decrypt', $role))->delete();
+ foreach ($request->permission as $permission) {
+ $data = new Permission;
+ $data->role_id = encryptor('decrypt', $role);
+ $data->name = $permission;
+ $data->save();
+ }
+ $this->notice::success('Permission saved');
+ return redirect()->route('role.index');
+ } catch (Exception $e) {
+ $this->notice::error('Please try again');
+ dd($e);
+ return redirect()->back()->withInput();
+ }
+ }
+
+ /**
+ * Display the specified resource.
+ */
+ public function show(Permission $permission)
+ {
+ //
+ }
+
+ /**
+ * Show the form for editing the specified resource.
+ */
+ public function edit(Permission $permission)
+ {
+ //
+ }
+
+ /**
+ * Update the specified resource in storage.
+ */
+ public function update(Request $request, Permission $permission)
+ {
+ //
+ }
+
+ /**
+ * Remove the specified resource from storage.
+ */
+ public function destroy(Permission $permission)
+ {
+ //
+ }
+}
diff --git a/app/Http/Controllers/Backend/RoleController.php b/app/Http/Controllers/Backend/RoleController.php
new file mode 100644
index 0000000..f507bfe
--- /dev/null
+++ b/app/Http/Controllers/Backend/RoleController.php
@@ -0,0 +1,98 @@
+name=$request->Name;
+ $data->identity=$request->Identity;
+ if($data->save()){
+ $this->notice::success('Successfully saved');
+ return redirect()->route('role.index');
+ }
+ }catch(Exception $e){
+ dd($e);
+ $this->notice::error('Please try again');
+ return redirect()->back()->withInput();
+ }
+ }
+
+ /**
+ * Display the specified resource.
+ */
+ public function show($id)
+ {
+ //
+ }
+
+ /**
+ * Show the form for editing the specified resource.
+ */
+ public function edit($id)
+ {
+ $role=Role::findOrFail(encryptor('decrypt',$id));
+ return view('backend.role.edit',compact('role'));
+ }
+
+ /**
+ * Update the specified resource in storage.
+ */
+ public function update(UpdateRequest $request, $id)
+ {
+ try{
+ $data=Role::findOrFail(encryptor('decrypt',$id));
+ $data->name=$request->Name;
+ $data->identity=$request->Identity;
+ if($data->save()){
+ $this->notice::success('Successfully updated');
+ return redirect()->route('role.index');
+ }
+ }catch(Exception $e){
+ $this->notice::error('Please try again');
+ //dd($e);
+ return redirect()->back()->withInput();
+ }
+ }
+
+ /**
+ * Remove the specified resource from storage.
+ */
+ public function destroy($id)
+ {
+ $data= Role::findOrFail(encryptor('decrypt',$id));
+ if($data->delete()){
+ $this->notice::warning('Deleted Permanently!');
+ return redirect()->back();
+ }
+ }
+}
diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php
index 77ec359..4e91b99 100644
--- a/app/Http/Controllers/Controller.php
+++ b/app/Http/Controllers/Controller.php
@@ -5,8 +5,17 @@
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
+use Toastr;
class Controller extends BaseController
{
+ public $notice;
+
+ public function __construct()
+ {
+ $this->notice = new Toastr();
+ }
+
use AuthorizesRequests, ValidatesRequests;
}
+
\ No newline at end of file
diff --git a/app/Http/Controllers/PermissionController.php b/app/Http/Controllers/PermissionController.php
deleted file mode 100644
index 567f4e3..0000000
--- a/app/Http/Controllers/PermissionController.php
+++ /dev/null
@@ -1,65 +0,0 @@
- \App\Http\Middleware\Authenticate::class,
'checkrole' => \App\Http\Middleware\checkRole::class,
+ 'checkauth' => \App\Http\Middleware\checkAuth::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
diff --git a/app/Http/Middleware/checkAuth.php b/app/Http/Middleware/checkAuth.php
index 53ccfc9..62016c2 100644
--- a/app/Http/Middleware/checkAuth.php
+++ b/app/Http/Middleware/checkAuth.php
@@ -3,8 +3,10 @@
namespace App\Http\Middleware;
use Closure;
+use App\Models\User; //custom
use Illuminate\Http\Request;
-use Symfony\Component\HttpFoundation\Response;
+use Session; //custom
+use App\Models\Permission; //custom
class checkAuth
{
@@ -13,8 +15,17 @@ class checkAuth
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
- public function handle(Request $request, Closure $next): Response
+ public function handle(Request $request, Closure $next)
{
- return $next($request);
+ if (!Session::has('userId') || Session::has('userId') == null) {
+ return redirect()->route('logOut');
+ } else {
+ $user = User::where('status', 1)->where('id', currentUserId())->first();
+ if (!$user)
+ return redirect()->route('logOut');
+ else
+ return $next($request);
+ }
+ return redirect()->route('logOut');
}
}
diff --git a/app/Http/Middleware/checkRole.php b/app/Http/Middleware/checkRole.php
index 6119e31..0c0e4c8 100644
--- a/app/Http/Middleware/checkRole.php
+++ b/app/Http/Middleware/checkRole.php
@@ -20,13 +20,23 @@ public function handle(Request $request, Closure $next)
if (!Session::has('userId') || Session::has('userId') == null) {
return redirect()->route('logOut');
} else {
- $user = User::find(currentUserId());
+ $user = User::where('status', 1)->where('id', currentUserId())->first();
if (!$user) {
return redirect()->route('logOut');
} else if ($user->full_access == "1") {
return $next($request);
} else {
- return $next($request);
+ $auto_accept = array("POST", "PUT");
+ if (in_array($request->route()->methods[0], $auto_accept)) {
+ return $next($request);
+ } else {
+ if (Permission::where('role_id', $user->role_id)->where('name', $request->route()->getName())->exists())
+ return $next($request);
+ else {
+ \Toastr::warning("You don't have permission to access this page");
+ return redirect()->back();
+ }
+ }
}
}
return redirect()->route('logOut');
diff --git a/app/Http/Requests/Backend/Permission/SaveRequest.php b/app/Http/Requests/Backend/Permission/SaveRequest.php
new file mode 100644
index 0000000..e5bec7c
--- /dev/null
+++ b/app/Http/Requests/Backend/Permission/SaveRequest.php
@@ -0,0 +1,28 @@
+|string>
+ */
+ public function rules(): array
+ {
+ return [
+ 'permission'=>'required'
+ ];
+ }
+}
diff --git a/app/Http/Requests/Backend/Role/AddNewRequest.php b/app/Http/Requests/Backend/Role/AddNewRequest.php
new file mode 100644
index 0000000..e747256
--- /dev/null
+++ b/app/Http/Requests/Backend/Role/AddNewRequest.php
@@ -0,0 +1,30 @@
+|string>
+ */
+ public function rules(): array
+ {
+ return [
+ 'Identity'=>'required|max:30|alpha:ascii|unique:roles,identity',
+ 'Name'=>'required|max:30|unique:roles,name'
+ ];
+ }
+}
+
\ No newline at end of file
diff --git a/app/Http/Requests/Backend/Role/UpdateRequest.php b/app/Http/Requests/Backend/Role/UpdateRequest.php
new file mode 100644
index 0000000..da519e7
--- /dev/null
+++ b/app/Http/Requests/Backend/Role/UpdateRequest.php
@@ -0,0 +1,32 @@
+|string>
+ */
+ public function rules(Request $r): array
+ {
+ $id=encryptor('decrypt',$r->uptoken);
+ return [
+ 'Identity'=>'required|max:30|alpha:ascii|unique:roles,identity,'.$id,
+ 'Name'=>'required|max:30|unique:roles,name,'.$id
+ ];
+ }
+}
+
\ No newline at end of file
diff --git a/composer.json b/composer.json
index e886706..a839568 100644
--- a/composer.json
+++ b/composer.json
@@ -6,6 +6,7 @@
"license": "MIT",
"require": {
"php": "^8.1",
+ "brian2694/laravel-toastr": "^5.58",
"guzzlehttp/guzzle": "^7.2",
"laravel/framework": "^10.10",
"laravel/sanctum": "^3.3",
diff --git a/composer.lock b/composer.lock
index b49b837..366940e 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,8 +4,70 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "283e34281449c1c77bfa692414cd4a55",
+ "content-hash": "da2e44149d81ccf73d7aaef91083caa6",
"packages": [
+ {
+ "name": "brian2694/laravel-toastr",
+ "version": "5.58",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/brian2694/laravel-toastr.git",
+ "reference": "6c7d1c6a959b7042757865d3df0c2f57b912f2c1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/brian2694/laravel-toastr/zipball/6c7d1c6a959b7042757865d3df0c2f57b912f2c1",
+ "reference": "6c7d1c6a959b7042757865d3df0c2f57b912f2c1",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/session": ">=5.2.7",
+ "illuminate/support": ">=5.2.7",
+ "php": ">=5.5.0"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Brian2694\\Toastr\\ToastrServiceProvider"
+ ],
+ "aliases": {
+ "Toastr": "Brian2694\\Toastr\\Facades\\Toastr"
+ }
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/helper.php"
+ ],
+ "psr-4": {
+ "Brian2694\\Toastr\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "brian2694",
+ "email": "briansanchez2694@gmail.com"
+ }
+ ],
+ "description": "toastr.js for Laravel",
+ "homepage": "https://github.com/brian2694/laravel-toastr",
+ "keywords": [
+ "laravel",
+ "notification",
+ "php",
+ "toastr"
+ ],
+ "support": {
+ "issues": "https://github.com/brian2694/laravel-toastr/issues",
+ "source": "https://github.com/brian2694/laravel-toastr/tree/5.58"
+ },
+ "time": "2023-10-31T20:35:36+00:00"
+ },
{
"name": "brick/math",
"version": "0.11.0",
diff --git a/database/migrations/2023_10_12_031415_create_roles_table.php b/database/migrations/2023_10_12_031415_create_roles_table.php
index a72f7a1..ed5a0cf 100644
--- a/database/migrations/2023_10_12_031415_create_roles_table.php
+++ b/database/migrations/2023_10_12_031415_create_roles_table.php
@@ -15,29 +15,29 @@ public function up(): void
{
Schema::create('roles', function (Blueprint $table) {
$table->id();
- $table->string('type', 20)->unique();
+ $table->string('name', 20)->unique();
$table->string('identity', 30)->unique();
$table->timestamps();
});
DB::table('roles')->insert([
[
- 'type'=> 'Super Admin',
+ 'name'=> 'Super Admin',
'identity'=> 'superadmin',
'created_at'=> Carbon::now()
],
[
- 'type'=> 'Admin',
+ 'name'=> 'Admin',
'identity'=> 'admin',
'created_at'=> Carbon::now()
],
[
- 'type'=> 'Instructor',
+ 'name'=> 'Instructor',
'identity'=> 'instructor',
'created_at'=> Carbon::now()
],
[
- 'type'=> 'Student',
+ 'name'=> 'Student',
'identity'=> 'student',
'created_at'=> Carbon::now()
]
diff --git a/resources/views/backend/layouts/app.blade.php b/resources/views/backend/layouts/app.blade.php
index 011a49c..e464ea8 100644
--- a/resources/views/backend/layouts/app.blade.php
+++ b/resources/views/backend/layouts/app.blade.php
@@ -261,12 +261,12 @@ class="feather feather-log-out">
- Contents
+ Roles
diff --git a/resources/views/backend/permission/index.blade.php b/resources/views/backend/permission/index.blade.php
new file mode 100644
index 0000000..1892da3
--- /dev/null
+++ b/resources/views/backend/permission/index.blade.php
@@ -0,0 +1,206 @@
+@extends('backend.layouts.app')
+@section('title', trans('Permission List'))
+
+@push('styles')
+
+
+@endpush
+
+@section('content')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{$role->type}}
+ @php
+ $routes=array();
+ $auto_accept=array('GET',"DELETE");
+ $permissions=array();
+ foreach($permission as $perm){
+ $permissions[$perm->name]=$perm->name;
+ }
+ @endphp
+ @foreach(Illuminate\Support\Facades\Route::getRoutes() as $v)
+ @if($v->getPrefix()=="/admin")
+ @php
+ $rl=explode('.',$v->getName());
+ if(isset($rl[1]))
+ $routes[$rl[0]][]=array("method"=>$v->methods[0],"function"=>$rl[1]);
+ @endphp
+ @endif
+ @endforeach
+
+
+
+
+
+ {{--
+
+ @forelse ($data as $d)
+
+
+
+
+
+
+
}})
+
+
{{$d->name_en}}
+
{{$d->role?->type}}
+
+ -
+ #Sl.{{$d->id}}
+
+ -
+ Phone No.
+ :{{$d->contact_en}}
+
+ -
+ Email:{{$d->email}}
+
+ -
+ Created At.
+ :{{$d->created_at}}
+
+
+
Read More
+
+
+
+
+ @empty
+
+ @endforelse
+
+
--}}
+
+
+
+
+
+
+
+@endsection
+
+@push('scripts')
+
+
+
+
+
+
+@endpush
\ No newline at end of file
diff --git a/resources/views/backend/role/create.blade.php b/resources/views/backend/role/create.blade.php
new file mode 100644
index 0000000..54aacdd
--- /dev/null
+++ b/resources/views/backend/role/create.blade.php
@@ -0,0 +1,85 @@
+@extends('backend.layouts.app')
+@section('title', 'Add Role')
+
+@push('styles')
+
+
+
+@endpush
+
+@section('content')
+
+
+
+@endsection
+
+@push('scripts')
+
+
+
+
+
+
+
+@endpush
\ No newline at end of file
diff --git a/resources/views/backend/role/edit.blade.php b/resources/views/backend/role/edit.blade.php
new file mode 100644
index 0000000..f2c2e3c
--- /dev/null
+++ b/resources/views/backend/role/edit.blade.php
@@ -0,0 +1,86 @@
+@extends('backend.layouts.app')
+@section('title', 'Update Role')
+
+@push('styles')
+
+
+
+@endpush
+
+@section('content')
+
+
+
+@endsection
+
+@push('scripts')
+
+
+
+
+
+
+
+@endpush
\ No newline at end of file
diff --git a/resources/views/backend/role/index.blade.php b/resources/views/backend/role/index.blade.php
new file mode 100644
index 0000000..a79650a
--- /dev/null
+++ b/resources/views/backend/role/index.blade.php
@@ -0,0 +1,168 @@
+@extends('backend.layouts.app')
+@section('title', trans('Role List'))
+
+@push('styles')
+
+
+@endpush
+
+@section('content')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | {{__('#')}} |
+ {{__('Name')}} |
+ {{__('Identity')}} |
+ {{__('Action')}} |
+
+
+
+ @forelse ($data as $d)
+
+ | {{++$loop->index}} |
+ {{$d->name}} |
+ {{$d->identity}} |
+
+
+
+
+
+ |
+
+ @empty
+
+ | No User Found |
+
+ @endforelse
+
+
+
+
+
+
+
+
+ @forelse ($data as $d)
+
+
+
+
+
+
+
}})
+
+
{{$d->name_en}}
+
{{$d->role?->type}}
+
+ -
+ #Sl.{{$d->id}}
+
+ -
+ Phone No.
+ :{{$d->contact_en}}
+
+ -
+ Email:{{$d->email}}
+
+ -
+ Created At.
+ :{{$d->created_at}}
+
+
+
Read More
+
+
+
+
+ @empty
+
+ @endforelse
+
+
+
+
+
+
+
+
+
+@endsection
+
+@push('scripts')
+
+
+
+
+@endpush
\ No newline at end of file
diff --git a/resources/views/backend/user/index.blade.php b/resources/views/backend/user/index.blade.php
index dfa11a0..8426878 100644
--- a/resources/views/backend/user/index.blade.php
+++ b/resources/views/backend/user/index.blade.php
@@ -66,7 +66,7 @@ class="nav-link btn-primary mr-1 show active">List View
{{$d->name_en}} |
{{$d->email}} |
{{$d->contact_en}} |
- {{$d->role?->type}} |
+ {{$d->role?->name}} |
@if($d->status==1){{__('Active')}} @else{{__('Inactive')}} @endif
|
diff --git a/routes/web.php b/routes/web.php
index 4fb5ed0..ba37a1a 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -5,6 +5,8 @@
use App\Http\Controllers\Backend\UserController as user;
use App\Http\Controllers\Backend\DashboardController as dashboard;
use App\Http\Controllers\Backend\Courses\CourseCategoryController as courseCategory;
+use App\Http\Controllers\Backend\RoleController as role;
+use App\Http\Controllers\Backend\PermissionController as permission;
/*
|--------------------------------------------------------------------------
@@ -25,11 +27,17 @@
Route::resource('/courseCategory', courseCategory::class);
-
-Route::middleware(['checkrole'])->group(function () {
+Route::middleware(['checkauth'])->prefix('admin')->group(function () {
Route::get('/dashboard', [dashboard::class, 'index'])->name('dashboard');
+});
+
+Route::middleware(['checkrole'])->prefix('admin')->group(function () {
Route::resource('/user', user::class);
Route::get('/userProfile', [auth::class, 'show'])->name('userProfile');
+ Route::resource('user',user::class);
+ Route::resource('role',role::class);
+ Route::get('permission/{role}',[permission::class,'index'])->name('permission.list');
+ Route::post('permission/{role}',[permission::class,'save'])->name('permission.save');
});
@@ -43,3 +51,4 @@
// Route::get('/dashboard', function () {
// return view('welcome');
// })->name('dashboard');
+
\ No newline at end of file
|