added permission checker for data master
This commit is contained in:
@@ -67,3 +67,7 @@ AWS_BUCKET=
|
|||||||
AWS_USE_PATH_STYLE_ENDPOINT=false
|
AWS_USE_PATH_STYLE_ENDPOINT=false
|
||||||
|
|
||||||
VITE_APP_NAME="${APP_NAME}"
|
VITE_APP_NAME="${APP_NAME}"
|
||||||
|
|
||||||
|
NEXT_CLOUD_URL=https://mkt.tunggal-pharma.com/
|
||||||
|
NEXT_CLOUD_USERNAME=user_dev
|
||||||
|
NEXT_CLOUD_PASSWORD=userdev12345
|
||||||
|
|||||||
@@ -64,3 +64,7 @@ AWS_BUCKET=
|
|||||||
AWS_USE_PATH_STYLE_ENDPOINT=false
|
AWS_USE_PATH_STYLE_ENDPOINT=false
|
||||||
|
|
||||||
VITE_APP_NAME="${APP_NAME}"
|
VITE_APP_NAME="${APP_NAME}"
|
||||||
|
|
||||||
|
NEXT_CLOUD_URL=
|
||||||
|
NEXT_CLOUD_USERNAME=
|
||||||
|
NEXT_CLOUD_PASSWORD=
|
||||||
|
|||||||
@@ -0,0 +1,129 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Helpers;
|
||||||
|
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Exception\RequestException;
|
||||||
|
|
||||||
|
class NextCloudHelper
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Create a folder in Nextcloud.
|
||||||
|
*
|
||||||
|
* @param string $baseUrl Nextcloud Base URL
|
||||||
|
* @param string $username Nextcloud Username
|
||||||
|
* @param string $password Nextcloud Password
|
||||||
|
* @param string $folderPath Folder Path to Create
|
||||||
|
* @return array Response Data
|
||||||
|
*/
|
||||||
|
public static function createFolder($baseUrl, $username, $password, $folderPath)
|
||||||
|
{
|
||||||
|
$client = new Client();
|
||||||
|
$url = rtrim($baseUrl, '/') . "/remote.php/dav/files/{$username}/" . ltrim($folderPath, '/');
|
||||||
|
|
||||||
|
try {
|
||||||
|
$response = $client->request('MKCOL', $url, [
|
||||||
|
'auth' => [$username, $password]
|
||||||
|
]);
|
||||||
|
|
||||||
|
return [
|
||||||
|
'success' => true,
|
||||||
|
'status' => $response->getStatusCode(),
|
||||||
|
'message' => 'Folder created successfully.'
|
||||||
|
];
|
||||||
|
} catch (RequestException $e) {
|
||||||
|
return [
|
||||||
|
'success' => false,
|
||||||
|
'status' => $e->getCode(),
|
||||||
|
'message' => $e->getMessage(),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a user in Nextcloud.
|
||||||
|
*
|
||||||
|
* @param string $baseUrl Nextcloud Base URL
|
||||||
|
* @param string $adminUsername Admin Username
|
||||||
|
* @param string $adminPassword Admin Password
|
||||||
|
* @param string $userId New User ID
|
||||||
|
* @param string $password New User Password
|
||||||
|
* @param string $displayName New User Display Name
|
||||||
|
* @param string $email New User Email
|
||||||
|
* @return array Response Data
|
||||||
|
*/
|
||||||
|
public static function createUser($baseUrl, $adminUsername, $adminPassword, $userId, $password, $displayName, $email)
|
||||||
|
{
|
||||||
|
$client = new Client();
|
||||||
|
$url = rtrim($baseUrl, '/') . "/mktia/ocs/v1.php/cloud/users";
|
||||||
|
|
||||||
|
try {
|
||||||
|
$response = $client->request('POST', $url, [
|
||||||
|
'auth' => [$adminUsername, $adminPassword],
|
||||||
|
'headers' => [
|
||||||
|
'OCS-APIRequest' => 'true',
|
||||||
|
],
|
||||||
|
'form_params' => [
|
||||||
|
'userid' => $userId,
|
||||||
|
'password' => $password,
|
||||||
|
'displayName' => $displayName,
|
||||||
|
'email' => $email
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
|
||||||
|
return [
|
||||||
|
'success' => true,
|
||||||
|
'status' => $response->getStatusCode(),
|
||||||
|
'message' => 'User created successfully.'
|
||||||
|
];
|
||||||
|
} catch (RequestException $e) {
|
||||||
|
return [
|
||||||
|
'success' => false,
|
||||||
|
'status' => $e->getCode(),
|
||||||
|
'message' => $e->getMessage(),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a user to a group in Nextcloud.
|
||||||
|
*
|
||||||
|
* @param string $baseUrl Nextcloud Base URL
|
||||||
|
* @param string $adminUsername Admin Username
|
||||||
|
* @param string $adminPassword Admin Password
|
||||||
|
* @param string $userId New User ID
|
||||||
|
* @param string $groupName Group Name
|
||||||
|
* @return array Response Data
|
||||||
|
*/
|
||||||
|
public static function addUserToGroup($baseUrl, $adminUsername, $adminPassword, $userId, $groupName)
|
||||||
|
{
|
||||||
|
$client = new Client();
|
||||||
|
$url = rtrim($baseUrl, '/') . "/mktia/ocs/v1.php/cloud/groups/{$groupName}";
|
||||||
|
|
||||||
|
try {
|
||||||
|
$response = $client->request('POST', $url, [
|
||||||
|
'auth' => [$adminUsername, $adminPassword],
|
||||||
|
'headers' => [
|
||||||
|
'OCS-APIRequest' => 'true',
|
||||||
|
],
|
||||||
|
'form_params' => [
|
||||||
|
'userid' => $userId
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
|
||||||
|
return [
|
||||||
|
'success' => true,
|
||||||
|
'status' => $response->getStatusCode(),
|
||||||
|
'message' => 'User added to group successfully.'
|
||||||
|
];
|
||||||
|
} catch (RequestException $e) {
|
||||||
|
return [
|
||||||
|
'success' => false,
|
||||||
|
'status' => $e->getCode(),
|
||||||
|
'message' => $e->getMessage(),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -11,6 +11,7 @@ use Illuminate\Contracts\Support\Renderable;
|
|||||||
use Illuminate\Http\RedirectResponse;
|
use Illuminate\Http\RedirectResponse;
|
||||||
use Illuminate\Support\Facades\Hash;
|
use Illuminate\Support\Facades\Hash;
|
||||||
use Spatie\Permission\Models\Role;
|
use Spatie\Permission\Models\Role;
|
||||||
|
use App\Helpers\NextcloudHelper;
|
||||||
|
|
||||||
class AdminsController extends Controller
|
class AdminsController extends Controller
|
||||||
{
|
{
|
||||||
@@ -63,8 +64,16 @@ class AdminsController extends Controller
|
|||||||
$admin->assignRole($request->roles);
|
$admin->assignRole($request->roles);
|
||||||
}
|
}
|
||||||
|
|
||||||
session()->flash('success', __('Admin has been created.'));
|
// Create a folder in Nextcloud
|
||||||
return redirect()->route('admin.admins.index');
|
$response = NextcloudHelper::createUser(env('NEXT_CLOUD_URL'), env('NEXT_CLOUD_USERNAME'), env('NEXT_CLOUD_PASSWORD'), $request->username, $request->password, $request->name, $request->email);
|
||||||
|
|
||||||
|
if ($response['success']) {
|
||||||
|
session()->flash('success', __('Admin has been created.'));
|
||||||
|
return redirect()->route('admin.admins.index');
|
||||||
|
} else {
|
||||||
|
session()->flash('error', $response['message']);
|
||||||
|
return redirect()->route('admin.admins.index');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function edit(int $id): Renderable
|
public function edit(int $id): Renderable
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ class CategoryController extends Controller
|
|||||||
{
|
{
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
|
$this->checkAuthorization(auth()->user(), ['category.view']);
|
||||||
return view('backend.pages.master.category.index', [
|
return view('backend.pages.master.category.index', [
|
||||||
'categories' => Kategori::all()
|
'categories' => Kategori::all()
|
||||||
]);
|
]);
|
||||||
@@ -17,11 +18,13 @@ class CategoryController extends Controller
|
|||||||
|
|
||||||
public function create()
|
public function create()
|
||||||
{
|
{
|
||||||
|
$this->checkAuthorization(auth()->user(), ['category.create']);
|
||||||
return view('backend.pages.master.category.create');
|
return view('backend.pages.master.category.create');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function store(Request $request)
|
public function store(Request $request)
|
||||||
{
|
{
|
||||||
|
$this->checkAuthorization(auth()->user(), ['category.create']);
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'name' => 'required|unique:kategori,name',
|
'name' => 'required|unique:kategori,name',
|
||||||
'account_number' => 'required|unique:kategori,account_number'
|
'account_number' => 'required|unique:kategori,account_number'
|
||||||
@@ -38,6 +41,7 @@ class CategoryController extends Controller
|
|||||||
|
|
||||||
public function edit($id)
|
public function edit($id)
|
||||||
{
|
{
|
||||||
|
$this->checkAuthorization(auth()->user(), ['category.edit']);
|
||||||
return view('backend.pages.master.category.edit', [
|
return view('backend.pages.master.category.edit', [
|
||||||
'category' => Kategori::findOrfail($id)
|
'category' => Kategori::findOrfail($id)
|
||||||
]);
|
]);
|
||||||
@@ -45,6 +49,7 @@ class CategoryController extends Controller
|
|||||||
|
|
||||||
public function update(Request $request, $id)
|
public function update(Request $request, $id)
|
||||||
{
|
{
|
||||||
|
$this->checkAuthorization(auth()->user(), ['category.edit']);
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'name' => 'required|unique:kategori,name,' . $id . ',id',
|
'name' => 'required|unique:kategori,name,' . $id . ',id',
|
||||||
'account_number' => 'required|unique:kategori,account_number,' . $id . ',id'
|
'account_number' => 'required|unique:kategori,account_number,' . $id . ',id'
|
||||||
@@ -61,6 +66,7 @@ class CategoryController extends Controller
|
|||||||
|
|
||||||
public function destroy($id)
|
public function destroy($id)
|
||||||
{
|
{
|
||||||
|
$this->checkAuthorization(auth()->user(), ['category.delete']);
|
||||||
Kategori::findOrfail($id)->delete();
|
Kategori::findOrfail($id)->delete();
|
||||||
|
|
||||||
session()->flash('success', 'Category has been deleted.');
|
session()->flash('success', 'Category has been deleted.');
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ class CostCentreController extends Controller
|
|||||||
{
|
{
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
|
$this->checkAuthorization(auth()->user(), ['cost.view']);
|
||||||
return view('backend.pages.master.cost.index', [
|
return view('backend.pages.master.cost.index', [
|
||||||
'costs' => CostCentre::all()
|
'costs' => CostCentre::all()
|
||||||
]);
|
]);
|
||||||
@@ -17,11 +18,13 @@ class CostCentreController extends Controller
|
|||||||
|
|
||||||
public function create()
|
public function create()
|
||||||
{
|
{
|
||||||
|
$this->checkAuthorization(auth()->user(), ['cost.create']);
|
||||||
return view('backend.pages.master.cost.create');
|
return view('backend.pages.master.cost.create');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function store(Request $request)
|
public function store(Request $request)
|
||||||
{
|
{
|
||||||
|
$this->checkAuthorization(auth()->user(), ['cost.create']);
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'code' => 'required|unique:cost_centre,code',
|
'code' => 'required|unique:cost_centre,code',
|
||||||
'name' => 'required|unique:cost_centre,name'
|
'name' => 'required|unique:cost_centre,name'
|
||||||
@@ -38,6 +41,7 @@ class CostCentreController extends Controller
|
|||||||
|
|
||||||
public function edit($id)
|
public function edit($id)
|
||||||
{
|
{
|
||||||
|
$this->checkAuthorization(auth()->user(), ['cost.edit']);
|
||||||
return view('backend.pages.master.cost.edit', [
|
return view('backend.pages.master.cost.edit', [
|
||||||
'cost' => CostCentre::findOrfail($id)
|
'cost' => CostCentre::findOrfail($id)
|
||||||
]);
|
]);
|
||||||
@@ -45,6 +49,7 @@ class CostCentreController extends Controller
|
|||||||
|
|
||||||
public function update(Request $request, $id)
|
public function update(Request $request, $id)
|
||||||
{
|
{
|
||||||
|
$this->checkAuthorization(auth()->user(), ['cost.edit']);
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'code' => 'required|unique:cost_centre,code,' . $id . ',id',
|
'code' => 'required|unique:cost_centre,code,' . $id . ',id',
|
||||||
'name' => 'required|unique:cost_centre,name,' . $id . ',id'
|
'name' => 'required|unique:cost_centre,name,' . $id . ',id'
|
||||||
@@ -61,6 +66,7 @@ class CostCentreController extends Controller
|
|||||||
|
|
||||||
public function destroy($id)
|
public function destroy($id)
|
||||||
{
|
{
|
||||||
|
$this->checkAuthorization(auth()->user(), ['cost.delete']);
|
||||||
CostCentre::findOrfail($id)->delete();
|
CostCentre::findOrfail($id)->delete();
|
||||||
|
|
||||||
session()->flash('success', 'Cost has been deleted.');
|
session()->flash('success', 'Cost has been deleted.');
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ class RayonController extends Controller
|
|||||||
{
|
{
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
|
$this->checkAuthorization(auth()->user(), ['rayon.view']);
|
||||||
return view('backend.pages.master.rayon.index', [
|
return view('backend.pages.master.rayon.index', [
|
||||||
'rayons' => Rayon::all()
|
'rayons' => Rayon::all()
|
||||||
]);
|
]);
|
||||||
@@ -17,11 +18,13 @@ class RayonController extends Controller
|
|||||||
|
|
||||||
public function create()
|
public function create()
|
||||||
{
|
{
|
||||||
|
$this->checkAuthorization(auth()->user(), ['rayon.create']);
|
||||||
return view('backend.pages.master.rayon.create');
|
return view('backend.pages.master.rayon.create');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function store(Request $request)
|
public function store(Request $request)
|
||||||
{
|
{
|
||||||
|
$this->checkAuthorization(auth()->user(), ['rayon.create']);
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'code' => 'required|unique:rayon,code',
|
'code' => 'required|unique:rayon,code',
|
||||||
'name' => 'required|unique:rayon,name'
|
'name' => 'required|unique:rayon,name'
|
||||||
@@ -38,6 +41,7 @@ class RayonController extends Controller
|
|||||||
|
|
||||||
public function edit($id)
|
public function edit($id)
|
||||||
{
|
{
|
||||||
|
$this->checkAuthorization(auth()->user(), ['rayon.edit']);
|
||||||
return view('backend.pages.master.rayon.edit', [
|
return view('backend.pages.master.rayon.edit', [
|
||||||
'rayon' => Rayon::findOrfail($id)
|
'rayon' => Rayon::findOrfail($id)
|
||||||
]);
|
]);
|
||||||
@@ -45,6 +49,7 @@ class RayonController extends Controller
|
|||||||
|
|
||||||
public function update(Request $request, $id)
|
public function update(Request $request, $id)
|
||||||
{
|
{
|
||||||
|
$this->checkAuthorization(auth()->user(), ['rayon.edit']);
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'code' => 'required|unique:rayon,code,' . $id . ',id',
|
'code' => 'required|unique:rayon,code,' . $id . ',id',
|
||||||
'name' => 'required|unique:rayon,name,' . $id . ',id'
|
'name' => 'required|unique:rayon,name,' . $id . ',id'
|
||||||
@@ -61,6 +66,7 @@ class RayonController extends Controller
|
|||||||
|
|
||||||
public function destroy($id)
|
public function destroy($id)
|
||||||
{
|
{
|
||||||
|
$this->checkAuthorization(auth()->user(), ['rayon.delete']);
|
||||||
Rayon::findOrfail($id)->delete();
|
Rayon::findOrfail($id)->delete();
|
||||||
|
|
||||||
session()->flash('success', 'Rayon has been deleted.');
|
session()->flash('success', 'Rayon has been deleted.');
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
"laravel/tinker": "^2.9",
|
"laravel/tinker": "^2.9",
|
||||||
"laravel/ui": "^4.6",
|
"laravel/ui": "^4.6",
|
||||||
"laravolt/avatar": "^6.0",
|
"laravolt/avatar": "^6.0",
|
||||||
|
"nino/laravel-nextcloud-fs": "^2.0",
|
||||||
"phpoffice/phpspreadsheet": "^3.5",
|
"phpoffice/phpspreadsheet": "^3.5",
|
||||||
"spatie/laravel-html": "^3.11",
|
"spatie/laravel-html": "^3.11",
|
||||||
"spatie/laravel-menu": "^4.2",
|
"spatie/laravel-menu": "^4.2",
|
||||||
|
|||||||
Generated
+907
-129
File diff suppressed because it is too large
Load Diff
@@ -57,6 +57,14 @@ return [
|
|||||||
'throw' => false,
|
'throw' => false,
|
||||||
],
|
],
|
||||||
|
|
||||||
|
'nextcloud' => [
|
||||||
|
'driver' => 'nextcloud',
|
||||||
|
'baseUri' => env('NEXT_CLOUD_URL'),
|
||||||
|
'userName' => env('NEXT_CLOUD_USERNAME'),
|
||||||
|
'password' => env('NEXT_CLOUD_PASSWORD'),
|
||||||
|
'directory' => '',
|
||||||
|
],
|
||||||
|
|
||||||
],
|
],
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ use Database\Seeds\AdminSeeder;
|
|||||||
use Database\Seeds\RolePermissionSeeder;
|
use Database\Seeds\RolePermissionSeeder;
|
||||||
use Database\Seeds\MenuSeeder;
|
use Database\Seeds\MenuSeeder;
|
||||||
use Database\Seeds\RayonSeeder;
|
use Database\Seeds\RayonSeeder;
|
||||||
|
use Database\Seeds\RolePermissionSeeder2;
|
||||||
|
|
||||||
class DatabaseSeeder extends Seeder
|
class DatabaseSeeder extends Seeder
|
||||||
{
|
{
|
||||||
@@ -21,5 +22,6 @@ class DatabaseSeeder extends Seeder
|
|||||||
$this->call(RolePermissionSeeder::class);
|
$this->call(RolePermissionSeeder::class);
|
||||||
$this->call(MenuSeeder::class);
|
$this->call(MenuSeeder::class);
|
||||||
$this->call(RayonSeeder::class);
|
$this->call(RayonSeeder::class);
|
||||||
|
$this->call(RolePermissionSeeder2::class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,7 +38,6 @@ class RolePermissionSeeder extends Seeder
|
|||||||
|
|
||||||
// Permission List as array
|
// Permission List as array
|
||||||
$permissions = [
|
$permissions = [
|
||||||
|
|
||||||
[
|
[
|
||||||
'group_name' => 'dashboard',
|
'group_name' => 'dashboard',
|
||||||
'permissions' => [
|
'permissions' => [
|
||||||
@@ -80,9 +79,6 @@ class RolePermissionSeeder extends Seeder
|
|||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Do same for the admin guard for tutorial purposes.
|
// Do same for the admin guard for tutorial purposes.
|
||||||
$admin = Admin::where('username', 'superadmin')->first();
|
$admin = Admin::where('username', 'superadmin')->first();
|
||||||
$roleSuperAdmin = $this->maybeCreateSuperAdminRole($admin);
|
$roleSuperAdmin = $this->maybeCreateSuperAdminRole($admin);
|
||||||
|
|||||||
@@ -0,0 +1,103 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Database\Seeds;
|
||||||
|
|
||||||
|
use App\Models\Admin;
|
||||||
|
use Illuminate\Database\Seeder;
|
||||||
|
use Spatie\Permission\Models\Role;
|
||||||
|
use Spatie\Permission\Models\Permission;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class RolePermissionSeeder.
|
||||||
|
*
|
||||||
|
* @see https://spatie.be/docs/laravel-permission/v5/basic-usage/multiple-guards
|
||||||
|
*
|
||||||
|
* @package App\Database\Seeds
|
||||||
|
*/
|
||||||
|
class RolePermissionSeeder2 extends Seeder
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the database seeds.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function run()
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Enable these options if you need same role and other permission for User Model
|
||||||
|
* Else, please follow the below steps for admin guard
|
||||||
|
*/
|
||||||
|
$permissions = [
|
||||||
|
[
|
||||||
|
'group_name' => 'rayon',
|
||||||
|
'permissions' => [
|
||||||
|
'rayon.view',
|
||||||
|
'rayon.edit',
|
||||||
|
'rayon.create',
|
||||||
|
'rayon.delete',
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'group_name' => 'cost',
|
||||||
|
'permissions' => [
|
||||||
|
'cost.view',
|
||||||
|
'cost.edit',
|
||||||
|
'cost.create',
|
||||||
|
'cost.delete',
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'group_name' => 'category',
|
||||||
|
'permissions' => [
|
||||||
|
'category.view',
|
||||||
|
'category.edit',
|
||||||
|
'category.create',
|
||||||
|
'category.delete',
|
||||||
|
]
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
// Do same for the admin guard for tutorial purposes.
|
||||||
|
$admin = Admin::where('username', 'superadmin')->first();
|
||||||
|
$roleSuperAdmin = $this->maybeCreateSuperAdminRole($admin);
|
||||||
|
|
||||||
|
// Create and Assign Permissions
|
||||||
|
for ($i = 0; $i < count($permissions); $i++) {
|
||||||
|
$permissionGroup = $permissions[$i]['group_name'];
|
||||||
|
for ($j = 0; $j < count($permissions[$i]['permissions']); $j++) {
|
||||||
|
$permissionExist = Permission::where('name', $permissions[$i]['permissions'][$j])->first();
|
||||||
|
if (is_null($permissionExist)) {
|
||||||
|
$permission = Permission::create(
|
||||||
|
[
|
||||||
|
'name' => $permissions[$i]['permissions'][$j],
|
||||||
|
'group_name' => $permissionGroup,
|
||||||
|
'guard_name' => 'admin'
|
||||||
|
]
|
||||||
|
);
|
||||||
|
$roleSuperAdmin->givePermissionTo($permission);
|
||||||
|
$permission->assignRole($roleSuperAdmin);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Assign super admin role permission to superadmin user
|
||||||
|
if ($admin) {
|
||||||
|
$admin->assignRole($roleSuperAdmin);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function maybeCreateSuperAdminRole($admin): Role
|
||||||
|
{
|
||||||
|
if (is_null($admin)) {
|
||||||
|
$roleSuperAdmin = Role::create(['name' => 'superadmin', 'guard_name' => 'admin']);
|
||||||
|
} else {
|
||||||
|
$roleSuperAdmin = Role::where('name', 'superadmin')->where('guard_name', 'admin')->first();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_null($roleSuperAdmin)) {
|
||||||
|
$roleSuperAdmin = Role::create(['name' => 'superadmin', 'guard_name' => 'admin']);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $roleSuperAdmin;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -26,9 +26,11 @@
|
|||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h4 class="header-title float-left">List Data Category</h4>
|
<h4 class="header-title float-left">List Data Category</h4>
|
||||||
<p class="float-right mb-2">
|
<p class="float-right mb-2">
|
||||||
<a class="btn btn-primary text-white" href="{{ route('admin.category.create') }}">
|
@if (Auth::user()->can('category.create'))
|
||||||
Add New Category
|
<a class="btn btn-primary text-white" href="{{ route('admin.category.create') }}">
|
||||||
</a>
|
Add New Category
|
||||||
|
</a>
|
||||||
|
@endif
|
||||||
</p>
|
</p>
|
||||||
<div class="clearfix"></div>
|
<div class="clearfix"></div>
|
||||||
<div class="dataTables_wrapper dt-bootstrap4 mt-2">
|
<div class="dataTables_wrapper dt-bootstrap4 mt-2">
|
||||||
|
|||||||
@@ -26,9 +26,11 @@
|
|||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h4 class="header-title float-left">List Data Cost Centre</h4>
|
<h4 class="header-title float-left">List Data Cost Centre</h4>
|
||||||
<p class="float-right mb-2">
|
<p class="float-right mb-2">
|
||||||
<a class="btn btn-primary text-white" href="{{ route('admin.cost.create') }}">
|
@if (Auth::user()->can('cost.create'))
|
||||||
Add New Cost Centre
|
<a class="btn btn-primary text-white" href="{{ route('admin.cost.create') }}">
|
||||||
</a>
|
Add New Cost Centre
|
||||||
|
</a>
|
||||||
|
@endif
|
||||||
</p>
|
</p>
|
||||||
<div class="clearfix"></div>
|
<div class="clearfix"></div>
|
||||||
<div class="dataTables_wrapper dt-bootstrap4 mt-2">
|
<div class="dataTables_wrapper dt-bootstrap4 mt-2">
|
||||||
|
|||||||
@@ -26,9 +26,11 @@
|
|||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h4 class="header-title float-left">List Data Rayon</h4>
|
<h4 class="header-title float-left">List Data Rayon</h4>
|
||||||
<p class="float-right mb-2">
|
<p class="float-right mb-2">
|
||||||
<a class="btn btn-primary text-white" href="{{ route('admin.rayon.create') }}">
|
@if (Auth::user()->can('rayon.create'))
|
||||||
Add New Rayon
|
<a class="btn btn-primary text-white" href="{{ route('admin.rayon.create') }}">
|
||||||
</a>
|
Add New Rayon
|
||||||
|
</a>
|
||||||
|
@endif
|
||||||
</p>
|
</p>
|
||||||
<div class="clearfix"></div>
|
<div class="clearfix"></div>
|
||||||
<div class="dataTables_wrapper dt-bootstrap4 mt-2">
|
<div class="dataTables_wrapper dt-bootstrap4 mt-2">
|
||||||
|
|||||||
Reference in New Issue
Block a user