Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/EdgarJr30/proyecto-de-grado-cms/llms.txt

Use this file to discover all available pages before exploring further.

Overview

The Settings Hub provides centralized access to all administrative configuration modules in MLM CMMS. It uses a modular interface where each setting category is a separate tab with its own permissions and functionality.
Access to each settings module depends on specific permissions. Some modules may be unavailable if you lack the required permissions.

Accessing the Settings Hub

Navigate to Administration → Settings from the sidebar, or use the route /admin/settings.

Settings Modules

The Settings Hub includes the following modules:

1. Roles

Permission: rbac:manage_roles Description: Manage roles and assign permissions to roles. Features:
  • Create, edit, and delete roles
  • View and assign permissions to roles
  • View users assigned to each role
  • Bulk permission assignment (“Seleccionar todo” / “Quitar todo”)
See also: Roles & Permissions

2. Permissions

Permission: rbac:manage_permissions Description: View and synchronize the permission registry. Features:
  • View all available permissions (code, resource, action, label, description)
  • Synchronize permissions from the frontend registry to the database
  • Filter permissions by code, label, or description
  • View active/inactive permissions
See also: Roles & Permissions

3. Special Incidents

Permissions: special_incidents:full_access, special_incidents:disable, or special_incidents:delete Description: Manage special incident types for work orders and tickets. Features:
  • Create custom incident types (e.g., “Water Leak”, “Electrical Fault”)
  • Assign codes and descriptions to incidents
  • Activate/deactivate incident types
  • Delete incident types (if no dependencies exist)
Use case: Special incidents are used to categorize tickets and work orders beyond standard classifications.

4. Announcements

Permissions: announcements:read, announcements:full_access, announcements:disable, or announcements:delete Description: Publish and manage system-wide announcements. Features:
  • Create announcements with title, message, and validity period
  • Target announcements to specific roles
  • Set priority levels (info, warning, critical)
  • Activate/deactivate announcements
  • Delete announcements
Use case: Notify users of system maintenance, policy changes, or important updates.

5. Society (Organization Settings)

Permissions: society:read, society:full_access, society:disable, or society:delete Description: Configure organizational branding and identity. Features:
  • Set organization name
  • Upload logo and branding assets
  • Configure default settings (timezone, currency, etc.)
  • Manage contact information
Use case: Customize the application to reflect your organization’s identity.

6. General

Permission: None (available to all users) Description: System-wide general settings and catalogs. Features:
  • View system version and environment
  • Configure default behaviors (e.g., notification preferences)
  • Manage global catalogs (work order types, priority levels, etc.)
  • Review system health and diagnostics

Settings Hub Interface

The left sidebar lists all available modules. Modules you don’t have permission to access are marked as “Sin acceso” and are disabled.
1

Select a Module

Click on any module tile to view its content.
2

Use Keyboard Navigation

Use Arrow Up/Down to navigate between modules. Press Enter to select.
3

Search Within Module

Many modules (Roles, Permissions, Incidents, Announcements) include a search bar to filter content.

Module Status Panel

The right sidebar shows the “Estado de acceso” panel, which indicates whether each module is available or blocked based on your permissions.

Search Functionality

Modules with searchable content (Roles, Permissions, Incidents, Announcements) include a search bar:
  • Roles: Search by role name or description
  • Permissions: Search by code, label, or description
  • Incidents: Search by incident name or code
  • Announcements: Search by message or content

Permissions Summary

The Settings Hub respects granular permissions for each module:
ModuleRequired Permission(s)
Rolesrbac:manage_roles
Permissionsrbac:manage_permissions
Special Incidentsspecial_incidents:full_access, special_incidents:disable, or special_incidents:delete
Announcementsannouncements:read, announcements:full_access, announcements:disable, or announcements:delete
Societysociety:read, society:full_access, society:disable, or society:delete
GeneralNone (public)
If you don’t have permission for a module, it will appear in the sidebar but will be disabled and marked as “Sin acceso”.

Common Settings Workflows

Synchronizing Permissions

After updating the permission registry in code:
1

Navigate to Permissions Module

Settings → Permissions
2

Click 'Sincronizar permisos'

This calls the sync_permissions_from_registry RPC function.
3

Review Sync Results

The system will insert new permissions, update existing ones, and mark missing permissions as inactive.

Creating a System Announcement

1

Navigate to Announcements Module

Settings → Announcements
2

Click 'Crear anuncio'

Opens the announcement creation form.
3

Fill in Announcement Details

  • Title: Brief headline
  • Message: Full announcement text
  • Priority: Info, Warning, or Critical
  • Target Roles: Select roles that should see the announcement
  • Validity Period: Start and end dates
4

Publish

Click “Publicar”. The announcement is immediately visible to targeted users.

Configuring Organization Branding

1

Navigate to Society Module

Settings → Sociedad
2

Upload Logo

Click “Subir logo” and select your organization’s logo file.
3

Update Organization Name

Edit the organization name field.
4

Save Changes

Click “Guardar”. The new branding is applied system-wide.

Technical Implementation

Settings Hub Page Component

The Settings Hub is implemented in src/pages/admin/AdminSettingsHubPage.tsx. Key features:
  • Dynamic module loading based on permissions
  • URL-based tab state (?tab=roles)
  • Keyboard navigation support
  • Responsive layout with sticky sidebar
  • Search functionality for supported modules

Module Definitions

Each module is defined in the modules array:
const modules: SettingsModule[] = [
  {
    key: 'roles',
    label: 'Roles',
    description: 'Gestiona los roles y su asignación de permisos.',
    helper: 'Estructura de acceso por perfil',
    icon: ShieldCheck,
    enabled: canManageRoles,
    tone: TAB_TONES.roles,
  },
  // ...
];

Permission Checks

The Settings Hub uses React hooks to check permissions:
const canManageRoles = useCan('rbac:manage_roles');
const canSeePermissions = useCan('rbac:manage_permissions');
const canManageIncidents = useCan('special_incidents:full_access') ||
                           useCan('special_incidents:disable') ||
                           useCan('special_incidents:delete');

Tab Routing

The active tab is determined by the tab query parameter:
const { search } = useLocation();
const q = new URLSearchParams(search);
const rawTab = q.get('tab');

if (isTabKey(rawTab) && moduleMap.get(rawTab)?.enabled) {
  setTab(rawTab);
} else {
  setTab(pickFirstAllowedTab());
}

Best Practices

Use Descriptive Announcements

Write clear, actionable announcements with specific dates and instructions.

Sync Permissions After Code Changes

Always synchronize permissions after deploying new features with new permission codes.

Review Special Incidents Regularly

Archive or deactivate incident types that are no longer used.

Maintain Consistent Branding

Use high-quality logos and consistent naming across the organization settings.

Test Permission Changes

After modifying roles or permissions, test with affected users to ensure proper access.

Document Custom Settings

Keep internal documentation of custom incident types, announcement guidelines, and role definitions.

Troubleshooting

”Sin acceso” on All Modules

Cause: Your user account has no administrative permissions. Solution: Contact a system administrator to grant appropriate permissions (e.g., rbac:manage_roles).

Tab Not Loading

Cause: The URL includes an invalid or inaccessible tab parameter. Solution:
  1. Remove the tab parameter from the URL
  2. The system will redirect to the first available module

Changes Not Saving

Possible causes:
  1. Missing permission for the specific action (create, update, delete)
  2. Network connectivity issue
  3. Backend RPC function not available
Solution: Check browser console for errors and verify permissions.

Search Not Returning Results

Cause: Search term is too short (< 2 characters) or doesn’t match any records. Solution: Use at least 2 characters and try partial matches (e.g., “user” instead of “users:read”).

Build docs developers (and LLMs) love