2022-07-17 20:00:50 +02:00
|
|
|
import _ from 'lodash';
|
|
|
|
import { AppRoles, MultipleUsersData, User, UserRole } from './types';
|
2021-09-27 12:17:33 +02:00
|
|
|
|
2022-05-27 21:28:34 +02:00
|
|
|
const transformRoleById = (roleId: any): UserRole => {
|
|
|
|
switch (roleId) {
|
|
|
|
case 1:
|
|
|
|
return UserRole.Admin;
|
|
|
|
case 2:
|
|
|
|
return UserRole.User;
|
2022-06-10 16:09:07 +02:00
|
|
|
case 3:
|
|
|
|
return UserRole.NoAccess;
|
2022-05-27 21:28:34 +02:00
|
|
|
default:
|
|
|
|
return UserRole.NoAccess;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
const transformRoleIdByRole = (role: UserRole | null): number | null => {
|
|
|
|
switch (role) {
|
|
|
|
case UserRole.Admin:
|
|
|
|
return 1;
|
|
|
|
case UserRole.User:
|
|
|
|
return 2;
|
2022-06-10 16:09:07 +02:00
|
|
|
case UserRole.NoAccess:
|
|
|
|
return 3;
|
2022-05-27 21:28:34 +02:00
|
|
|
default:
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2022-05-17 11:52:08 +02:00
|
|
|
export const transformAppRoles = (data: any): AppRoles => {
|
2022-05-27 21:28:34 +02:00
|
|
|
const userRole = transformRoleById(data.role_id);
|
2021-09-27 12:17:33 +02:00
|
|
|
|
2022-05-17 11:52:08 +02:00
|
|
|
return {
|
|
|
|
name: data.name ?? '',
|
2022-05-27 21:28:34 +02:00
|
|
|
role: userRole,
|
2022-05-17 11:52:08 +02:00
|
|
|
};
|
|
|
|
};
|
2021-12-21 14:55:46 +00:00
|
|
|
|
2022-05-17 11:52:08 +02:00
|
|
|
export const transformRequestAppRoles = (data: AppRoles): any => {
|
2022-05-27 21:28:34 +02:00
|
|
|
const resolvedRequestRole = transformRoleIdByRole(data.role) ?? null;
|
2022-04-15 14:30:27 +02:00
|
|
|
|
2021-12-21 14:55:46 +00:00
|
|
|
return {
|
2022-05-17 11:52:08 +02:00
|
|
|
name: data.name ?? '',
|
|
|
|
role_id: resolvedRequestRole,
|
2021-12-21 14:55:46 +00:00
|
|
|
};
|
|
|
|
};
|
2021-09-27 12:17:33 +02:00
|
|
|
|
2022-05-17 11:52:08 +02:00
|
|
|
export const transformUser = (response: any): User => {
|
|
|
|
return {
|
|
|
|
id: response.id ?? '',
|
|
|
|
app_roles: response.traits.app_roles ? response.traits.app_roles.map(transformAppRoles) : [],
|
|
|
|
email: response.traits.email ?? '',
|
|
|
|
name: response.traits.name ?? '',
|
|
|
|
preferredUsername: response.preferredUsername ?? '',
|
|
|
|
status: response.state ?? '',
|
|
|
|
};
|
|
|
|
};
|
2021-12-21 14:55:46 +00:00
|
|
|
|
2022-05-17 11:52:08 +02:00
|
|
|
export const transformRequestUser = (data: Pick<User, 'app_roles' | 'name' | 'email'>) => {
|
2021-12-21 14:55:46 +00:00
|
|
|
return {
|
2022-05-17 11:52:08 +02:00
|
|
|
app_roles: data.app_roles.map(transformRequestAppRoles),
|
|
|
|
email: data.email ?? '',
|
|
|
|
name: data.name ?? '',
|
2021-12-21 14:55:46 +00:00
|
|
|
};
|
|
|
|
};
|
2022-07-17 20:00:50 +02:00
|
|
|
|
|
|
|
const extractUsersFromCsv = (csvData: string) => {
|
|
|
|
const csvRows = csvData.split('\n');
|
|
|
|
|
|
|
|
return _.map(csvRows, (row) => {
|
|
|
|
const values = row.split(',');
|
|
|
|
const email = values[0].trim();
|
|
|
|
const name = !_.isNil(values[1]) ? values[1].trim() : '';
|
|
|
|
return { email, name, app_roles: [] };
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
export const transformRequestMultipleUsers = (data: MultipleUsersData) => {
|
|
|
|
const batchUsers = extractUsersFromCsv(data.csvUserData);
|
|
|
|
return {
|
|
|
|
users: _.map(batchUsers, (user) =>
|
|
|
|
transformRequestUser({ app_roles: data.appRoles, name: user.name, email: user.email } as User),
|
|
|
|
),
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
export const transformBatchResponse = (response: any): any => {
|
|
|
|
return {
|
2022-07-19 16:47:50 +02:00
|
|
|
success: response.success,
|
|
|
|
existing: response.existing,
|
|
|
|
failed: response.failed,
|
2022-07-17 20:00:50 +02:00
|
|
|
};
|
|
|
|
};
|