Skip to content

Commit

Permalink
Refacto user service
Browse files Browse the repository at this point in the history
Signed-off-by: freddidierRTE <[email protected]>
  • Loading branch information
freddidierRTE authored and vlo-rte committed Dec 23, 2024
1 parent ba3daae commit 4fe9941
Show file tree
Hide file tree
Showing 68 changed files with 349 additions and 346 deletions.
4 changes: 2 additions & 2 deletions ui/main/src/app/authentication/none-authentication-handler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@

import {AuthenticatedUser} from './auth.model';
import {AuthHandler} from './auth-handler';
import {UserService} from 'app/business/services/users/user.service';
import {UsersService} from '@ofServices/users/UsersService';
import {Message, MessageLevel} from '@ofModel/message.model';
import {LoggerService as logger} from 'app/services/logs/LoggerService';

export class NoneAuthenticationHandler extends AuthHandler {
initializeAuthentication() {
UserService.currentUserWithPerimeters().subscribe((foundUser) => {
UsersService.currentUserWithPerimeters().subscribe((foundUser) => {
if (foundUser != null) {
logger.info('None auth mode - User (' + foundUser.userData.login + ') found');
const user = new AuthenticatedUser();
Expand Down
14 changes: 7 additions & 7 deletions ui/main/src/app/business/application-loader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import {ConfigService} from '../services/config/ConfigService';
import {LoggerService as logger, LogOption} from 'app/services/logs/LoggerService';
import {RemoteLoggerService} from '../services/logs/RemoteLoggerService';
import {TranslationService} from '../services/translation/TranslationService';
import {UserService} from './services/users/user.service';
import {UsersService} from '../services/users/UsersService';
import {OpfabAPI} from '../api/opfab.api';
import {GlobalStyleService} from '../services/style/global-style.service';
import {EntitiesService} from '../services/entities/EntitiesService';
Expand Down Expand Up @@ -66,7 +66,7 @@ export class ApplicationLoader {
RemoteLoggerService.setRemoteLoggerServer(servers.remoteLoggerServer);
TranslationService.setConfigServer(servers.configServer);
TranslationService.setTranslationLib(servers.translationLib);
UserService.setUserServer(servers.userServer);
UsersService.setUsersServer(servers.usersServer);
RouterService.setApplicationRouter(servers.routerService);
EntitiesService.setEntitiesServer(servers.entitiesServer);
GroupsService.setGroupsServer(servers.groupsServer);
Expand Down Expand Up @@ -194,7 +194,7 @@ export class ApplicationLoader {
}

private synchronizeUserTokenWithOpfabUserDatabase() {
UserService.synchronizeWithToken().subscribe({
UsersService.synchronizeWithToken().subscribe({
next: () => logger.info('Synchronization of user token with user database done'),
error: () => logger.warn('Impossible to synchronize user token with user database')
});
Expand All @@ -221,7 +221,7 @@ export class ApplicationLoader {
private async isUserToBeDisconnectedBecauseLoginAlreadyInUse(): Promise<boolean> {
this.loadingInProgress = false;
const isAccountAlreadyUsed = await firstValueFrom(
UserService.willNewSubscriptionDisconnectAnExistingSubscription()
UsersService.willNewSubscriptionDisconnectAnExistingSubscription()
);

if (isAccountAlreadyUsed) {
Expand All @@ -247,7 +247,7 @@ export class ApplicationLoader {
private async loadAllConfigurationData(): Promise<any[]> {
const requestsToLaunch$ = [
ConfigService.loadUiMenuConfig(),
UserService.loadUserWithPerimetersData(),
UsersService.loadUserWithPerimetersData(),
EntitiesService.loadAllEntitiesData(),
GroupsService.loadAllGroupsData(),
ProcessesService.loadAllProcessesWithLatestVersion(),
Expand All @@ -261,8 +261,8 @@ export class ApplicationLoader {

private async isUserToBeDisconnectedBecauseIsNotAssociatedToAnyGroups(): Promise<boolean> {
if (
UserService.getCurrentUserWithPerimeters().userData.groups === undefined ||
UserService.getCurrentUserWithPerimeters().userData.groups.length === 0
UsersService.getCurrentUserWithPerimeters().userData.groups === undefined ||
UsersService.getCurrentUserWithPerimeters().userData.groups.length === 0
) {
this.isAllowedToAccessOpfab = false;
await ModalService.openInformationModal(new I18n('global.isNotAllowedToAccessOpfab'));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import {EntitiesService} from '@ofServices/entities/EntitiesService';
import {GroupsService} from '@ofServices/groups/GroupsService';
import {LogOption, LoggerService as logger} from 'app/services/logs/LoggerService';
import {TemplateCssService} from 'app/business/services/card/template-css.service';
import {UserService} from 'app/business/services/users/user.service';
import {UsersService} from '@ofServices/users/UsersService';
import {HandlebarsService} from '@ofServices/handlebars/HandlebarsService';
import {debounce, timer, map, catchError, switchMap} from 'rxjs';
import {Utilities} from '../../common/utilities';
Expand Down Expand Up @@ -55,7 +55,7 @@ export class ApplicationUpdateService {
debounce(() => timer(5000 + Math.floor(Math.random() * 5000))), // use a random part to avoid all UI to access at the same time the server
switchMap(() => {
const requestsToLaunch$ = [
UserService.loadUserWithPerimetersData(),
UsersService.loadUserWithPerimetersData(),
EntitiesService.loadAllEntitiesData(),
GroupsService.loadAllGroupsData()
];
Expand Down
18 changes: 9 additions & 9 deletions ui/main/src/app/business/services/menu.service.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ import {ServerResponse, ServerResponseStatus} from '../server/serverResponse';
import {MenuService} from './menu.service';
import {ConfigService} from '../../services/config/ConfigService';
import {firstValueFrom} from 'rxjs';
import {UserServerMock} from '@tests/mocks/userServer.mock';
import {UserService} from './users/user.service';
import {User} from '@ofModel/user.model';
import {UserWithPerimeters} from '@ofModel/userWithPerimeters.model';
import {UsersServerMock} from '@tests/mocks/UsersServer.mock';
import {UsersService} from '../../services/users/UsersService';
import {User} from '@ofServices/users/model/User';
import {UserWithPerimeters} from '@ofServices/users/model/UserWithPerimeters';

describe('MenuService', () => {
async function setMenuConfig(config: any) {
Expand All @@ -27,15 +27,15 @@ describe('MenuService', () => {

async function setCurrentUser(userGroups: string[]) {
const user = new User('currentUser', 'firstname', 'lastname', null, userGroups, []);
const userServerMock = new UserServerMock();
userServerMock.setResponseForUser(new ServerResponse(user, ServerResponseStatus.OK, null));
const usersServerMock = new UsersServerMock();
usersServerMock.setResponseForUser(new ServerResponse(user, ServerResponseStatus.OK, null));
const userForPerimeter = new User('currentUser', 'firstname', 'lastname', null, userGroups, []);
const userWithPerimeters = new UserWithPerimeters(userForPerimeter, new Array(), null, new Map());
userServerMock.setResponseForCurrentUserWithPerimeter(
usersServerMock.setResponseForCurrentUserWithPerimeter(
new ServerResponse(userWithPerimeters, ServerResponseStatus.OK, null)
);
UserService.setUserServer(userServerMock);
await firstValueFrom(UserService.loadUserWithPerimetersData());
UsersService.setUsersServer(usersServerMock);
await firstValueFrom(UsersService.loadUserWithPerimetersData());
}

describe('Night day mode menu', () => {
Expand Down
4 changes: 2 additions & 2 deletions ui/main/src/app/business/services/menu.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
*/

import {ConfigService} from 'app/services/config/ConfigService';
import {UserService} from 'app/business/services/users/user.service';
import {UsersService} from '@ofServices/users/UsersService';
import {LoggerService as logger} from 'app/services/logs/LoggerService';

export class MenuService {
Expand Down Expand Up @@ -41,7 +41,7 @@ export class MenuService {
return (
!menuConfig.showOnlyForGroups ||
menuConfig.showOnlyForGroups.length === 0 ||
(menuConfig.showOnlyForGroups && UserService.isCurrentUserInAnyGroup(menuConfig.showOnlyForGroups))
(menuConfig.showOnlyForGroups && UsersService.isCurrentUserInAnyGroup(menuConfig.showOnlyForGroups))
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
*/

import {ProcessesService} from '@ofServices/processes/ProcessesService';
import {UserService} from 'app/business/services/users/user.service';
import {UsersService} from '@ofServices/users/UsersService';
import {MultiSelectOption} from '@ofModel/multiselect.model';
import {Process} from '@ofServices/processes/model/Processes';
import {TranslationService} from '@ofServices/translation/TranslationService';
Expand Down Expand Up @@ -65,7 +65,7 @@ export class ProcessStatesMultiSelectOptionsService {
return (
!(hideChildStates && isOnlyAChildState) &&
(isAdminModeAndUserHasRightToSeeAllStates ||
UserService.isReceiveRightsForProcessAndState(processId, stateId))
UsersService.isReceiveRightsForProcessAndState(processId, stateId))
);
}

Expand All @@ -76,7 +76,7 @@ export class ProcessStatesMultiSelectOptionsService {
const processesWithoutProcessGroupMultiSelectOptions: Array<MultiSelectOption> = [];

ProcessesService.getProcessesWithoutProcessGroup(processesFilter).forEach((process) => {
if (isAdminModeAndUserHasRightToSeeAllStates || UserService.isReceiveRightsForProcess(process.id))
if (isAdminModeAndUserHasRightToSeeAllStates || UsersService.isReceiveRightsForProcess(process.id))
processesWithoutProcessGroupMultiSelectOptions.push(new MultiSelectOption(process.id, process.name));
});
return processesWithoutProcessGroupMultiSelectOptions;
Expand All @@ -92,7 +92,7 @@ export class ProcessStatesMultiSelectOptionsService {
processMultiSelectOptionsPerProcessGroups.forEach((processList, processGroupId) => {
if (!isAdminModeAndUserHasRightToSeeAllStates) {
processList = processList.filter((processData) =>
UserService.isReceiveRightsForProcess(processData.value)
UsersService.isReceiveRightsForProcess(processData.value)
);
}

Expand Down
10 changes: 5 additions & 5 deletions ui/main/src/app/business/services/user-permissions.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@
* This file is part of the OperatorFabric project.
*/

import {userRight, UserWithPerimeters} from '@ofModel/userWithPerimeters.model';
import {userRight, UserWithPerimeters} from '@ofServices/users/model/UserWithPerimeters';
import {Card} from '@ofModel/card.model';
import {Process} from '@ofServices/processes/model/Processes';
import {RightsEnum} from '@ofModel/perimeter.model';
import {EntitiesService} from '@ofServices/entities/EntitiesService';
import {User} from '@ofModel/user.model';
import {User} from '@ofServices/users/model/User';
import {LoggerService} from 'app/services/logs/LoggerService';
import {UserService} from './users/user.service';
import {UsersService} from '../../services/users/UsersService';
import {PermissionEnum} from '@ofServices/groups/model/PermissionEnum';

export class UserPermissionsService {
Expand All @@ -33,7 +33,7 @@ export class UserPermissionsService {
public static doesTheUserHavePermissionToDeleteCard(user: UserWithPerimeters, card: Card): boolean {
let permission = false;
if (
!UserService.hasCurrentUserAnyPermission([PermissionEnum.READONLY]) &&
!UsersService.hasCurrentUserAnyPermission([PermissionEnum.READONLY]) &&
card.publisherType === 'ENTITY' &&
user.userData.entities.includes(card.publisher)
) {
Expand All @@ -43,7 +43,7 @@ export class UserPermissionsService {
}

public static doesTheUserHavePermissionToEditCard(user: UserWithPerimeters, card: Card): boolean {
if (UserService.hasCurrentUserAnyPermission([PermissionEnum.READONLY])) return false;
if (UsersService.hasCurrentUserAnyPermission([PermissionEnum.READONLY])) return false;
if (card.entitiesAllowedToEdit && UserPermissionsService.isUserInEntityAllowedToEditCard(user.userData, card))
return UserPermissionsService.checkUserWritePerimeter(user, card);
if (card.publisherType === 'ENTITY' && user.userData.entities.includes(card.publisher))
Expand Down
6 changes: 3 additions & 3 deletions ui/main/src/app/business/store/lightcards/lightcards-store.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import {
takeUntil,
tap
} from 'rxjs';
import {UserService} from 'app/business/services/users/user.service';
import {UsersService} from '@ofServices/users/UsersService';
import {OpfabEventStreamService} from 'app/business/services/events/opfabEventStream.service';
import {CardOperationType} from '@ofModel/card-operation.model';
import {LogOption, LoggerService as logger} from 'app/services/logs/LoggerService';
Expand Down Expand Up @@ -313,7 +313,7 @@ export class LightCardsStore {
}

private isLightChildCardFromCurrentUserEntity(childCard): boolean {
return UserService.getCurrentUserWithPerimeters().userData.entities.some(
return UsersService.getCurrentUserWithPerimeters().userData.entities.some(
(entity) => entity === childCard.publisher
);
}
Expand Down Expand Up @@ -379,7 +379,7 @@ export class LightCardsStore {
}

private getChildCardsFromCurrentUserEntity(children: LightCard[]) {
const userEntities = UserService.getCurrentUserWithPerimeters().userData.entities;
const userEntities = UsersService.getCurrentUserWithPerimeters().userData.entities;
return children.filter((c) => userEntities.includes(c.publisher));
}

Expand Down
Loading

0 comments on commit 4fe9941

Please sign in to comment.