@extends('layouts.app') @section('title', 'Roles & Permissions') @section('content') @push('styles') @endpush @can('manage_roles')

Roles & Permissions

Manage access control and create custom roles

@if(session('success'))
{{ session('success') }}
@endif @if(session('error'))
{{ session('error') }}
@endif {{-- New Role Modal --}}

Create New Role

@csrf
@error('name')

{{ $message }}

@enderror

Lowercase letters and underscores only

@error('label')

{{ $message }}

@enderror

How the role appears in the system

@foreach($grouped as $group => $perms)
@php $groupIcons = ['Dashboard' => 'fa-home', 'Products' => 'fa-pills', 'Categories' => 'fa-tags', 'Suppliers' => 'fa-truck', 'Customers' => 'fa-users', 'Sales' => 'fa-receipt', 'Purchases' => 'fa-boxes-stacked', 'Reports' => 'fa-chart-line', 'Expenses' => 'fa-file-invoice-dollar', 'Finance' => 'fa-money-bill-wave', 'Users' => 'fa-user-cog', 'Settings' => 'fa-cog', 'Roles & Permissions' => 'fa-user-shield', 'Payment Accounts' => 'fa-wallet', 'Quotations' => 'fa-file-invoice', 'Messages' => 'fa-envelope', 'Activity Logs' => 'fa-history', 'Backup' => 'fa-database', 'HRM' => 'fa-users-gear', 'Projects' => 'fa-tasks']; @endphp {{ $group }}
@foreach($perms as $perm) @endforeach
@endforeach
@php $emptyRoles = $roles->filter(fn($r) => $r->name !== 'admin' && empty($rolePermissions[$r->id])); @endphp @if($emptyRoles->count() > 0)

Roles with No Permissions Detected

The following roles have zero permissions. Users assigned to these roles will be locked out: {{ $emptyRoles->pluck('label')->join(', ') }}

@endif {{-- Edit Role Modal --}} {{-- User Role Assignment --}} @can('manage_roles')

User Role Assignment

@foreach($allUsers as $au) @endforeach
User Current Role Change Role
{{ strtoupper(substr($au->name, 0, 1)) }}

{{ $au->name }}

{{ $au->email }}

@if($au->role) @if($au->role->name === 'admin') @endif {{ $au->role->label }} @else No role @endif
@csrf
@endcan {{-- Role Tabs --}}
@foreach($roles as $i => $role)
@if($role->name === 'admin')

Admin has full access

The admin role cannot be modified and has access to all permissions automatically.

@else

{{ $role->label }} Permissions

Toggle access for each permission

@csrf
@if(!in_array($role->name, ['pharmacist', 'cashier']))
@csrf @method('DELETE')
@endif
@if(!$role->is_active)

This role is deactivated

Users with this role will have no permissions. Activate it to restore access.

@endif
@csrf
@foreach($grouped as $group => $perms) @php $groupSlug = \Illuminate\Support\Str::slug($group); $selectedCount = count(array_intersect($perms->pluck('name')->toArray(), $rolePermissions[$role->id] ?? [])); $totalCount = $perms->count(); @endphp
@php $groupIcons = ['Dashboard' => 'fa-home', 'Products' => 'fa-pills', 'Categories' => 'fa-tags', 'Suppliers' => 'fa-truck', 'Customers' => 'fa-users', 'Sales' => 'fa-receipt', 'Purchases' => 'fa-boxes-stacked', 'Reports' => 'fa-chart-line', 'Expenses' => 'fa-file-invoice-dollar', 'Finance' => 'fa-money-bill-wave', 'Users' => 'fa-user-cog', 'Settings' => 'fa-cog', 'Roles & Permissions' => 'fa-user-shield', 'Payment Accounts' => 'fa-wallet', 'Quotations' => 'fa-file-invoice', 'Messages' => 'fa-envelope', 'Activity Logs' => 'fa-history', 'Backup' => 'fa-database', 'HRM' => 'fa-users-gear', 'Projects' => 'fa-tasks']; @endphp

{{ $group }}

{{ $selectedCount }}/{{ $totalCount }}
@foreach($perms as $perm) @endforeach
@endforeach
{{-- Users with this role --}} @if($roleUsers[$role->id]->count() > 0)

Users ({{ $roleUsers[$role->id]->count() }})

@foreach($roleUsers[$role->id] as $ru)
{{ strtoupper(substr($ru->name, 0, 1)) }}
{{ $ru->name }} @can('manage_roles') @endcan
@endforeach
@endif @endif
@endforeach
{{-- User Permission Override Modal --}} {{-- Role Overview Matrix --}}

Permission Matrix

@foreach($roles as $role) @endforeach @foreach($grouped as $group => $perms) @foreach($perms as $perm) @foreach($roles as $role) @endforeach @endforeach @endforeach
Permission
@if($role->name === 'admin') @elseif($role->name === 'pharmacist') @elseif($role->name === 'cashier') @else @endif {{ $role->label }}
@if(!$role->is_active) Inactive @endif
{{ $group }} {{ str_replace('_', ' ', $perm->name) }} @if($role->name === 'admin' || in_array($perm->name, $rolePermissions[$role->id] ?? [])) @if($role->is_active || $role->name === 'admin') @else @endif @else @endif
@endcan @endsection