Передаем на тест
This commit is contained in:
240
frontend/src/services/adminService.js
Normal file
240
frontend/src/services/adminService.js
Normal file
@@ -0,0 +1,240 @@
|
||||
// [DEF:adminService:Module]
|
||||
//
|
||||
// @SEMANTICS: admin, users, roles, ad-mappings, api
|
||||
// @PURPOSE: Service for Admin-related API calls (User and Role management).
|
||||
// @LAYER: Service
|
||||
// @RELATION: DEPENDS_ON -> frontend.src.lib.api
|
||||
//
|
||||
// @INVARIANT: All requests must include valid Admin JWT token (handled by api client).
|
||||
|
||||
// [SECTION: IMPORTS]
|
||||
import { api } from '../lib/api';
|
||||
// [/SECTION]
|
||||
|
||||
// [DEF:getUsers:Function]
|
||||
/**
|
||||
* @purpose Fetches all registered users from the backend.
|
||||
* @pre User must be authenticated with Admin privileges.
|
||||
* @post Returns an array of user objects.
|
||||
* @returns {Promise<Array>}
|
||||
* @relation CALLS -> backend.src.api.routes.admin.list_users
|
||||
*/
|
||||
async function getUsers() {
|
||||
console.log('[getUsers][Entry]');
|
||||
try {
|
||||
const users = await api.requestApi('/admin/users', 'GET');
|
||||
console.log('[getUsers][Coherence:OK]');
|
||||
return users;
|
||||
} catch (e) {
|
||||
console.error('[getUsers][Coherence:Failed]', e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
// [/DEF:getUsers:Function]
|
||||
|
||||
// [DEF:createUser:Function]
|
||||
/**
|
||||
* @purpose Creates a new local user.
|
||||
* @pre User must be authenticated with Admin privileges.
|
||||
* @param {Object} userData - User details (username, email, password, roles, is_active).
|
||||
* @post New user record created in auth.db.
|
||||
* @returns {Promise<Object>}
|
||||
* @relation CALLS -> backend.src.api.routes.admin.create_user
|
||||
*/
|
||||
async function createUser(userData) {
|
||||
console.log('[createUser][Entry]');
|
||||
try {
|
||||
const user = await api.postApi('/admin/users', userData);
|
||||
console.log('[createUser][Coherence:OK]');
|
||||
return user;
|
||||
} catch (e) {
|
||||
console.error('[createUser][Coherence:Failed]', e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
// [/DEF:createUser:Function]
|
||||
|
||||
// [DEF:getRoles:Function]
|
||||
/**
|
||||
* @purpose Fetches all available system roles.
|
||||
* @returns {Promise<Array>}
|
||||
* @relation CALLS -> backend.src.api.routes.admin.list_roles
|
||||
*/
|
||||
async function getRoles() {
|
||||
console.log('[getRoles][Entry]');
|
||||
try {
|
||||
const roles = await api.requestApi('/admin/roles', 'GET');
|
||||
console.log('[getRoles][Coherence:OK]');
|
||||
return roles;
|
||||
} catch (e) {
|
||||
console.error('[getRoles][Coherence:Failed]', e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
// [/DEF:getRoles:Function]
|
||||
|
||||
// [DEF:getADGroupMappings:Function]
|
||||
/**
|
||||
* @purpose Fetches mappings between AD groups and local roles.
|
||||
* @returns {Promise<Array>}
|
||||
*/
|
||||
async function getADGroupMappings() {
|
||||
console.log('[getADGroupMappings][Entry]');
|
||||
try {
|
||||
const mappings = await api.requestApi('/admin/ad-mappings', 'GET');
|
||||
console.log('[getADGroupMappings][Coherence:OK]');
|
||||
return mappings;
|
||||
} catch (e) {
|
||||
console.error('[getADGroupMappings][Coherence:Failed]', e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
// [/DEF:getADGroupMappings:Function]
|
||||
|
||||
// [DEF:createADGroupMapping:Function]
|
||||
/**
|
||||
* @purpose Creates or updates an AD group to Role mapping.
|
||||
* @param {Object} mappingData - Mapping details (ad_group, role_id).
|
||||
* @returns {Promise<Object>}
|
||||
*/
|
||||
async function createADGroupMapping(mappingData) {
|
||||
console.log('[createADGroupMapping][Entry]');
|
||||
try {
|
||||
const mapping = await api.postApi('/admin/ad-mappings', mappingData);
|
||||
console.log('[createADGroupMapping][Coherence:OK]');
|
||||
return mapping;
|
||||
} catch (e) {
|
||||
console.error('[createADGroupMapping][Coherence:Failed]', e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
// [/DEF:createADGroupMapping:Function]
|
||||
|
||||
// [DEF:updateUser:Function]
|
||||
/**
|
||||
* @purpose Updates an existing user.
|
||||
* @param {string} userId - Target user ID.
|
||||
* @param {Object} userData - Updated user data.
|
||||
* @returns {Promise<Object>}
|
||||
*/
|
||||
async function updateUser(userId, userData) {
|
||||
console.log('[updateUser][Entry]');
|
||||
try {
|
||||
const user = await api.requestApi(`/admin/users/${userId}`, 'PUT', userData);
|
||||
console.log('[updateUser][Coherence:OK]');
|
||||
return user;
|
||||
} catch (e) {
|
||||
console.error('[updateUser][Coherence:Failed]', e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
// [/DEF:updateUser:Function]
|
||||
|
||||
// [DEF:deleteUser:Function]
|
||||
/**
|
||||
* @purpose Deletes a user.
|
||||
* @param {string} userId - Target user ID.
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
async function deleteUser(userId) {
|
||||
console.log('[deleteUser][Entry]');
|
||||
try {
|
||||
await api.requestApi(`/admin/users/${userId}`, 'DELETE');
|
||||
console.log('[deleteUser][Coherence:OK]');
|
||||
} catch (e) {
|
||||
console.error('[deleteUser][Coherence:Failed]', e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
// [/DEF:deleteUser:Function]
|
||||
|
||||
// [DEF:createRole:Function]
|
||||
/**
|
||||
* @purpose Creates a new role.
|
||||
* @param {Object} roleData - Role details (name, description, permissions).
|
||||
* @returns {Promise<Object>}
|
||||
*/
|
||||
async function createRole(roleData) {
|
||||
console.log('[createRole][Entry]');
|
||||
try {
|
||||
const role = await api.postApi('/admin/roles', roleData);
|
||||
console.log('[createRole][Coherence:OK]');
|
||||
return role;
|
||||
} catch (e) {
|
||||
console.error('[createRole][Coherence:Failed]', e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
// [/DEF:createRole:Function]
|
||||
|
||||
// [DEF:updateRole:Function]
|
||||
/**
|
||||
* @purpose Updates an existing role.
|
||||
* @param {string} roleId - Target role ID.
|
||||
* @param {Object} roleData - Updated role data.
|
||||
* @returns {Promise<Object>}
|
||||
*/
|
||||
async function updateRole(roleId, roleData) {
|
||||
console.log('[updateRole][Entry]');
|
||||
try {
|
||||
const role = await api.requestApi(`/admin/roles/${roleId}`, 'PUT', roleData);
|
||||
console.log('[updateRole][Coherence:OK]');
|
||||
return role;
|
||||
} catch (e) {
|
||||
console.error('[updateRole][Coherence:Failed]', e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
// [/DEF:updateRole:Function]
|
||||
|
||||
// [DEF:deleteRole:Function]
|
||||
/**
|
||||
* @purpose Deletes a role.
|
||||
* @param {string} roleId - Target role ID.
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
async function deleteRole(roleId) {
|
||||
console.log('[deleteRole][Entry]');
|
||||
try {
|
||||
await api.requestApi(`/admin/roles/${roleId}`, 'DELETE');
|
||||
console.log('[deleteRole][Coherence:OK]');
|
||||
} catch (e) {
|
||||
console.error('[deleteRole][Coherence:Failed]', e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
// [/DEF:deleteRole:Function]
|
||||
|
||||
// [DEF:getPermissions:Function]
|
||||
/**
|
||||
* @purpose Fetches all available permissions.
|
||||
* @returns {Promise<Array>}
|
||||
*/
|
||||
async function getPermissions() {
|
||||
console.log('[getPermissions][Entry]');
|
||||
try {
|
||||
const permissions = await api.requestApi('/admin/permissions', 'GET');
|
||||
console.log('[getPermissions][Coherence:OK]');
|
||||
return permissions;
|
||||
} catch (e) {
|
||||
console.error('[getPermissions][Coherence:Failed]', e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
// [/DEF:getPermissions:Function]
|
||||
|
||||
export const adminService = {
|
||||
getUsers,
|
||||
createUser,
|
||||
updateUser,
|
||||
deleteUser,
|
||||
getRoles,
|
||||
createRole,
|
||||
updateRole,
|
||||
deleteRole,
|
||||
getPermissions,
|
||||
getADGroupMappings,
|
||||
createADGroupMapping
|
||||
};
|
||||
|
||||
// [/DEF:adminService:Module]
|
||||
Reference in New Issue
Block a user