middleware('permission:roles-create')->only('create', 'store'); $this->middleware('permission:roles-read')->only('index', 'show'); $this->middleware('permission:roles-update')->only('edit', 'update'); $this->middleware('permission:roles-delete')->only('destroy'); } public function index() { $roles = Role::with('users')->whereNotIn('name', ['Super Admin', 'superadmin', 'super admin'])->withCount('users')->get(); return view('admin.roles.index', compact('roles')); } public function create() { $groups = []; foreach (Permission::all() as $index => $permission) { $groups[ucwords(str($permission->name)->remove(['-create','-read','-update','-delete'])->replace('-', ' '))][] = $permission; } return view('admin.roles.create', compact('groups')); } public function store(Request $request) { $request->validate([ 'name' => ['required', 'string', 'unique:roles,name'], 'permissions' => ['required','array'], 'permissions.*' => ['required', 'exists:permissions,id'] ]); DB::transaction(function ()use ($request){ $this->role = Role::create([ 'name' => $request->input('name') ]); $this->role->permissions()->sync($request->input('permissions')); }); return response()->json([ 'message' => __('Role created successfully'), 'redirect' => route('admin.roles.index') ]); } public function edit(Role $role) { abort_if(in_array($role->name, ['Super Admin', 'superadmin', 'super admin']), 403, __("You are not allowed to mess with Super Admin")); $role->load('permissions'); $groups = []; foreach (Permission::all() as $index => $permission) { $groups[ucwords(str($permission->name)->remove(['-', 'create','read','update','delete','status','list','folder']))][] = $permission; } return view('admin.roles.edit', compact('role', 'groups')); } public function update(Request $request, Role $role) { abort_if(in_array($role->name, ['Super Admin', 'superadmin', 'super admin']), 403, __("You are not allowed to mess with Super Admin")); $request->validate([ 'name' => ['required', 'string', Rule::unique('roles')->ignore($role->id)], 'permissions' => ['required','array'], 'permissions.*' => ['required', 'exists:permissions,id'] ]); $role->update([ 'name' => $request->input('name') ]); $role->permissions()->sync($request->input('permissions')); return response()->json([ 'message' => __('Role update successfully'), 'redirect' => route('admin.roles.index') ]); } public function destroy(Role $role) { abort_if(in_array($role->name, ['Super Admin', 'superadmin', 'super admin']), 403, __("You are not allowed to mess with Super Admin")); $role->delete(); return response()->json([ 'message' => __('Role deleted successfully'), 'redirect' => route('admin.roles.index') ]); } }