Backend de Administración
El backend de administración se ejecuta a través de un controlador Perl nativo
y modelos específicos por dominio en lugar de la cadena de handlers ClaJS.
Las peticiones del frontend siguen usando /plugin/admin?path=..., pero
lib/Baseliner/Controller/Plugin.pm ahora dirige el tráfico de administración
hacia lib/Baseliner/Controller/Admin.pm, que delega el comportamiento de cada
endpoint a modelos específicos por dominio.
Esto mantiene intacto el contrato del UI React existente mientras elimina la dependencia en tiempo de ejecución del controlador admin basado en Duktape. Los archivos ClaJS heredados permanecen en disco como material de reversión, pero ya no forman parte de la ruta activa de peticiones.
Arquitectura¶
Un único controlador (Admin.pm) con una tabla de despacho unificada mapea los
valores de path a métodos de modelo. El shim del frontend
(plugins/admin/src/lib/adminRequest.js) elimina el prefijo admin/ de las
rutas de las peticiones y dirige las llamadas a /admin/api.
Modelos¶
| Modelo | Dominio | Endpoints |
|---|---|---|
AdminProject |
CRUD de proyectos, permisos, entornos | 12 |
AdminUser |
Gestión de usuarios/roles/permisos | 7 |
AdminSystemStats |
Agregación de estadísticas del sistema | 1 |
AdminConfig |
Configuración, etiquetas, labels, repositorios | 11 |
Endpoints Cubiertos¶
Dominio de proyecto (AdminProject):
project/list— lista paginada de proyectos con flags de adminproject/get— cargar un proyectoproject/insert— crear un nuevo proyectoproject/update— actualizar propiedades del proyectoproject/delete— eliminar un proyectoproject/activate— activar un proyectoproject/disable— desactivar un proyectoproject/listEnvironments— listar entornos activosproject/createRepository— crear un repositorio git para un proyectoproject/hasPermission— verificar si el usuario puede administrar un proyectoproject/canCreate— verificar si el usuario puede crear proyectosproject/checkTopics— contar topics vinculados a un proyecto
Dominio de usuario (AdminUser):
user/list— listar usuarios y grupos de usuarios en un proyecto con rolesuser/listUsersProfiles— listar usuarios y grupos excluyendo los predeterminadosuser/listRoles— listar roles otorgados al usuario actualuser/listUsers— listar usuarios regularesuser/permissions— asignar/desasignar roles a usuarios para un proyectouser/deletePermissions— eliminar permisos de usuario de un proyectouser/editPermissions— obtener IDs de roles del usuario para un proyecto
Dominio de configuración (AdminConfig):
config/list— listar configuraciones con verificación de permisosconfig/save— guardar configuracionestags/list— listar tags con verificación de permisoslabel/list— listar labels con ámbito de proyecto/globallabel/insert— crear un labellabel/update— actualizar un labellabel/delete— eliminar un labelrepository/list— listar repositorios de un proyectorepository/delete— eliminar un repositoriorepository/getTypes— obtener tipos de repositorios disponiblesrepository/createRepositoryExternal— crear un repositorio no-git
Estadísticas del sistema (AdminSystemStats):
system_stats/list— estadísticas del sistema agregadas con filtrado y paginación
Verificaciones de permisos (inline en el controlador):
event/canAdminEventsvariable/canAdminVariablesresource/canAdminResourcesrole/canAdminRolesusergroup/canAdminUserGroupsstatus/canAdminStatusresource/canViewResourcesrepl/canAdminREPLuser/canAdminUsers
Validación¶
./bin/cla exec perl -c lib/Baseliner/Controller/Admin.pm ./bin/cla exec perl -c lib/Baseliner/Model/AdminProject.pm ./bin/cla exec perl -c lib/Baseliner/Model/AdminUser.pm ./bin/cla exec perl -c lib/Baseliner/Model/AdminConfig.pm ./bin/cla exec perl -c lib/Baseliner/Model/AdminSystemStats.pm ./bin/cla prove t/baseliner/controller/admin.t ./bin/cla prove t/baseliner/model/admin_project.t ./bin/cla prove t/baseliner/model/admin_user.t ./bin/cla prove t/baseliner/model/admin_config.t ./bin/cla prove t/baseliner/model/admin_system_stats.t