From adfc826e9c3bbbd743c64e0d8b8b53ec08c69044 Mon Sep 17 00:00:00 2001 From: tanch0 Date: Thu, 20 Jun 2024 16:42:33 +0545 Subject: [PATCH] changes --- .../Auth/AuthenticationController.php | 16 +- .../Controllers/PermissionsController.php | 150 ++++++++++++ app/Http/Controllers/RolesController.php | 125 ++++++++++ app/Http/Controllers/UsersController.php | 117 ++++++++++ app/Http/Controllers/VideosController.php | 5 +- app/Http/Controllers/WebsiteController.php | 17 +- app/Models/Permissions.php | 45 ++++ app/Models/Roles.php | 44 ++++ app/Models/User.php | 3 +- composer.json | 1 + composer.lock | 84 ++++++- config/app.php | 1 + config/permission.php | 186 +++++++++++++++ ..._06_20_041653_create_permission_tables.php | 138 +++++++++++ database/seeders/AdsCategorySeeder.php | 220 ++++++++++++++++++ database/seeders/DatabaseSeeder.php | 2 + database/seeders/RoleSeeder.php | 20 ++ database/seeders/UserSeeder.php | 7 +- resources/views/backend/sidebar.blade.php | 61 ++++- .../generated/permissions/create.blade.php | 17 ++ .../crud/generated/permissions/edit.blade.php | 25 ++ .../generated/permissions/index.blade.php | 185 +++++++++++++++ .../crud/generated/permissions/show.blade.php | 28 +++ .../crud/generated/roles/create.blade.php | 34 +++ .../views/crud/generated/roles/edit.blade.php | 69 ++++++ .../crud/generated/roles/index.blade.php | 185 +++++++++++++++ .../views/crud/generated/roles/show.blade.php | 28 +++ .../crud/generated/users/create.blade.php | 25 ++ .../views/crud/generated/users/edit.blade.php | 100 ++++++++ .../crud/generated/users/index.blade.php | 187 +++++++++++++++ .../views/crud/generated/users/show.blade.php | 29 +++ .../views/hulaki_khabar/Auth/login.blade.php | 2 +- .../hulaki_khabar/Auth/registration.blade.php | 20 +- .../hulaki_khabar/home/main-news.blade.php | 4 +- .../views/hulaki_khabar/news-detail.blade.php | 33 +-- .../hulaki_khabar/partials/header.blade.php | 6 +- .../hulaki_khabar/video-detail.blade.php | 142 +++++++++++ resources/views/hulaki_khabar/video.blade.php | 12 +- routes/CRUDgenerated/route.permissions.php | 15 ++ routes/CRUDgenerated/route.roles.php | 15 ++ routes/CRUDgenerated/route.users.php | 15 ++ routes/route.client.php | 2 +- routes/route.permissions.php | 8 + routes/route.roles.php | 10 + routes/route.users.php | 14 ++ routes/web.php | 3 + 46 files changed, 2385 insertions(+), 70 deletions(-) create mode 100644 app/Http/Controllers/PermissionsController.php create mode 100644 app/Http/Controllers/RolesController.php create mode 100644 app/Http/Controllers/UsersController.php create mode 100644 app/Models/Permissions.php create mode 100644 app/Models/Roles.php create mode 100644 config/permission.php create mode 100644 database/migrations/2024_06_20_041653_create_permission_tables.php create mode 100644 database/seeders/AdsCategorySeeder.php create mode 100644 database/seeders/RoleSeeder.php create mode 100644 resources/views/crud/generated/permissions/create.blade.php create mode 100644 resources/views/crud/generated/permissions/edit.blade.php create mode 100644 resources/views/crud/generated/permissions/index.blade.php create mode 100644 resources/views/crud/generated/permissions/show.blade.php create mode 100644 resources/views/crud/generated/roles/create.blade.php create mode 100644 resources/views/crud/generated/roles/edit.blade.php create mode 100644 resources/views/crud/generated/roles/index.blade.php create mode 100644 resources/views/crud/generated/roles/show.blade.php create mode 100644 resources/views/crud/generated/users/create.blade.php create mode 100644 resources/views/crud/generated/users/edit.blade.php create mode 100644 resources/views/crud/generated/users/index.blade.php create mode 100644 resources/views/crud/generated/users/show.blade.php create mode 100644 resources/views/hulaki_khabar/video-detail.blade.php create mode 100644 routes/CRUDgenerated/route.permissions.php create mode 100644 routes/CRUDgenerated/route.roles.php create mode 100644 routes/CRUDgenerated/route.users.php create mode 100644 routes/route.permissions.php create mode 100644 routes/route.roles.php create mode 100644 routes/route.users.php diff --git a/app/Http/Controllers/Auth/AuthenticationController.php b/app/Http/Controllers/Auth/AuthenticationController.php index d426b0a..4caf782 100644 --- a/app/Http/Controllers/Auth/AuthenticationController.php +++ b/app/Http/Controllers/Auth/AuthenticationController.php @@ -3,10 +3,13 @@ namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; +use App\Models\Advertisements; +use App\Models\Menuitems; use App\Models\User; +use App\Models\News; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; - +use Illuminate\Support\Facades\View; class AuthenticationController extends Controller { @@ -15,6 +18,16 @@ class AuthenticationController extends Controller public function __construct() { $this->path = config('app.client_path'); + $ads = Advertisements::where('status', 1)->where('parent_advertisement',0)->get(); + $headerMenuItems = Menuitems::where(['parent_menu' => 0, "status" => 1, "menulocations_id" => 1])->with('children')->orderBy('display_order')->get(); + $footerMenuItems = Menuitems::where(['parent_menu' => 0, "status" => 1, "menulocations_id" => 2])->with('children')->orderBy('display_order')->get(); + $latestNews = News::where('status', 1)->inRandomOrder()->limit(4)->get(); + View::share([ + 'ads' => $ads, + 'headerMenuItems' => $headerMenuItems, + 'footerMenuItems' => $footerMenuItems, + 'latestNews' => $latestNews + ]); } public function login() @@ -29,6 +42,7 @@ class AuthenticationController extends Controller public static function store(Request $request) { + dd($request->all()); $request->validate([ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], diff --git a/app/Http/Controllers/PermissionsController.php b/app/Http/Controllers/PermissionsController.php new file mode 100644 index 0000000..3ed9e14 --- /dev/null +++ b/app/Http/Controllers/PermissionsController.php @@ -0,0 +1,150 @@ +modelService = new CommonModelService($model); + } + public function index(Request $request) + { + createActivityLog(PermissionsController::class, 'index', ' Permissions index'); + $data = Permission::get(); + + return view("crud.generated.permissions.index", compact('data')); + } + + public function create(Request $request) + { + createActivityLog(PermissionsController::class, 'create', ' Permissions create'); + $TableData = Permission::get(); + return view("crud.generated.permissions.create", compact('TableData')); + } + + public function store(Request $request) + { + $validated = $request->validate([ + 'name' => 'required|max:255', + ]); + + Permission::create($validated); + + if ($request->ajax()) { + return response()->json(['status' => true, 'message' => 'The Permissions Created Successfully.'], 200); + } + return redirect()->route('permissions.index')->with('success', 'The Permissions created Successfully.'); + } + + public function sort(Request $request) + { + $idOrder = $request->input('id_order'); + + foreach ($idOrder as $index => $id) { + $companyArticle = Permission::find($id); + $companyArticle->display_order = $index + 1; + $companyArticle->save(); + } + + return response()->json(['status' => true, 'content' => 'The articles sorted successfully.'], 200); + } + public function updatealias(Request $request) + { + + $articleId = $request->input('articleId'); + $newAlias = $request->input('newAlias'); + $companyArticle = Permission::find($articleId); + if (!$companyArticle) { + return response()->json(['status' => false, 'content' => 'Company article not found.'], 404); + } + $companyArticle->alias = $newAlias; + $companyArticle->save(); + return response()->json(['status' => true, 'content' => 'Alias updated successfully.'], 200); + } + + + + + public function show(Request $request, $id) + { + createActivityLog(PermissionsController::class, 'show', ' Permissions show'); + $data = Permission::findOrFail($id); + + return view("crud.generated.permissions.show", compact('data')); + } + + + public function edit(Request $request, $id) + { + createActivityLog(PermissionsController::class, 'edit', ' Permissions edit'); + $TableData = Permission::get(); + $data = Permission::findOrFail($id); + if ($request->ajax()) { + $html = view("crud.generated.permissions.ajax.edit", compact('data'))->render(); + return response()->json(['status' => true, 'content' => $html], 200); + } + return view("crud.generated.permissions.edit", compact('data', 'TableData')); + } + + + public function update(Request $request, Permission $permission) + { + + $validated = $request->validate(['name' => 'required']); + + $permission->update($validated); + + if ($request->ajax()) { + return response()->json(['status' => true, 'message' => 'The Permissions updated Successfully.'], 200); + } + // return redirect()->route('permissions.index')->with('success','The Permissions updated Successfully.'); + return redirect()->route('permissions.index')->with('success', 'The Permissions updated successfully.'); + } + + public function destroy(Request $request, $id) + { + createActivityLog(PermissionsController::class, 'destroy', ' Permissions destroy'); + DB::beginTransaction(); + try { + $OperationNumber = getOperationNumber(); + $this->modelService->destroy($OperationNumber, $OperationNumber, $id); + } catch (Exception $e) { + DB::rollBack(); + Log::info($e->getMessage()); + createErrorLog(PermissionsController::class, 'destroy', $e->getMessage()); + return response()->json(['status' => false, 'message' => $e->getMessage()], 500); + } + DB::commit(); + return response()->json(['status' => true, 'message' => 'The Permissions Deleted Successfully.'], 200); + } + public function toggle(Request $request, $id) + { + createActivityLog(PermissionsController::class, 'destroy', ' Permissions destroy'); + $data = Permission::findOrFail($id); + $requestData = ['status' => ($data->status == 1) ? 0 : 1]; + DB::beginTransaction(); + try { + $OperationNumber = getOperationNumber(); + $this->modelService->update($OperationNumber, $OperationNumber, null, $requestData, $id); + } catch (Exception $e) { + DB::rollBack(); + Log::info($e->getMessage()); + createErrorLog(PermissionsController::class, 'destroy', $e->getMessage()); + return response()->json(['status' => false, 'message' => $e->getMessage()], 500); + } + DB::commit(); + return response()->json(['status' => true, 'message' => 'The Permissions Deleted Successfully.'], 200); + } +} diff --git a/app/Http/Controllers/RolesController.php b/app/Http/Controllers/RolesController.php new file mode 100644 index 0000000..50d8f03 --- /dev/null +++ b/app/Http/Controllers/RolesController.php @@ -0,0 +1,125 @@ +modelService = new CommonModelService($model); + } + public function index(Request $request) + { + createActivityLog(RolesController::class, 'index', ' Roles index'); + $data = Role::whereNotIn('name', ['admin'])->get(); + + return view("crud.generated.roles.index", compact('data')); + } + + public function create(Request $request) + { + createActivityLog(RolesController::class, 'create', ' Roles create'); + $TableData = Roles::get(); + $permissions = Permission::all(); + return view("crud.generated.roles.create", compact('TableData', 'permissions')); + } + + public function store(Request $request) + { + $validated = $request->validate(['name' => ['required', 'min:3']]); + $role = Role::create($validated); + + if ($role->hasPermissionTo($request->permission, 'web')) { + return back()->with('message', 'Permission exists.'); + } + $role->givePermissionTo($request->permission); + + if ($request->ajax()) { + return response()->json(['status' => true, 'message' => 'The Roles Created Successfully.'], 200); + } + return redirect()->route('roles.index')->with('success', 'The Roles created Successfully.'); + } + + public function sort(Request $request) + { + $idOrder = $request->input('id_order'); + + foreach ($idOrder as $index => $id) { + $companyArticle = Roles::find($id); + $companyArticle->display_order = $index + 1; + $companyArticle->save(); + } + + return response()->json(['status' => true, 'content' => 'The articles sorted successfully.'], 200); + } + + + + + public function show(Request $request, $id) + { + createActivityLog(RolesController::class, 'show', ' Roles show'); + $data = Roles::findOrFail($id); + + return view("crud.generated.roles.show", compact('data')); + } + + + public function edit(Request $request, $id) + { + createActivityLog(RolesController::class, 'edit', ' Roles edit'); + $permissions = Permission::all(); + $TableData = Role::get(); + $data = Role::findOrFail($id); + if ($request->ajax()) { + $html = view("crud.generated.roles.ajax.edit", compact('data'))->render(); + return response()->json(['status' => true, 'content' => $html], 200); + } + return view("crud.generated.roles.edit", compact('data', 'TableData', 'permissions')); + } + + + public function update(Request $request, Role $role) + { + $permission = $request->permission; + $validated = $request->validate(['name' => ['required', 'min:3']]); + $role->update($validated); + + if($permission){ + $role->givePermissionTo($permission); + } + + if ($request->ajax()) { + return response()->json(['status' => true, 'message' => 'The Roles updated Successfully.'], 200); + } + // return redirect()->route('roles.index')->with('success','The Roles updated Successfully.'); + return redirect()->back()->with('success', 'The Roles updated successfully.'); + } + + public function destroy(Role $role) + { + $role->delete(); + return response()->json(['status' => true, 'message' => 'The Roles Deleted Successfully.'], 200); + } + + public function revokePermission(Role $role, Permission $permission) + { + if ($role->hasPermissionTo($permission)) { + $role->revokePermissionTo($permission); + return back()->with('message', 'Permission revoked.'); + } + return back()->with('message', 'Permission not exists.'); + } +} diff --git a/app/Http/Controllers/UsersController.php b/app/Http/Controllers/UsersController.php new file mode 100644 index 0000000..67e7b2f --- /dev/null +++ b/app/Http/Controllers/UsersController.php @@ -0,0 +1,117 @@ +modelService = new CommonModelService($model); + } + + public function index(Request $request) + { + createActivityLog(UsersController::class, 'index', 'User index'); + $data = User::get(); + return view("crud.generated.users.index", compact('data')); + } + + public function show(Request $request, $id) + { + createActivityLog(UsersController::class, 'show', 'User show'); + $data = User::findOrFail($id); + return view("crud.generated.User.show", compact('data')); + } + + public function edit(Request $request, $id) + { + createActivityLog(UsersController::class, 'edit', 'User edit'); + $TableData = User::get(); + $data = User::findOrFail($id); + $roles = Role::all(); + $permissions = Permission::all(); + + if ($request->ajax()) { + $html = view("crud.generated.User.ajax.edit", compact('data'))->render(); + return response()->json(['status' => true, 'content' => $html], 200); + } + + return view("crud.generated.users.edit", compact('data', 'TableData', 'roles', 'permissions')); + } + + public function update(Request $request, User $user) + { + // dd($request->toArray()); + + if ($request->permission) { + if ($user->hasPermissionTo($request->permission)) { + return redirect()->back()->with('error', 'The User already has this permission.'); + } + $user->givePermissionTo($request->permission); + } + if ($request->role) { + if ($user->hasRole($request->role)) { + return redirect()->back()->with('error', 'The User already has this role.'); + } + $user->assignRole($request->role); + } + + if ($request->ajax()) { + return response()->json(['status' => true, 'message' => 'The User updated Successfully.'], 200); + } + + // Logic to update user should be added here + + return redirect()->back()->with('success', 'The User updated successfully.'); + } + + public function destroy(Request $request, $id) + { + createActivityLog(UsersController::class, 'destroy', 'User destroy'); + DB::beginTransaction(); + + try { + $OperationNumber = getOperationNumber(); + $this->modelService->destroy($OperationNumber, $OperationNumber, $id); + } catch (Exception $e) { + DB::rollBack(); + Log::info($e->getMessage()); + createErrorLog(UsersController::class, 'destroy', $e->getMessage()); + return response()->json(['status' => false, 'message' => $e->getMessage()], 500); + } + + DB::commit(); + return response()->json(['status' => true, 'message' => 'The User Deleted Successfully.'], 200); + } + + public function removeRole(User $user, Role $role) + { + if ($user->hasRole($role)) { + $user->removeRole($role); + return back()->with('message', 'Role removed.'); + } + + return back()->with('message', 'Role not exists.'); + } + + public function revokePermission(User $user, Permission $permission) + { + if ($user->hasPermissionTo($permission)) { + $user->revokePermissionTo($permission); + return back()->with('message', 'Permission revoked.'); + } + return back()->with('message', 'Permission does not exists.'); + } +} diff --git a/app/Http/Controllers/VideosController.php b/app/Http/Controllers/VideosController.php index 57e9a4a..d24190e 100644 --- a/app/Http/Controllers/VideosController.php +++ b/app/Http/Controllers/VideosController.php @@ -51,7 +51,8 @@ class VideosController extends Controller 'error' => $validator->errors(), ], 500); } - $request->mergeIfMissing(['alias' => slugify($request->title)]); + $request->mergeIfMissing(['alias' => Str::slug($request->title)]); + $request->request->add(['display_order' => getDisplayOrder('tbl_videos')]); $requestData = $request->all(); array_walk_recursive($requestData, function (&$value) { @@ -134,7 +135,7 @@ class VideosController extends Controller 'error' => $validator->errors(), ], 500); } - $request->mergeIfMissing(['alias' => slugify($request->title)]); + $request->mergeIfMissing(['alias' => Str::slug($request->title)]); $filterData = $request->except(['_token', '_method']); array_walk_recursive($filterData, function (&$value) { $value = str_replace(env('APP_URL') . '/', '', $value); diff --git a/app/Http/Controllers/WebsiteController.php b/app/Http/Controllers/WebsiteController.php index 260e61c..6346857 100644 --- a/app/Http/Controllers/WebsiteController.php +++ b/app/Http/Controllers/WebsiteController.php @@ -177,15 +177,10 @@ class WebsiteController extends Controller $data = News::where('provinces_id',$id)->where('status',1)->orderBy('display_order')->paginate(9); return view($this->path . '.single', compact('data','categoryTitle')); } + + public function videoDetail($alias){ + $data = Videos::where('alias', $alias)->where('status', 1)->first(); + $recentNews = News::where('status',1)->inRandomOrder()->limit(12)->latest()->get(); + return view($this->path . '.video-detail', compact('data','recentNews')); + } } - - -// public function single($alias) -// { -// $categoryId = Newscategories::where('alias', $alias)->pluck('category_id')->first(); -// $categoryTitle = Newscategories::where('alias', $alias)->pluck('nepali_title')->first(); - -// $data = News::where('newscategories_id', $categoryId)->where('status', 1)->orderBy('display_order')->paginate(9); - -// return view($this->path . '.single', compact('data', 'categoryTitle')); -// } \ No newline at end of file diff --git a/app/Models/Permissions.php b/app/Models/Permissions.php new file mode 100644 index 0000000..7851945 --- /dev/null +++ b/app/Models/Permissions.php @@ -0,0 +1,45 @@ +status == 1 ? ' Active ' : 'Inactive'; + } + + protected function createdBy(): Attribute + { + return Attribute::make( + get: fn ($value) => User::find($value) ? User::find($value)->name : '', + ); + } + + protected function updatedBy(): Attribute + { + return Attribute::make( + get: fn ($value) => User::find($value) ? User::find($value)->name : '', + ); + } +} diff --git a/app/Models/Roles.php b/app/Models/Roles.php new file mode 100644 index 0000000..6875b8c --- /dev/null +++ b/app/Models/Roles.php @@ -0,0 +1,44 @@ +status == 1 ? ' Active ' : 'Inactive'; + } + + protected function createdBy(): Attribute + { + return Attribute::make( + get: fn ($value) => User::find($value) ? User::find($value)->name : '', + ); + } + + protected function updatedBy(): Attribute + { + return Attribute::make( + get: fn ($value) => User::find($value) ? User::find($value)->name : '', + ); + } + } \ No newline at end of file diff --git a/app/Models/User.php b/app/Models/User.php index abdd1de..f174341 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -7,10 +7,11 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Laravel\Sanctum\HasApiTokens; +use Spatie\Permission\Traits\HasRoles; class User extends Authenticatable { - use HasApiTokens, HasFactory, Notifiable; + use HasApiTokens, HasFactory, Notifiable, HasRoles; /** * The attributes that are mass assignable. diff --git a/composer.json b/composer.json index e0b8227..1d235d5 100644 --- a/composer.json +++ b/composer.json @@ -12,6 +12,7 @@ "laravel/framework": "^10.10", "laravel/sanctum": "^3.2", "laravel/tinker": "^2.8", + "spatie/laravel-permission": "^6.7", "symfony/process": "^6.3", "unisharp/laravel-filemanager": "^2.6" }, diff --git a/composer.lock b/composer.lock index ed90ef4..0d8d275 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "c01d9fba41ba7441a0f6055ccba08d45", + "content-hash": "21f9bae5dfa5a7adda4fc9f1ddad3d38", "packages": [ { "name": "brian2694/laravel-toastr", @@ -3434,6 +3434,88 @@ ], "time": "2023-11-08T05:53:05+00:00" }, + { + "name": "spatie/laravel-permission", + "version": "6.7.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-permission.git", + "reference": "17607924aa0aa89bc0153c2ce45ed7c55083367b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-permission/zipball/17607924aa0aa89bc0153c2ce45ed7c55083367b", + "reference": "17607924aa0aa89bc0153c2ce45ed7c55083367b", + "shasum": "" + }, + "require": { + "illuminate/auth": "^8.12|^9.0|^10.0|^11.0", + "illuminate/container": "^8.12|^9.0|^10.0|^11.0", + "illuminate/contracts": "^8.12|^9.0|^10.0|^11.0", + "illuminate/database": "^8.12|^9.0|^10.0|^11.0", + "php": "^8.0" + }, + "require-dev": { + "laravel/passport": "^11.0|^12.0", + "orchestra/testbench": "^6.23|^7.0|^8.0|^9.0", + "phpunit/phpunit": "^9.4|^10.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.x-dev", + "dev-master": "6.x-dev" + }, + "laravel": { + "providers": [ + "Spatie\\Permission\\PermissionServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\Permission\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Permission handling for Laravel 8.0 and up", + "homepage": "https://github.com/spatie/laravel-permission", + "keywords": [ + "acl", + "laravel", + "permission", + "permissions", + "rbac", + "roles", + "security", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/laravel-permission/issues", + "source": "https://github.com/spatie/laravel-permission/tree/6.7.0" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2024-04-19T12:35:28+00:00" + }, { "name": "symfony/console", "version": "v6.4.3", diff --git a/config/app.php b/config/app.php index c5ca79a..d39bbb2 100644 --- a/config/app.php +++ b/config/app.php @@ -173,6 +173,7 @@ return [ // App\Providers\LaravelInstallerServiceProvider::class, Bibhuti\Installer\Providers\LaravelInstallerServiceProvider::class, Brian2694\Toastr\ToastrServiceProvider::class, + Spatie\Permission\PermissionServiceProvider::class, ])->toArray(), diff --git a/config/permission.php b/config/permission.php new file mode 100644 index 0000000..2a520f3 --- /dev/null +++ b/config/permission.php @@ -0,0 +1,186 @@ + [ + + /* + * When using the "HasPermissions" trait from this package, we need to know which + * Eloquent model should be used to retrieve your permissions. Of course, it + * is often just the "Permission" model but you may use whatever you like. + * + * The model you want to use as a Permission model needs to implement the + * `Spatie\Permission\Contracts\Permission` contract. + */ + + 'permission' => Spatie\Permission\Models\Permission::class, + + /* + * When using the "HasRoles" trait from this package, we need to know which + * Eloquent model should be used to retrieve your roles. Of course, it + * is often just the "Role" model but you may use whatever you like. + * + * The model you want to use as a Role model needs to implement the + * `Spatie\Permission\Contracts\Role` contract. + */ + + 'role' => Spatie\Permission\Models\Role::class, + + ], + + 'table_names' => [ + + /* + * When using the "HasRoles" trait from this package, we need to know which + * table should be used to retrieve your roles. We have chosen a basic + * default value but you may easily change it to any table you like. + */ + + 'roles' => 'roles', + + /* + * When using the "HasPermissions" trait from this package, we need to know which + * table should be used to retrieve your permissions. We have chosen a basic + * default value but you may easily change it to any table you like. + */ + + 'permissions' => 'permissions', + + /* + * When using the "HasPermissions" trait from this package, we need to know which + * table should be used to retrieve your models permissions. We have chosen a + * basic default value but you may easily change it to any table you like. + */ + + 'model_has_permissions' => 'model_has_permissions', + + /* + * When using the "HasRoles" trait from this package, we need to know which + * table should be used to retrieve your models roles. We have chosen a + * basic default value but you may easily change it to any table you like. + */ + + 'model_has_roles' => 'model_has_roles', + + /* + * When using the "HasRoles" trait from this package, we need to know which + * table should be used to retrieve your roles permissions. We have chosen a + * basic default value but you may easily change it to any table you like. + */ + + 'role_has_permissions' => 'role_has_permissions', + ], + + 'column_names' => [ + /* + * Change this if you want to name the related pivots other than defaults + */ + 'role_pivot_key' => null, //default 'role_id', + 'permission_pivot_key' => null, //default 'permission_id', + + /* + * Change this if you want to name the related model primary key other than + * `model_id`. + * + * For example, this would be nice if your primary keys are all UUIDs. In + * that case, name this `model_uuid`. + */ + + 'model_morph_key' => 'model_id', + + /* + * Change this if you want to use the teams feature and your related model's + * foreign key is other than `team_id`. + */ + + 'team_foreign_key' => 'team_id', + ], + + /* + * When set to true, the method for checking permissions will be registered on the gate. + * Set this to false if you want to implement custom logic for checking permissions. + */ + + 'register_permission_check_method' => true, + + /* + * When set to true, Laravel\Octane\Events\OperationTerminated event listener will be registered + * this will refresh permissions on every TickTerminated, TaskTerminated and RequestTerminated + * NOTE: This should not be needed in most cases, but an Octane/Vapor combination benefited from it. + */ + 'register_octane_reset_listener' => false, + + /* + * Teams Feature. + * When set to true the package implements teams using the 'team_foreign_key'. + * If you want the migrations to register the 'team_foreign_key', you must + * set this to true before doing the migration. + * If you already did the migration then you must make a new migration to also + * add 'team_foreign_key' to 'roles', 'model_has_roles', and 'model_has_permissions' + * (view the latest version of this package's migration file) + */ + + 'teams' => false, + + /* + * Passport Client Credentials Grant + * When set to true the package will use Passports Client to check permissions + */ + + 'use_passport_client_credentials' => false, + + /* + * When set to true, the required permission names are added to exception messages. + * This could be considered an information leak in some contexts, so the default + * setting is false here for optimum safety. + */ + + 'display_permission_in_exception' => false, + + /* + * When set to true, the required role names are added to exception messages. + * This could be considered an information leak in some contexts, so the default + * setting is false here for optimum safety. + */ + + 'display_role_in_exception' => false, + + /* + * By default wildcard permission lookups are disabled. + * See documentation to understand supported syntax. + */ + + 'enable_wildcard_permission' => false, + + /* + * The class to use for interpreting wildcard permissions. + * If you need to modify delimiters, override the class and specify its name here. + */ + // 'permission.wildcard_permission' => Spatie\Permission\WildcardPermission::class, + + /* Cache-specific settings */ + + 'cache' => [ + + /* + * By default all permissions are cached for 24 hours to speed up performance. + * When permissions or roles are updated the cache is flushed automatically. + */ + + 'expiration_time' => \DateInterval::createFromDateString('24 hours'), + + /* + * The cache key used to store all permissions. + */ + + 'key' => 'spatie.permission.cache', + + /* + * You may optionally indicate a specific cache driver to use for permission and + * role caching using any of the `store` drivers listed in the cache.php config + * file. Using 'default' here means to use the `default` set in cache.php. + */ + + 'store' => 'default', + ], +]; diff --git a/database/migrations/2024_06_20_041653_create_permission_tables.php b/database/migrations/2024_06_20_041653_create_permission_tables.php new file mode 100644 index 0000000..b865d48 --- /dev/null +++ b/database/migrations/2024_06_20_041653_create_permission_tables.php @@ -0,0 +1,138 @@ +bigIncrements('id'); // permission id + $table->string('name'); // For MySQL 8.0 use string('name', 125); + $table->string('guard_name'); // For MySQL 8.0 use string('guard_name', 125); + $table->timestamps(); + + $table->unique(['name', 'guard_name']); + }); + + Schema::create($tableNames['roles'], function (Blueprint $table) use ($teams, $columnNames) { + $table->bigIncrements('id'); // role id + if ($teams || config('permission.testing')) { // permission.testing is a fix for sqlite testing + $table->unsignedBigInteger($columnNames['team_foreign_key'])->nullable(); + $table->index($columnNames['team_foreign_key'], 'roles_team_foreign_key_index'); + } + $table->string('name'); // For MySQL 8.0 use string('name', 125); + $table->string('guard_name'); // For MySQL 8.0 use string('guard_name', 125); + $table->timestamps(); + if ($teams || config('permission.testing')) { + $table->unique([$columnNames['team_foreign_key'], 'name', 'guard_name']); + } else { + $table->unique(['name', 'guard_name']); + } + }); + + Schema::create($tableNames['model_has_permissions'], function (Blueprint $table) use ($tableNames, $columnNames, $pivotPermission, $teams) { + $table->unsignedBigInteger($pivotPermission); + + $table->string('model_type'); + $table->unsignedBigInteger($columnNames['model_morph_key']); + $table->index([$columnNames['model_morph_key'], 'model_type'], 'model_has_permissions_model_id_model_type_index'); + + $table->foreign($pivotPermission) + ->references('id') // permission id + ->on($tableNames['permissions']) + ->onDelete('cascade'); + if ($teams) { + $table->unsignedBigInteger($columnNames['team_foreign_key']); + $table->index($columnNames['team_foreign_key'], 'model_has_permissions_team_foreign_key_index'); + + $table->primary([$columnNames['team_foreign_key'], $pivotPermission, $columnNames['model_morph_key'], 'model_type'], + 'model_has_permissions_permission_model_type_primary'); + } else { + $table->primary([$pivotPermission, $columnNames['model_morph_key'], 'model_type'], + 'model_has_permissions_permission_model_type_primary'); + } + + }); + + Schema::create($tableNames['model_has_roles'], function (Blueprint $table) use ($tableNames, $columnNames, $pivotRole, $teams) { + $table->unsignedBigInteger($pivotRole); + + $table->string('model_type'); + $table->unsignedBigInteger($columnNames['model_morph_key']); + $table->index([$columnNames['model_morph_key'], 'model_type'], 'model_has_roles_model_id_model_type_index'); + + $table->foreign($pivotRole) + ->references('id') // role id + ->on($tableNames['roles']) + ->onDelete('cascade'); + if ($teams) { + $table->unsignedBigInteger($columnNames['team_foreign_key']); + $table->index($columnNames['team_foreign_key'], 'model_has_roles_team_foreign_key_index'); + + $table->primary([$columnNames['team_foreign_key'], $pivotRole, $columnNames['model_morph_key'], 'model_type'], + 'model_has_roles_role_model_type_primary'); + } else { + $table->primary([$pivotRole, $columnNames['model_morph_key'], 'model_type'], + 'model_has_roles_role_model_type_primary'); + } + }); + + Schema::create($tableNames['role_has_permissions'], function (Blueprint $table) use ($tableNames, $pivotRole, $pivotPermission) { + $table->unsignedBigInteger($pivotPermission); + $table->unsignedBigInteger($pivotRole); + + $table->foreign($pivotPermission) + ->references('id') // permission id + ->on($tableNames['permissions']) + ->onDelete('cascade'); + + $table->foreign($pivotRole) + ->references('id') // role id + ->on($tableNames['roles']) + ->onDelete('cascade'); + + $table->primary([$pivotPermission, $pivotRole], 'role_has_permissions_permission_id_role_id_primary'); + }); + + app('cache') + ->store(config('permission.cache.store') != 'default' ? config('permission.cache.store') : null) + ->forget(config('permission.cache.key')); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + $tableNames = config('permission.table_names'); + + if (empty($tableNames)) { + throw new \Exception('Error: config/permission.php not found and defaults could not be merged. Please publish the package configuration before proceeding, or drop the tables manually.'); + } + + Schema::drop($tableNames['role_has_permissions']); + Schema::drop($tableNames['model_has_roles']); + Schema::drop($tableNames['model_has_permissions']); + Schema::drop($tableNames['roles']); + Schema::drop($tableNames['permissions']); + } +}; diff --git a/database/seeders/AdsCategorySeeder.php b/database/seeders/AdsCategorySeeder.php new file mode 100644 index 0000000..bac8ca5 --- /dev/null +++ b/database/seeders/AdsCategorySeeder.php @@ -0,0 +1,220 @@ + 1, + 'title' => 'navbar', + 'alias' => 'navbar', + 'status' => 1, + 'display_order' => 1, + 'createdBy' => 1, + 'updatedBy' => 1, + 'created_at' => now(), + 'updated_at' => now() + ]); + + Adcategories::create([ + 'category_id' => 2, + 'title' => 'header', + 'alias' => 'header', + 'status' => 1, + 'display_order' => 2, + 'createdBy' => 1, + 'updatedBy' => 1, + 'created_at' => now(), + 'updated_at' => now() + ]); + + Adcategories::create([ + 'category_id' => 3, + 'title' => 'feature-news', + 'alias' => 'feature-news', + 'status' => 1, + 'display_order' => 3, + 'createdBy' => 1, + 'updatedBy' => 1, + 'created_at' => now(), + 'updated_at' => now() + ]); + + Adcategories::create([ + 'category_id' => 4, + 'title' => 'province', + 'alias' => 'province', + 'status' => 1, + 'display_order' => 4, + 'createdBy' => 1, + 'updatedBy' => 1, + 'created_at' => now(), + 'updated_at' => now() + ]); + + Adcategories::create([ + 'category_id' => 5, + 'title' => 'int-sidebar', + 'alias' => 'int-sidebar', + 'status' => 1, + 'display_order' => 5, + 'createdBy' => 1, + 'updatedBy' => 1, + 'created_at' => now(), + 'updated_at' => now() + ]); + Adcategories::create([ + 'category_id' => 6, + 'title' => 'politics', + 'alias' => 'politics', + 'status' => 1, + 'display_order' => 6, + 'createdBy' => 1, + 'updatedBy' => 1, + 'created_at' => now(), + 'updated_at' => now() + ]); + + Adcategories::create([ + 'category_id' => 7, + 'title' => 'politics-sidebar', + 'alias' => 'politics-sidebar', + 'status' => 1, + 'display_order' => 7, + 'createdBy' => 1, + 'updatedBy' => 1, + 'created_at' => now(), + 'updated_at' => now() + ]); + + Adcategories::create([ + 'category_id' => 8, + 'title' => 'economics', + 'alias' => 'economics', + 'status' => 1, + 'display_order' => 8, + 'createdBy' => 1, + 'updatedBy' => 1, + 'created_at' => now(), + 'updated_at' => now() + ]); + + Adcategories::create([ + 'category_id' => 9, + 'title' => 'economics-sidebar', + 'alias' => 'economics-sidebar', + 'status' => 1, + 'display_order' => 9, + 'createdBy' => 1, + 'updatedBy' => 1, + 'created_at' => now(), + 'updated_at' => now() + ]); + + Adcategories::create([ + 'category_id' => 10, + 'title' => 'cul-tech', + 'alias' => 'cul-tech', + 'status' => 1, + 'display_order' => 10, + 'createdBy' => 1, + 'updatedBy' => 1, + 'created_at' => now(), + 'updated_at' => now() + ]); + + Adcategories::create([ + 'category_id' => 11, + 'title' => 'cul-tech-sidebar', + 'alias' => 'cul-tech-sidebar', + 'status' => 1, + 'display_order' => 11, + 'createdBy' => 1, + 'updatedBy' => 1, + 'created_at' => now(), + 'updated_at' => now() + ]); + + Adcategories::create([ + 'category_id' => 12, + 'title' => 'feature', + 'alias' => 'feature', + 'status' => 1, + 'display_order' => 12, + 'createdBy' => 1, + 'updatedBy' => 1, + 'created_at' => now(), + 'updated_at' => now() + ]); + + Adcategories::create([ + 'category_id' => 13, + 'title' => 'feature-sidebar', + 'alias' => 'feature-sidebar', + 'status' => 1, + 'display_order' => 13, + 'createdBy' => 1, + 'updatedBy' => 1, + 'created_at' => now(), + 'updated_at' => now() + ]); + + Adcategories::create([ + 'category_id' => 14, + 'title' => 'video', + 'alias' => 'video', + 'status' => 1, + 'display_order' => 14, + 'createdBy' => 1, + 'updatedBy' => 1, + 'created_at' => now(), + 'updated_at' => now() + ]); + + Adcategories::create([ + 'category_id' => 15, + 'title' => 'health', + 'alias' => 'health', + 'status' => 1, + 'display_order' => 15, + 'createdBy' => 1, + 'updatedBy' => 1, + 'created_at' => now(), + 'updated_at' => now() + ]); + + Adcategories::create([ + 'category_id' => 16, + 'title' => 'inner-page-bottom', + 'alias' => 'inner-page-bottom', + 'status' => 1, + 'display_order' => 16, + 'createdBy' => 1, + 'updatedBy' => 1, + 'created_at' => now(), + 'updated_at' => now() + ]); + + + Adcategories::create([ + 'category_id' => 17, + 'title' => 'inner-page-header', + 'alias' => 'inner-page-header', + 'status' => 1, + 'display_order' => 17, + 'createdBy' => 1, + 'updatedBy' => 1, + 'created_at' => now(), + 'updated_at' => now() + ]); + } +} diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 6313d14..fd02078 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -12,11 +12,13 @@ class DatabaseSeeder extends Seeder */ public function run(): void { + $this->call(RoleSeeder::class); $this->call(UserSeeder::class); $this->call(ProvinceSeeder::class); $this->call(NewsTypeSeeder::class); $this->call(NewsCategorySeeder::class); $this->call(HoroscopeSeeder::class); $this->call(WebsiteSettingSeeder::class); + $this->call(AdsCategorySeeder::class); } } diff --git a/database/seeders/RoleSeeder.php b/database/seeders/RoleSeeder.php new file mode 100644 index 0000000..700136e --- /dev/null +++ b/database/seeders/RoleSeeder.php @@ -0,0 +1,20 @@ + 'admin']); + $role = Role::create(['name' => 'editor']); + $role = Role::create(['name' => 'user']); + } +} diff --git a/database/seeders/UserSeeder.php b/database/seeders/UserSeeder.php index 4b73355..393ad28 100644 --- a/database/seeders/UserSeeder.php +++ b/database/seeders/UserSeeder.php @@ -17,10 +17,9 @@ class UserSeeder extends Seeder 'name' => 'Prajwal Adhikari', 'email' => 'prajwalbro@hotmail.com', 'username' => 'prajwalbro', - 'password' => '$2y$10$3zlF9VeXexzWKRDPZuDio.W7RZIC3tU.cjwMoLzG8ki8bVwAQn1WW', + 'password' => bcrypt('p@ssw0rd'), 'status' => 1, - 'role' => 'super_admin' - - ]); + 'email_verified_at' => now(), + ])->assignRole('admin', 'editor'); } } diff --git a/resources/views/backend/sidebar.blade.php b/resources/views/backend/sidebar.blade.php index 2167380..79dd31e 100644 --- a/resources/views/backend/sidebar.blade.php +++ b/resources/views/backend/sidebar.blade.php @@ -81,18 +81,55 @@ - {{ CCMS::createMenuLink('Provinces', route('provinces.index')) }} - {{ CCMS::createMenuLink('News Type', route('news_type.index')) }} - {{ CCMS::createMenuLink('News Categories', route('newscategories.index')) }} - {{ CCMS::createMenuLink('News', route('news.index')) }} - {{ CCMS::createMenuLink('Authors', route('authors.index')) }} - {{ CCMS::createMenuLink('Economy', route('economies.index')) }} - {{ CCMS::createMenuLink('Videos', route('videos.index')) }} - {{ CCMS::createMenuLink('Horoscope', route('horoscope.index')) }} - {{ CCMS::createMenuLink('Artilces', route('articles.index')) }} - {{ CCMS::createMenuLink('Teams', route('teams.index')) }} - {{ CCMS::createMenuLink('Advertisements', route('advertisements.index')) }} - {{ CCMS::createMenuLink('Ad Category', route('adcategories.index')) }} + + + + @role('admin') + + @endrole + + {{ CCMS::createMenuLink('Provinces', route('provinces.index')) }} + {{ CCMS::createMenuLink('Authors', route('authors.index')) }} + {{ CCMS::createMenuLink('Economy', route('economies.index')) }} + {{ CCMS::createMenuLink('Videos', route('videos.index')) }} + {{ CCMS::createMenuLink('Horoscope', route('horoscope.index')) }} + {{ CCMS::createMenuLink('Artilces', route('articles.index')) }} + {{ CCMS::createMenuLink('Teams', route('teams.index')) }} diff --git a/resources/views/crud/generated/permissions/create.blade.php b/resources/views/crud/generated/permissions/create.blade.php new file mode 100644 index 0000000..79b593f --- /dev/null +++ b/resources/views/crud/generated/permissions/create.blade.php @@ -0,0 +1,17 @@ +@extends('backend.template') + @section('content') +
+
+

{{ label('Add Permissions') }}

+ + +
+
+
+ @csrf +
{{createText("name","name","Name")}} +
{{createText("guard_name","guard_name","Guard Name")}} +

+ +
+@endsection \ No newline at end of file diff --git a/resources/views/crud/generated/permissions/edit.blade.php b/resources/views/crud/generated/permissions/edit.blade.php new file mode 100644 index 0000000..509163f --- /dev/null +++ b/resources/views/crud/generated/permissions/edit.blade.php @@ -0,0 +1,25 @@ +@extends('backend.template') +@section('content') +
+
+

{{ label('Edit Permissions') }}

+ + +
+
+
+ @csrf + @method('PUT') + +
+
{{ createText('name', 'name', 'Name', '', $data->name) }} +
+
{{ createText('guard_name', 'guard_name', 'Guard Name', '', $data->guard_name) }} +
+
+ +
+ +
+
+@endsection diff --git a/resources/views/crud/generated/permissions/index.blade.php b/resources/views/crud/generated/permissions/index.blade.php new file mode 100644 index 0000000..e6936e2 --- /dev/null +++ b/resources/views/crud/generated/permissions/index.blade.php @@ -0,0 +1,185 @@ +@extends('backend.template') +@section('content') +
+
+

{{ label('Permissions List') }}

+ {{ label('Create New') }} +
+
+ + + + + + + + + + + @php + $i = 1; + @endphp + @foreach ($data as $item) + + + + + + + @endforeach + + +
{{ label('Sn.') }}{{ label('name') }}{{ label('guard_name') }}{{ label('Action') }} +
{{ $i++ }}{{ $item->name }}{{ $item->guard_name }} + + + +
+ + +
+
+@endsection + +@push('css') + + +@endpush +@push('js') + + + + + + + + + + +@endpush diff --git a/resources/views/crud/generated/permissions/show.blade.php b/resources/views/crud/generated/permissions/show.blade.php new file mode 100644 index 0000000..0df399a --- /dev/null +++ b/resources/views/crud/generated/permissions/show.blade.php @@ -0,0 +1,28 @@ +@extends('backend.template') + @section('content') +
+
+

+ + +
+
+ + + +

Name :     {{$data->name}}

Guard Name :     {{$data->guard_name}}

+
+

Created On :   {{$data->created_at}}

+

Created By :   {{$data->createdBy}}

+
+
+

Updated On :   {{$data->updated_at}}

+

Updated By :   {{$data->updatedBy}}

+ +
+
+ +
+
+ +@endSection \ No newline at end of file diff --git a/resources/views/crud/generated/roles/create.blade.php b/resources/views/crud/generated/roles/create.blade.php new file mode 100644 index 0000000..7f47474 --- /dev/null +++ b/resources/views/crud/generated/roles/create.blade.php @@ -0,0 +1,34 @@ +@extends('backend.template') +@section('content') +
+
+

{{ label('Add Roles') }}

+ + +
+
+
+ @csrf +
+
{{ createText('name', 'name', 'Name') }} +
+
{{ createText('guard_name', 'guard_name', 'Guard Name') }} +
+
+ + +
+
+ +
+ +
+
+@endsection + + diff --git a/resources/views/crud/generated/roles/edit.blade.php b/resources/views/crud/generated/roles/edit.blade.php new file mode 100644 index 0000000..9cd3fe8 --- /dev/null +++ b/resources/views/crud/generated/roles/edit.blade.php @@ -0,0 +1,69 @@ +@extends('backend.template') + +@section('content') +
+
+
+

{{ __('Edit Roles') }}

+ Cancel +
+ +
+
+ @csrf + @method('PUT') + + + +
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + Cancel +
+
+
+
+
+ +
+
+

{{ __('Roles with permissions') }}

+
+
+ @if ($data->permissions) + @foreach ($data->permissions as $role_permission) +
+ @csrf + @method('DELETE') + +
+ @endforeach + @endif + +
+
+
+@endsection diff --git a/resources/views/crud/generated/roles/index.blade.php b/resources/views/crud/generated/roles/index.blade.php new file mode 100644 index 0000000..0128d57 --- /dev/null +++ b/resources/views/crud/generated/roles/index.blade.php @@ -0,0 +1,185 @@ +@extends('backend.template') +@section('content') +
+
+

{{ label('Roles List') }}

+ {{ label('Create New') }} +
+
+ + + + + + + + + + + @php + $i = 1; + @endphp + @foreach ($data as $item) + + + + + + + @endforeach + + +
{{ label('Sn.') }}{{ label('name') }}{{ label('guard_name') }}{{ label('Action') }} +
{{ $i++ }}{{ $item->name }}{{ $item->guard_name }} + + + +
+ + +
+
+@endsection + +@push('css') + + +@endpush +@push('js') + + + + + + + + + + +@endpush diff --git a/resources/views/crud/generated/roles/show.blade.php b/resources/views/crud/generated/roles/show.blade.php new file mode 100644 index 0000000..c835707 --- /dev/null +++ b/resources/views/crud/generated/roles/show.blade.php @@ -0,0 +1,28 @@ +@extends('backend.template') + @section('content') +
+
+

+ + +
+
+ + + +

Name :     {{$data->name}}

Guard Name :     {{$data->guard_name}}

+
+

Created On :   {{$data->created_at}}

+

Created By :   {{$data->createdBy}}

+
+
+

Updated On :   {{$data->updated_at}}

+

Updated By :   {{$data->updatedBy}}

+ +
+
+ +
+
+ +@endSection \ No newline at end of file diff --git a/resources/views/crud/generated/users/create.blade.php b/resources/views/crud/generated/users/create.blade.php new file mode 100644 index 0000000..0acde48 --- /dev/null +++ b/resources/views/crud/generated/users/create.blade.php @@ -0,0 +1,25 @@ +@extends('backend.template') +@section('content') +
+
+

{{ label('Add Users') }}

+ + +
+
+
+ @csrf +
+
{{ createText('name', 'name', 'Name') }} +
+
{{ createText('email', 'email', 'Email') }} +
+
{{ createText('username', 'username', 'Username') }} +
+
+ +
+ +
+
+@endsection diff --git a/resources/views/crud/generated/users/edit.blade.php b/resources/views/crud/generated/users/edit.blade.php new file mode 100644 index 0000000..8904376 --- /dev/null +++ b/resources/views/crud/generated/users/edit.blade.php @@ -0,0 +1,100 @@ +@extends('backend.template') + +@section('content') +
+
+
+
+

{{ __('Edit Users') }}

+ Cancel +
+
+
+ @csrf + @method('POST') + +
+
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+
+ + Cancel +
+
+
+
+
+
+ +
+
+
+
+

{{ __('Roles') }}

+
+
+ @if ($data->roles) + @foreach ($data->roles as $user_role) +
+ @csrf + @method('DELETE') + +
+ @endforeach + @endif +
+
+
+
+
+
+

{{ __('Permissions') }}

+
+
+ @if ($data->permissions) + @foreach ($data->permissions as $user_permission) +
+ @csrf + @method('DELETE') + +
+ @endforeach + @endif +
+
+
+
+
+@endsection diff --git a/resources/views/crud/generated/users/index.blade.php b/resources/views/crud/generated/users/index.blade.php new file mode 100644 index 0000000..fb4925c --- /dev/null +++ b/resources/views/crud/generated/users/index.blade.php @@ -0,0 +1,187 @@ +@extends('backend.template') +@section('content') +
+
+

{{ label('Users List') }}

+ {{-- {{ label('Create New') }} --}} +
+
+ + + + + + + + + + + + @php + $i = 1; + @endphp + @foreach ($data as $item) + + + + + + + + @endforeach + + +
{{ label('Sn.') }}{{ label('name') }}{{ label('email') }}{{ label('username') }}{{ label('Action') }} +
{{ $i++ }}{{ $item->name }}{{ $item->email }}{{ $item->username }} + + + +
+ + +
+
+@endsection + +@push('css') + + +@endpush +@push('js') + + + + + + + + + + +@endpush diff --git a/resources/views/crud/generated/users/show.blade.php b/resources/views/crud/generated/users/show.blade.php new file mode 100644 index 0000000..e13be0c --- /dev/null +++ b/resources/views/crud/generated/users/show.blade.php @@ -0,0 +1,29 @@ +@extends('backend.template') + @section('content') +
+
+

+ + +
+
+ + + +

Name :     {{$data->name}}

Email :     {{$data->email}}

Username :     {{$data->username}}

Email Verified At :     {{$data->email_verified_at}}

Password :     {{$data->password}}

Role :     {{$data->role}}

Remember Token :     {{$data->remember_token}}

Status :     {{$data->status == 1 ? 'Active' : 'Inactive'}}

+
+

Created On :   {{$data->created_at}}

+

Created By :   {{$data->createdBy}}

+
+
+

Updated On :   {{$data->updated_at}}

+

Updated By :   {{$data->updatedBy}}

+ +
+
+ +
+
+ +@endSection \ No newline at end of file diff --git a/resources/views/hulaki_khabar/Auth/login.blade.php b/resources/views/hulaki_khabar/Auth/login.blade.php index 9cf0f66..f15e35c 100644 --- a/resources/views/hulaki_khabar/Auth/login.blade.php +++ b/resources/views/hulaki_khabar/Auth/login.blade.php @@ -42,7 +42,7 @@
diff --git a/resources/views/hulaki_khabar/Auth/registration.blade.php b/resources/views/hulaki_khabar/Auth/registration.blade.php index f8e1268..a9c3e73 100644 --- a/resources/views/hulaki_khabar/Auth/registration.blade.php +++ b/resources/views/hulaki_khabar/Auth/registration.blade.php @@ -19,22 +19,24 @@

रजिस्टर

-
+ + @csrf + @method('POST')
- +
- +
- +
- +
@@ -47,7 +49,7 @@
@@ -56,21 +58,21 @@ @push('js')