diff --git a/frontend/src/routes/dashboard/roles/+page.svelte b/frontend/src/routes/dashboard/roles/+page.svelte
index 938eb89..0f60673 100644
--- a/frontend/src/routes/dashboard/roles/+page.svelte
+++ b/frontend/src/routes/dashboard/roles/+page.svelte
@@ -1,26 +1,230 @@
-
-
- Roles y permisos
+
+ Roles y permisos
-
- Gestión de roles y control de acceso.
+
+ Define roles (carriles) por compañía y qué puede hacer cada uno. Los usuarios se asignan en Usuarios.
-
-
- Roles del sistema
- Implementa aquí la gestión de roles y permisos de tu proyecto.
-
-
- Sección en construcción.
-
-
+ {#if !companyId}
+
Selecciona una compañía activa para gestionar sus roles.
+ {:else}
+
+
+ Nuevo rol
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Roles ({roles.length})
+ Haz clic en un rol para ver y editar sus permisos.
+
+
+ {#if loading}
+ Cargando…
+ {:else if roles.length === 0}
+ No hay roles. Crea uno arriba.
+ {:else}
+ {#each roles as r (r.id)}
+
+
+
+
+
+ {#if expandedRoleId === r.id}
+
+ {#if !rolePerms[r.id]}
+
Cargando permisos…
+ {:else}
+
+ {#each Object.entries(byModule) as [mod, perms] (mod)}
+
+
{mod}
+
+ {#each perms as p (p.id)}
+
+ {/each}
+
+
+ {/each}
+
+ {/if}
+
+ {/if}
+
+ {/each}
+ {/if}
+
+
+ {/if}
diff --git a/frontend/src/routes/dashboard/users/+page.svelte b/frontend/src/routes/dashboard/users/+page.svelte
index 4ecfca5..ec059e8 100644
--- a/frontend/src/routes/dashboard/users/+page.svelte
+++ b/frontend/src/routes/dashboard/users/+page.svelte
@@ -1,23 +1,172 @@
-
-
- Usuarios
+
+ Usuarios
-
Gestión de usuarios y accesos.
+
+ Usuarios de la compañía activa y sus roles. Para dar de alta usuarios nuevos usa Workspace → Usuarios (invitaciones).
+
-
-
- Usuarios del sistema
- Implementa aquí la gestión de usuarios de tu proyecto.
-
-
- Sección en construcción.
-
-
+
+ {#if !companyId}
+
Selecciona una compañía activa.
+ {:else}
+
+
+ Usuarios ({users.length})
+ Asigna o quita roles (los roles se definen en Roles y permisos).
+
+
+ {#if loading}
+ Cargando…
+ {:else if users.length === 0}
+ No hay usuarios en esta compañía todavía.
+ {:else}
+
+
+
+
+ | Usuario |
+ Email |
+ Roles |
+ Asignar rol |
+
+
+
+ {#each users as u (u.id)}
+
+ | {fullName(u)} |
+ {u.email ?? '—'} |
+
+
+ {#each rolesByUser[String(u.id)] ?? [] as a (a.id)}
+
+ {a.company_role?.name ?? a.company_role?.code ?? `rol ${a.company_role_id}`}
+
+
+ {:else}
+ sin rol
+ {/each}
+
+ |
+
+
+ |
+
+ {/each}
+
+
+
+ {/if}
+
+
+ {/if}