Usermanager/Http/Controllers/Users/PermissionsController.php

212 lines
6.8 KiB
PHP
Raw Normal View History

2023-05-16 04:51:54 +00:00
<?php
2023-05-20 14:10:32 +00:00
namespace Modules\Usermanager\Http\Controllers\Users;
2023-05-16 04:51:54 +00:00
use App\Http\Controllers\Controller;
use Exception;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
2023-05-20 14:10:32 +00:00
use Modules\Usermanager\DataTables\PermissionsDataTable;
use Modules\Usermanager\Entities\Permission;
use Modules\Usermanager\Entities\PermissionGroup;
2023-05-16 04:51:54 +00:00
class PermissionsController extends Controller
{
public $user;
public function __construct()
{
$this->middleware(function ($request, $next) {
$this->user = Auth::guard('web')->user();
return $next($request);
});
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(PermissionsDataTable $dataTable)
{
2023-05-16 06:57:54 +00:00
if (is_null($this->user) || !$this->user->can('permission.read')) {
abort(403, 'Sorry !! You are Unauthorized to view any permission !');
}
2023-05-16 04:51:54 +00:00
return $dataTable->render('usermanager::users.permissions.index');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
*
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
2023-05-16 06:57:54 +00:00
if (is_null($this->user) || !$this->user->can('permission.create')) {
2023-05-16 04:51:54 +00:00
abort(403, 'Sorry !! You are Unauthorized to create any permission !');
2023-05-16 06:57:54 +00:00
}
2023-05-16 04:51:54 +00:00
// Validation Data
$validate = $request->validate([
'name' => 'required|max:100|unique:permission_groups'
], [
'name.requried' => 'Please give a permission name'
]);
if ($validate) {
try {
// Process Data
$group = PermissionGroup::create(['name' => $request->name]);
$group_name = strtolower($request->name);
$data = [
$group_name . '.create',
$group_name . '.read',
$group_name . '.update',
$group_name . '.delete',
$group_name . '.authorize',
$group_name . '.report'
];
foreach ($data as $permission) {
Permission::create([
'name' => $permission,
'guard_name' => 'web',
'permission_group_id' => $group->id
]);
}
echo json_encode(['status' => 'success', 'message' => 'Permission created successfully.']);
} catch (Exception $e) {
echo json_encode(['status' => 'error', 'message' => 'Permission created failed.']);
}
}
return false;
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
}
/**
* Display the specified resource.
*
* @param int $id
*
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
*
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
2023-05-16 06:57:54 +00:00
if (is_null($this->user) || !$this->user->can('permission.update')) {
2023-05-16 04:51:54 +00:00
abort(403, 'Sorry !! You are Unauthorized to edit any permission !');
2023-05-16 06:57:54 +00:00
}
2023-05-16 04:51:54 +00:00
$permission = PermissionGroup::find($id);
echo json_encode($permission);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
*
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
2023-05-16 06:57:54 +00:00
if (is_null($this->user) || !$this->user->can('permission.update')) {
abort(403, 'Sorry !! You are Unauthorized to edit any permission !');
}
2023-05-16 04:51:54 +00:00
// Validation Data
$validated = $request->validate([
'name' => 'required|max:100|unique:permission_groups,name,' . $id
], [
'name.requried' => 'Please give a permission name'
]);
if ($validated) {
try {
// Process Data
$group = PermissionGroup::find($id);
$group->name = $request->name;
if ($group->save()) {
$group_name = strtolower($request->name);
$permissions = Permission::where('permission_group_id', $group->id)->get();
$data = [
$group_name . '.create',
$group_name . '.read',
$group_name . '.update',
$group_name . '.delete',
$group_name . '.authorize',
$group_name . '.report'
];
$i = 0;
foreach ($permissions as $permission) {
$permission->name = $data[$i];
$permission->save();
$i++;
}
}
echo json_encode(['status' => 'success', 'message' => 'Permission updated successfully.']);
} catch (Exception $e) {
echo json_encode(['status' => 'error', 'message' => 'Permission updated failed.']);
}
}
return false;
}
/**
* Remove the specified resource from storage.
*
* @param int $id
*
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
2023-05-16 06:57:54 +00:00
if (is_null($this->user) || !$this->user->can('permission.delete')) {
2023-05-16 04:51:54 +00:00
abort(403, 'Sorry !! You are Unauthorized to delete any role !');
2023-05-16 06:57:54 +00:00
}
2023-05-16 04:51:54 +00:00
$permission = PermissionGroup::find($id);
if (!is_null($permission)) {
if ($permission->delete()) {
Permission::where('permission_group_id', $id)->delete();
}
}
echo json_encode(['status' => 'success', 'message' => 'Permission deleted successfully.']);
}
}