From 56618a5fdb6d2a45a2c9dc986fa23a7060f3c59f Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Thu, 21 Oct 2021 17:40:17 +0300 Subject: [PATCH] move user to red-domain --- .../user-profile-screen.component.ts | 7 ++-- .../app/models/file/annotation.permissions.ts | 2 +- .../src/app/models/file/file-data.model.ts | 2 +- ...edit-dossier-attribute-dialog.component.ts | 4 +- .../add-edit-user-dialog.component.ts | 2 +- .../reset-password.component.ts | 2 +- .../user-details/user-details.component.ts | 4 +- .../user-listing-screen.component.ts | 2 +- .../dossier-attribute-types-translations.ts | 2 +- .../dossier-details.component.ts | 3 +- .../dossiers-listing/config.service.ts | 3 +- .../file-preview-screen.component.ts | 3 +- .../assign-user-dropdown.component.ts | 2 +- .../initials-avatar.component.ts | 2 +- .../src/app/modules/shared/pipes/name.pipe.ts | 7 +--- apps/red-ui/src/app/services/user.service.ts | 18 +++----- libs/red-domain/src/index.ts | 1 + libs/red-domain/src/lib/users/index.ts | 5 +++ .../lib/users/my-profile-update.request.ts | 14 +++++++ .../src/lib/users/profile-update.request.ts} | 16 +++----- .../src/lib/users/profile.interface.ts | 7 ++++ .../src/lib/users/user.interface.ts | 15 +++++++ .../red-domain/src/lib/users/user.model.ts | 22 ++++++---- libs/red-ui-http/src/lib/model/models.ts | 5 --- .../src/lib/model/updateProfileRequest.ts | 30 -------------- libs/red-ui-http/src/lib/model/user.ts | 41 ------------------- 26 files changed, 85 insertions(+), 136 deletions(-) create mode 100644 libs/red-domain/src/lib/users/index.ts create mode 100644 libs/red-domain/src/lib/users/my-profile-update.request.ts rename libs/{red-ui-http/src/lib/model/updateMyProfileRequest.ts => red-domain/src/lib/users/profile-update.request.ts} (58%) create mode 100644 libs/red-domain/src/lib/users/profile.interface.ts create mode 100644 libs/red-domain/src/lib/users/user.interface.ts rename apps/red-ui/src/app/models/user.ts => libs/red-domain/src/lib/users/user.model.ts (60%) delete mode 100644 libs/red-ui-http/src/lib/model/updateProfileRequest.ts delete mode 100644 libs/red-ui-http/src/lib/model/user.ts diff --git a/apps/red-ui/src/app/components/user-profile/user-profile-screen.component.ts b/apps/red-ui/src/app/components/user-profile/user-profile-screen.component.ts index c7d14e425..1601afc46 100644 --- a/apps/red-ui/src/app/components/user-profile/user-profile-screen.component.ts +++ b/apps/red-ui/src/app/components/user-profile/user-profile-screen.component.ts @@ -1,6 +1,6 @@ import { Component, OnInit } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; -import { ProfileModel, UserService } from '@services/user.service'; +import { UserService } from '@services/user.service'; import { PermissionsService } from '@services/permissions.service'; import { LanguageService } from '@i18n/language.service'; import { TranslateService } from '@ngx-translate/core'; @@ -8,6 +8,7 @@ import { ConfigService } from '@services/config.service'; import { DomSanitizer } from '@angular/platform-browser'; import { languagesTranslations } from '../../translations/languages-translations'; import { LoadingService } from '@iqser/common-ui'; +import { IProfile } from '@red/domain'; @Component({ selector: 'redaction-user-profile-screen', @@ -19,7 +20,7 @@ export class UserProfileScreenComponent implements OnInit { changePasswordUrl: any; translations = languagesTranslations; - private _profileModel: ProfileModel; + private _profileModel: IProfile; constructor( readonly permissionsService: PermissionsService, @@ -77,7 +78,7 @@ export class UserProfileScreenComponent implements OnInit { } if (this.profileChanged) { - const value = this.formGroup.value as ProfileModel; + const value = this.formGroup.value as IProfile; delete value.language; await this._userService diff --git a/apps/red-ui/src/app/models/file/annotation.permissions.ts b/apps/red-ui/src/app/models/file/annotation.permissions.ts index e8bdc1fd0..62b5645c5 100644 --- a/apps/red-ui/src/app/models/file/annotation.permissions.ts +++ b/apps/red-ui/src/app/models/file/annotation.permissions.ts @@ -1,6 +1,6 @@ import { AnnotationWrapper } from './annotation.wrapper'; import { isArray } from 'rxjs/internal-compatibility'; -import { User } from '@models/user'; +import { User } from '@red/domain'; export class AnnotationPermissions { canUndo = true; diff --git a/apps/red-ui/src/app/models/file/file-data.model.ts b/apps/red-ui/src/app/models/file/file-data.model.ts index 9056d7d37..2d32c7c59 100644 --- a/apps/red-ui/src/app/models/file/file-data.model.ts +++ b/apps/red-ui/src/app/models/file/file-data.model.ts @@ -4,7 +4,7 @@ import { AnnotationWrapper } from './annotation.wrapper'; import { RedactionLogEntryWrapper } from './redaction-log-entry.wrapper'; import { ViewMode } from './view-mode'; import * as moment from 'moment'; -import { User } from '@models/user'; +import { User } from '@red/domain'; import { Dictionary } from '@models/dictionary'; export class AnnotationData { diff --git a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-attribute-dialog/add-edit-dossier-attribute-dialog.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-attribute-dialog/add-edit-dossier-attribute-dialog.component.ts index 710a846b6..11b57cbf6 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-attribute-dialog/add-edit-dossier-attribute-dialog.component.ts +++ b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-attribute-dialog/add-edit-dossier-attribute-dialog.component.ts @@ -1,13 +1,13 @@ import { Component, Inject, OnDestroy } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; -import { DossierAttributeConfigTypes, FileAttributeConfigTypes } from '@redaction/red-ui-http'; +import { FileAttributeConfigTypes } from '@redaction/red-ui-http'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { AutoUnsubscribe, LoadingService, Toaster } from '@iqser/common-ui'; import { HttpErrorResponse } from '@angular/common/http'; import { DossierAttributesService } from '@shared/services/controller-wrappers/dossier-attributes.service'; import { dossierAttributeTypesTranslations } from '../../translations/dossier-attribute-types-translations'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; -import { IDossierAttributeConfig } from '@red/domain'; +import { DossierAttributeConfigTypes, IDossierAttributeConfig } from '@red/domain'; @Component({ templateUrl: './add-edit-dossier-attribute-dialog.component.html', diff --git a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-user-dialog/add-edit-user-dialog.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-user-dialog/add-edit-user-dialog.component.ts index 5b28e9688..30b9e7c21 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-user-dialog/add-edit-user-dialog.component.ts +++ b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-user-dialog/add-edit-user-dialog.component.ts @@ -1,6 +1,6 @@ import { Component, Inject } from '@angular/core'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; -import { User } from '@models/user'; +import { User } from '@red/domain'; @Component({ selector: 'redaction-add-edit-user-dialog', diff --git a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-user-dialog/reset-password/reset-password.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-user-dialog/reset-password/reset-password.component.ts index 0740d4ad1..d877418ce 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-user-dialog/reset-password/reset-password.component.ts +++ b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-user-dialog/reset-password/reset-password.component.ts @@ -2,7 +2,7 @@ import { Component, EventEmitter, Input, Output } from '@angular/core'; import { FormBuilder, Validators } from '@angular/forms'; import { UserService } from '@services/user.service'; import { LoadingService } from '@iqser/common-ui'; -import { User } from '@models/user'; +import { User } from '@red/domain'; @Component({ selector: 'redaction-reset-password', diff --git a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-user-dialog/user-details/user-details.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-user-dialog/user-details/user-details.component.ts index f73127f46..515a3f642 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-user-dialog/user-details/user-details.component.ts +++ b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-user-dialog/user-details/user-details.component.ts @@ -4,7 +4,7 @@ import { AdminDialogService } from '../../../services/admin-dialog.service'; import { IconButtonTypes, LoadingService, Toaster } from '@iqser/common-ui'; import { rolesTranslations } from '../../../../../translations/roles-translations'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; -import { User } from '@models/user'; +import { User } from '@red/domain'; import { UserService } from '@services/user.service'; @Component({ @@ -85,7 +85,7 @@ export class UserDetailsComponent implements OnInit { ...prev, [role]: [ { - value: this.user && this.user.roles.indexOf(role) !== -1, + value: this.user && this.user.hasRole(role), disabled: this.shouldBeDisabled(role), }, ], diff --git a/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.ts index f77aba954..f0648879b 100644 --- a/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.ts @@ -17,7 +17,7 @@ import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; import { rolesTranslations } from '../../../../translations/roles-translations'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; -import { User } from '@models/user'; +import { User } from '@red/domain'; @Component({ templateUrl: './user-listing-screen.component.html', diff --git a/apps/red-ui/src/app/modules/admin/translations/dossier-attribute-types-translations.ts b/apps/red-ui/src/app/modules/admin/translations/dossier-attribute-types-translations.ts index 451b9b0ed..f37ed8473 100644 --- a/apps/red-ui/src/app/modules/admin/translations/dossier-attribute-types-translations.ts +++ b/apps/red-ui/src/app/modules/admin/translations/dossier-attribute-types-translations.ts @@ -1,5 +1,5 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; -import { DossierAttributeConfigType } from '@redaction/red-ui-http'; +import { DossierAttributeConfigType } from '@red/domain'; export const dossierAttributeTypesTranslations: { [key in DossierAttributeConfigType]: string } = { TEXT: _('dossier-attribute-types.text'), diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/dossier-details/dossier-details.component.ts b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/dossier-details/dossier-details.component.ts index e0cd90906..b5f343a8b 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/dossier-details/dossier-details.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/dossier-details/dossier-details.component.ts @@ -7,9 +7,8 @@ import { UserService } from '@services/user.service'; import { FilterService, Toaster } from '@iqser/common-ui'; import { fileStatusTranslations } from '../../../../translations/file-status-translations'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; -import { User } from '@models/user'; +import { DossierAttributeWithValue, IDossierRequest, User } from '@red/domain'; import { DossiersService } from '@services/entity-services/dossiers.service'; -import { DossierAttributeWithValue, IDossierRequest } from '@red/domain'; @Component({ selector: 'redaction-dossier-details', diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/config.service.ts b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/config.service.ts index 04bab4020..8498de620 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/config.service.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/config.service.ts @@ -1,11 +1,10 @@ import { Injectable, TemplateRef } from '@angular/core'; import { ButtonConfig, IFilterGroup, keyChecker, NestedFilter, TableColumnConfig } from '@iqser/common-ui'; -import { Dossier } from '@red/domain'; +import { Dossier, User } from '@red/domain'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { TranslateService } from '@ngx-translate/core'; import { UserPreferenceService } from '@services/user-preference.service'; import { UserService } from '@services/user.service'; -import { User } from '@models/user'; import { fileStatusTranslations } from '../../translations/file-status-translations'; import { annotationFilterChecker, diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.ts b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.ts index ce24e5fe8..0b63fa98c 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.ts @@ -41,10 +41,9 @@ import { fileStatusTranslations } from '../../translations/file-status-translati import { handleFilterDelta } from '@utils/filter-utils'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { FileActionsComponent } from '../../shared/components/file-actions/file-actions.component'; -import { User } from '@models/user'; +import { Dossier, User } from '@red/domain'; import { FilesService } from '@services/entity-services/files.service'; import { DossiersService } from '@services/entity-services/dossiers.service'; -import { Dossier } from '@red/domain'; import { FileManagementService } from '../../shared/services/file-management.service'; import Annotation = Core.Annotations.Annotation; diff --git a/apps/red-ui/src/app/modules/shared/components/assign-user-dropdown/assign-user-dropdown.component.ts b/apps/red-ui/src/app/modules/shared/components/assign-user-dropdown/assign-user-dropdown.component.ts index f1b76ef91..51f24a764 100644 --- a/apps/red-ui/src/app/modules/shared/components/assign-user-dropdown/assign-user-dropdown.component.ts +++ b/apps/red-ui/src/app/modules/shared/components/assign-user-dropdown/assign-user-dropdown.component.ts @@ -1,6 +1,6 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core'; import { UserService } from '@services/user.service'; -import { User } from '@models/user'; +import { User } from '@red/domain'; import { List } from '@iqser/common-ui'; @Component({ diff --git a/apps/red-ui/src/app/modules/shared/components/initials-avatar/initials-avatar.component.ts b/apps/red-ui/src/app/modules/shared/components/initials-avatar/initials-avatar.component.ts index ac759b710..20f99feb5 100644 --- a/apps/red-ui/src/app/modules/shared/components/initials-avatar/initials-avatar.component.ts +++ b/apps/red-ui/src/app/modules/shared/components/initials-avatar/initials-avatar.component.ts @@ -1,7 +1,7 @@ import { ChangeDetectionStrategy, Component, Input, OnChanges, OnDestroy, OnInit } from '@angular/core'; import { UserService } from '@services/user.service'; import { AutoUnsubscribe } from '@iqser/common-ui'; -import { User } from '@models/user'; +import { User } from '@red/domain'; import { TranslateService } from '@ngx-translate/core'; import { NamePipeOptions } from '@shared/pipes/name.pipe'; diff --git a/apps/red-ui/src/app/modules/shared/pipes/name.pipe.ts b/apps/red-ui/src/app/modules/shared/pipes/name.pipe.ts index 90a54fe78..aba1521d5 100644 --- a/apps/red-ui/src/app/modules/shared/pipes/name.pipe.ts +++ b/apps/red-ui/src/app/modules/shared/pipes/name.pipe.ts @@ -1,7 +1,7 @@ import { Pipe, PipeTransform } from '@angular/core'; import { UserService } from '@services/user.service'; import { TranslateService } from '@ngx-translate/core'; -import { User } from '@models/user'; +import { User } from '@red/domain'; function getInitials(name: string) { if (name.toLowerCase() === 'system') { @@ -15,11 +15,6 @@ function getInitials(name: string) { .join(''); } -function isSystemUser(user: User | string) { - const userId = typeof user === 'string' ? user : user.id; - return userId.toLowerCase() === 'system'; -} - export interface NamePipeOptions { showYou?: boolean; showInitials?: boolean; diff --git a/apps/red-ui/src/app/services/user.service.ts b/apps/red-ui/src/app/services/user.service.ts index 39e815871..9202122ba 100644 --- a/apps/red-ui/src/app/services/user.service.ts +++ b/apps/red-ui/src/app/services/user.service.ts @@ -1,22 +1,14 @@ import { Inject, Injectable, Injector } from '@angular/core'; import { KeycloakService } from 'keycloak-angular'; import jwt_decode from 'jwt-decode'; -import { CreateUserRequest, IUser, ResetPasswordRequest, UpdateMyProfileRequest, UpdateProfileRequest } from '@redaction/red-ui-http'; +import { CreateUserRequest, ResetPasswordRequest } from '@redaction/red-ui-http'; import { wipeCaches } from '@redaction/red-cache'; import { BASE_HREF } from '../tokens'; import { BehaviorSubject, Observable } from 'rxjs'; -import { User } from '@models/user'; +import { IMyProfileUpdateRequest, IProfileUpdateRequest, IUser, User } from '@red/domain'; import { EntitiesService, List, mapEach, QueryParam, RequiredParam, Validate } from '@iqser/common-ui'; import { tap } from 'rxjs/operators'; -export interface ProfileModel { - username?: string; - email: string; - firstName: string; - lastName: string; - language: string; -} - @Injectable({ providedIn: 'root', }) @@ -77,7 +69,7 @@ export class UserService extends EntitiesService { hasAnyRole(requiredRoles: string[], user = this.currentUser): boolean { if (requiredRoles?.length > 0) { for (const role of requiredRoles) { - if (user.roles.indexOf(role) >= 0) { + if (user.hasRole(role)) { return true; } } @@ -94,12 +86,12 @@ export class UserService extends EntitiesService { } @Validate() - updateProfile(@RequiredParam() body: UpdateProfileRequest, @RequiredParam() userId: string) { + updateProfile(@RequiredParam() body: IProfileUpdateRequest, @RequiredParam() userId: string) { return this._post(body, `${this._defaultModelPath}/profile/${userId}`); } @Validate() - updateMyProfile(@RequiredParam() body: UpdateMyProfileRequest) { + updateMyProfile(@RequiredParam() body: IMyProfileUpdateRequest) { return this._post(body, `${this._defaultModelPath}/my-profile`); } diff --git a/libs/red-domain/src/index.ts b/libs/red-domain/src/index.ts index 319d44f4d..48208fa27 100644 --- a/libs/red-domain/src/index.ts +++ b/libs/red-domain/src/index.ts @@ -2,3 +2,4 @@ export * from './lib/dossiers'; export * from './lib/search'; export * from './lib/shared/types'; export * from './lib/dossier-attributes'; +export * from './lib/users'; diff --git a/libs/red-domain/src/lib/users/index.ts b/libs/red-domain/src/lib/users/index.ts new file mode 100644 index 000000000..403810e2f --- /dev/null +++ b/libs/red-domain/src/lib/users/index.ts @@ -0,0 +1,5 @@ +export * from './user.model'; +export * from './user.interface'; +export * from './my-profile-update.request'; +export * from './profile-update.request'; +export * from './profile.interface'; diff --git a/libs/red-domain/src/lib/users/my-profile-update.request.ts b/libs/red-domain/src/lib/users/my-profile-update.request.ts new file mode 100644 index 000000000..e29d1d09f --- /dev/null +++ b/libs/red-domain/src/lib/users/my-profile-update.request.ts @@ -0,0 +1,14 @@ +export interface IMyProfileUpdateRequest { + /** + * Email of user. + */ + email?: string; + /** + * First name of user. + */ + firstName?: string; + /** + * Last name of user. + */ + lastName?: string; +} diff --git a/libs/red-ui-http/src/lib/model/updateMyProfileRequest.ts b/libs/red-domain/src/lib/users/profile-update.request.ts similarity index 58% rename from libs/red-ui-http/src/lib/model/updateMyProfileRequest.ts rename to libs/red-domain/src/lib/users/profile-update.request.ts index 9a5c499c4..70eac284e 100644 --- a/libs/red-ui-http/src/lib/model/updateMyProfileRequest.ts +++ b/libs/red-domain/src/lib/users/profile-update.request.ts @@ -9,18 +9,12 @@ * https://github.com/swagger-api/swagger-codegen.git * Do not edit the class manually. */ +import { IMyProfileUpdateRequest } from './my-profile-update.request'; +import { List } from '@iqser/common-ui'; -export interface UpdateMyProfileRequest { +export interface IProfileUpdateRequest extends IMyProfileUpdateRequest { /** - * Email of user. + * Roles. */ - email?: string; - /** - * First name of user. - */ - firstName?: string; - /** - * Last name of user. - */ - lastName?: string; + roles?: List; } diff --git a/libs/red-domain/src/lib/users/profile.interface.ts b/libs/red-domain/src/lib/users/profile.interface.ts new file mode 100644 index 000000000..d45a837bd --- /dev/null +++ b/libs/red-domain/src/lib/users/profile.interface.ts @@ -0,0 +1,7 @@ +export interface IProfile { + username?: string; + email: string; + firstName: string; + lastName: string; + language: string; +} diff --git a/libs/red-domain/src/lib/users/user.interface.ts b/libs/red-domain/src/lib/users/user.interface.ts new file mode 100644 index 000000000..310383a93 --- /dev/null +++ b/libs/red-domain/src/lib/users/user.interface.ts @@ -0,0 +1,15 @@ +/** + * Object containing information of user and roles. + */ +import { IProfileUpdateRequest } from './profile-update.request'; + +export interface IUser extends IProfileUpdateRequest { + /** + * Id of user. + */ + readonly userId?: string; + /** + * Username for login. + */ + readonly username?: string; +} diff --git a/apps/red-ui/src/app/models/user.ts b/libs/red-domain/src/lib/users/user.model.ts similarity index 60% rename from apps/red-ui/src/app/models/user.ts rename to libs/red-domain/src/lib/users/user.model.ts index 70b6f180b..4d1ca7663 100644 --- a/apps/red-ui/src/app/models/user.ts +++ b/libs/red-domain/src/lib/users/user.model.ts @@ -1,20 +1,20 @@ -import { IUser } from '@redaction/red-ui-http'; import { IListable, List } from '@iqser/common-ui'; import { KeycloakProfile } from 'keycloak-js'; +import { IUser } from './user.interface'; export class User implements IUser, IListable { - readonly email: string; - readonly username: string; + readonly email?: string; + readonly username?: string; readonly firstName?: string; readonly lastName?: string; - readonly name: string; + readonly name?: string; readonly searchKey: string; readonly isActive = this.roles.length > 0; - readonly isManager = this.roles.indexOf('RED_MANAGER') >= 0; - readonly isUserAdmin = this.roles.indexOf('RED_USER_ADMIN') >= 0; - readonly isUser = this.roles.indexOf('RED_USER') >= 0; - readonly isAdmin = this.roles.indexOf('RED_ADMIN') >= 0; + readonly isManager = this.hasRole('RED_MANAGER'); + readonly isUserAdmin = this.hasRole('RED_USER_ADMIN'); + readonly isUser = this.hasRole('RED_USER'); + readonly isAdmin = this.hasRole('RED_ADMIN'); readonly hasAnyREDRoles = this.isUser || this.isManager || this.isAdmin || this.isUserAdmin; constructor(user: KeycloakProfile | IUser, readonly roles: List, readonly id: string) { @@ -23,6 +23,10 @@ export class User implements IUser, IListable { this.firstName = user.firstName; this.lastName = user.lastName; this.name = this.firstName && this.lastName ? `${this.firstName} ${this.lastName}` : this.username; - this.searchKey = this.name + this.username + this.email; + this.searchKey = `${this.name}${this.username}${this.email}`; + } + + hasRole(role: string): boolean { + return this.roles.indexOf(role) >= 0; } } diff --git a/libs/red-ui-http/src/lib/model/models.ts b/libs/red-ui-http/src/lib/model/models.ts index eadcc8601..cc4356217 100644 --- a/libs/red-ui-http/src/lib/model/models.ts +++ b/libs/red-ui-http/src/lib/model/models.ts @@ -52,13 +52,8 @@ export * from './rules'; export * from './smtp-configuration'; export * from './sectionGrid'; export * from './sectionRectangle'; -export * from './updateMyProfileRequest'; -export * from './updateProfileRequest'; export * from './updateDictionary'; -export * from './user'; export * from './viewedPage'; export * from './viewedPages'; export * from './viewedPagesRequest'; export * from './watermarkModel'; -export { DossierAttributeConfigType } from '../../../../red-domain/src/lib/dossier-attributes/types'; -export { DossierAttributeConfigTypes } from '../../../../red-domain/src/lib/dossier-attributes/types'; diff --git a/libs/red-ui-http/src/lib/model/updateProfileRequest.ts b/libs/red-ui-http/src/lib/model/updateProfileRequest.ts deleted file mode 100644 index 284ec1bbd..000000000 --- a/libs/red-ui-http/src/lib/model/updateProfileRequest.ts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * API Documentation for Redaction Gateway - * Description for redaction - * - * OpenAPI spec version: 1.0 - * - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ - -export interface UpdateProfileRequest { - /** - * Email of user. - */ - email?: string; - /** - * First name of user. - */ - firstName?: string; - /** - * Last name of user. - */ - lastName?: string; - /** - * Roles. - */ - roles?: Array; -} diff --git a/libs/red-ui-http/src/lib/model/user.ts b/libs/red-ui-http/src/lib/model/user.ts deleted file mode 100644 index c51160c70..000000000 --- a/libs/red-ui-http/src/lib/model/user.ts +++ /dev/null @@ -1,41 +0,0 @@ -/** - * API Documentation for Redaction Gateway - * Description for redaction - * - * OpenAPI spec version: 1.0 - * - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ - -/** - * Object containing information of user and roles. - */ -export interface IUser { - /** - * Email of user. - */ - readonly email: string; - /** - * First name of user. - */ - readonly firstName?: string; - /** - * Last name of user. - */ - readonly lastName?: string; - /** - * The list of RED_* roles. - */ - readonly roles?: readonly string[]; - /** - * Id of user. - */ - readonly userId?: string; - /** - * Username for login. - */ - readonly username?: string; -}