security: secure role, notification, system setting, and documentation pages with spatie permissions

This commit is contained in:
2026-05-21 22:10:36 +07:00
parent bf42ca956d
commit 65804be1cb
4 changed files with 24 additions and 8 deletions
+8
View File
@@ -11,6 +11,8 @@ class RoleController extends Controller
{
public function index()
{
abort_if(!auth()->user()->can('role.view'), 403, 'Unauthorized. Role view permission required.');
$order = ['super-admin' => 0, 'admin' => 1, 'user' => 2];
$roles = Role::where('guard_name', 'web')
@@ -48,6 +50,8 @@ class RoleController extends Controller
*/
public function updatePermissions(Request $request, Role $role)
{
abort_if(!auth()->user()->can('role.manage'), 403, 'Unauthorized. Role management permission required.');
$validated = $request->validate([
'permissions' => 'required|array',
'permissions.*' => 'string|exists:permissions,name',
@@ -64,6 +68,8 @@ class RoleController extends Controller
*/
public function store(Request $request)
{
abort_if(!auth()->user()->can('role.manage'), 403, 'Unauthorized. Role management permission required.');
$validated = $request->validate([
'name' => 'required|string|max:50|unique:roles,name',
]);
@@ -81,6 +87,8 @@ class RoleController extends Controller
*/
public function destroy(Role $role)
{
abort_if(!auth()->user()->can('role.manage'), 403, 'Unauthorized. Role management permission required.');
if ($role->name === 'super-admin') {
return back()->withErrors(['error' => 'Cannot delete the super-admin role.']);
}