diff --git a/src/app/app.component.html b/src/app/app.component.html index 00031de..14ce919 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,6 +1,6 @@ -
+
diff --git a/src/app/modules/accounts/services/account.service.ts b/src/app/modules/accounts/services/account.service.ts index 572d2ce..6d02458 100644 --- a/src/app/modules/accounts/services/account.service.ts +++ b/src/app/modules/accounts/services/account.service.ts @@ -73,9 +73,7 @@ export class AccountService implements OnDestroy { ) .subscribe({ next: () => { - this.appState.isAuthenticated = false - this.appState.authenticationExpiration = -1 - this.appState.authenticatedEmployee = null + this.appState.resetAuthenticatedEmployee() this.checkAuthenticationStatus() success() }, diff --git a/src/app/modules/colors/components/images-editor/images-editor.component.html b/src/app/modules/colors/components/images-editor/images-editor.component.html index 4408b14..c738cd5 100644 --- a/src/app/modules/colors/components/images-editor/images-editor.component.html +++ b/src/app/modules/colors/components/images-editor/images-editor.component.html @@ -1,4 +1,4 @@ - + Images diff --git a/src/app/modules/colors/components/images-editor/images-editor.component.ts b/src/app/modules/colors/components/images-editor/images-editor.component.ts index c53a23b..42c4499 100644 --- a/src/app/modules/colors/components/images-editor/images-editor.component.ts +++ b/src/app/modules/colors/components/images-editor/images-editor.component.ts @@ -18,6 +18,7 @@ export class ImagesEditorComponent extends SubscribingComponent { imageIds$: Observable backendUrl = environment.apiUrl + hasImages = false constructor( private recipeImageService: RecipeImageService, @@ -32,6 +33,11 @@ export class ImagesEditorComponent extends SubscribingComponent { super.ngOnInit() this.loadImagesIds() + this.subscribe( + this.imageIds$, + ids => this.hasImages = ids.length > 0, + 1 + ) } submit(event) { diff --git a/src/app/modules/colors/components/mix-editor/mix-editor.component.html b/src/app/modules/colors/components/mix-editor/mix-editor.component.html index 3c5f35e..f5c2d65 100644 --- a/src/app/modules/colors/components/mix-editor/mix-editor.component.html +++ b/src/app/modules/colors/components/mix-editor/mix-editor.component.html @@ -1,4 +1,4 @@ - + Création d'un mélange pour la recette {{recipe.company.name}} - {{recipe.name}} diff --git a/src/app/modules/colors/pages/explore/explore.component.html b/src/app/modules/colors/pages/explore/explore.component.html index 9ee5eec..89b077b 100644 --- a/src/app/modules/colors/pages/explore/explore.component.html +++ b/src/app/modules/colors/pages/explore/explore.component.html @@ -24,7 +24,7 @@
-
+
-
+
diff --git a/src/app/modules/colors/pages/explore/explore.component.ts b/src/app/modules/colors/pages/explore/explore.component.ts index 610f44c..5f68076 100644 --- a/src/app/modules/colors/pages/explore/explore.component.ts +++ b/src/app/modules/colors/pages/explore/explore.component.ts @@ -50,6 +50,10 @@ export class ExploreComponent extends ErrorHandlingComponent { r => { this.recipe = r this.note = r.note + + if (this.recipe.mixes.length <= 0 || this.recipe.steps.length <= 0) { + this.alertService.pushWarning("Cette recette n'est pas complète") + } }, '/colors/list' ) diff --git a/src/app/modules/employees/pages/add/add.component.html b/src/app/modules/employees/pages/add/add.component.html index 951e943..6c528f7 100644 --- a/src/app/modules/employees/pages/add/add.component.html +++ b/src/app/modules/employees/pages/add/add.component.html @@ -1,6 +1,6 @@ - Création d'un employé + Création d'un utilisateur
diff --git a/src/app/modules/employees/pages/edit/edit.component.html b/src/app/modules/employees/pages/edit/edit.component.html index 73bc07f..9cec7fb 100644 --- a/src/app/modules/employees/pages/edit/edit.component.html +++ b/src/app/modules/employees/pages/edit/edit.component.html @@ -1,6 +1,6 @@ - Modification de l'employé #{{employee.id}} + Modification de l'utilisateur #{{employee.id}} diff --git a/src/app/modules/employees/pages/list/list.component.html b/src/app/modules/employees/pages/list/list.component.html index 670196a..15f11bb 100644 --- a/src/app/modules/employees/pages/list/list.component.html +++ b/src/app/modules/employees/pages/list/list.component.html @@ -48,7 +48,7 @@
+ [@detailExpand]="employee === expandedElement ? 'expanded' : 'collapsed'">
diff --git a/src/app/modules/employees/pages/password-edit/password-edit.component.html b/src/app/modules/employees/pages/password-edit/password-edit.component.html index 31c1aa6..8f2d735 100644 --- a/src/app/modules/employees/pages/password-edit/password-edit.component.html +++ b/src/app/modules/employees/pages/password-edit/password-edit.component.html @@ -1,7 +1,7 @@ - Modification du mot de passe de l'employé #{{employee.id}} + Modification du mot de passe de l'utilisateur #{{employee.id}} diff --git a/src/app/modules/employees/services/employee.service.ts b/src/app/modules/employees/services/employee.service.ts index 1303068..9fc7c1c 100644 --- a/src/app/modules/employees/services/employee.service.ts +++ b/src/app/modules/employees/services/employee.service.ts @@ -21,7 +21,7 @@ export class EmployeeService { } save(id: number, firstName: string, lastName: string, password: string, group: number, permissions: EmployeePermission[]): Observable { - const employee = {id, firstName, lastName, password, group, permissions} + const employee = {id, firstName, lastName, password, groupId: group, permissions} return this.api.post('/employee', employee) } diff --git a/src/app/modules/groups/pages/list/list.component.html b/src/app/modules/groups/pages/list/list.component.html index 302a5a6..be59f51 100644 --- a/src/app/modules/groups/pages/list/list.component.html +++ b/src/app/modules/groups/pages/list/list.component.html @@ -12,7 +12,7 @@ {{group.permissions.length}}
- Nombre d'employés + Nombre d'utilisateurs {{group.employeeCount}} @@ -48,7 +48,7 @@
- +
diff --git a/src/app/modules/shared/app-state.ts b/src/app/modules/shared/app-state.ts index 968559c..772bd25 100644 --- a/src/app/modules/shared/app-state.ts +++ b/src/app/modules/shared/app-state.ts @@ -13,6 +13,13 @@ export class AppState { authenticatedUser$ = new Subject<{ authenticated: boolean, authenticatedUser: Employee }>() serverOnline$ = new Subject() + resetAuthenticatedEmployee() { + this.isAuthenticated = false + this.authenticationExpiration = -1 + this.authenticatedEmployee = null + + } + set isServerOnline(isOnline: boolean) { if (!isOnline) this.authenticatedEmployee = null this.serverOnline$.next(isOnline); diff --git a/src/app/modules/shared/components/header/header.component.html b/src/app/modules/shared/components/header/header.component.html index 20bda30..8c37227 100644 --- a/src/app/modules/shared/components/header/header.component.html +++ b/src/app/modules/shared/components/header/header.component.html @@ -3,13 +3,15 @@
diff --git a/src/app/modules/shared/components/header/header.component.ts b/src/app/modules/shared/components/header/header.component.ts index 469c697..9f3585f 100644 --- a/src/app/modules/shared/components/header/header.component.ts +++ b/src/app/modules/shared/components/header/header.component.ts @@ -12,10 +12,12 @@ import {ErrorService} from '../../service/error.service' styleUrls: ['./header.component.sass'] }) export class HeaderComponent extends SubscribingComponent { + catalogEnabled = false + links: HeaderLink[] = [ {route: '/color', title: 'Couleurs', requiredPermission: EmployeePermission.VIEW_RECIPE}, {route: '/catalog', title: 'Catalogue', enabled: true}, - {route: '/employee', title: 'Employés', requiredPermission: EmployeePermission.VIEW_EMPLOYEE}, + {route: '/employee', title: 'Utilisateurs', requiredPermission: EmployeePermission.VIEW_EMPLOYEE}, {route: '/group', title: 'Groupes', requiredPermission: EmployeePermission.VIEW_EMPLOYEE_GROUP}, {route: '/account/login', title: 'Connexion', enabled: true}, {route: '/account/logout', title: 'Déconnexion', enabled: false}, @@ -81,6 +83,10 @@ export class HeaderComponent extends SubscribingComponent { l.enabled = employee && employee.permissions.indexOf(l.requiredPermission) >= 0 } }) + + this.catalogEnabled = this.accountService.hasPermission(EmployeePermission.VIEW_MATERIAL_TYPE) || + this.accountService.hasPermission(EmployeePermission.VIEW_MATERIAL) || + this.accountService.hasPermission(EmployeePermission.VIEW_COMPANY) } private link(route: string) { diff --git a/src/app/modules/shared/components/permissions-field/permissions-field.component.html b/src/app/modules/shared/components/permissions-field/permissions-field.component.html index 21e6656..cf7ef40 100644 --- a/src/app/modules/shared/components/permissions-field/permissions-field.component.html +++ b/src/app/modules/shared/components/permissions-field/permissions-field.component.html @@ -6,7 +6,7 @@
- Un group doit avoir au moins une permission + Vous devez sélectionner au moins une permission
-
+

Permissions

diff --git a/src/app/modules/shared/components/permissions-list/permissions-list.component.ts b/src/app/modules/shared/components/permissions-list/permissions-list.component.ts index 837edd0..7595864 100644 --- a/src/app/modules/shared/components/permissions-list/permissions-list.component.ts +++ b/src/app/modules/shared/components/permissions-list/permissions-list.component.ts @@ -1,13 +1,14 @@ -import {Component, Input, OnInit} from '@angular/core'; -import {Employee, EmployeePermission, mapped_permissions} from "../../model/employee"; +import {Component, Input, OnInit} from '@angular/core' +import {Employee, EmployeeGroup, EmployeePermission, mapped_permissions} from '../../model/employee' @Component({ selector: 'cre-permissions-list', templateUrl: './permissions-list.component.html', styleUrls: ['./permissions-list.component.sass'] }) -export class PermissionsListComponent implements OnInit { +export class PermissionsListComponent { @Input() employee: Employee + @Input() group: EmployeeGroup // @ts-ignore private _permissions = Object.values(mapped_permissions).flatMap(p => p) @@ -15,10 +16,11 @@ export class PermissionsListComponent implements OnInit { constructor() { } - ngOnInit(): void { + get permissions(): EmployeePermission[] { + return this.filterPermissions(this.employee ? this.employee.permissions : this.group.permissions) } - get permissions(): EmployeePermission[] { - return this._permissions.filter(p => this.employee.permissions.indexOf(p.permission) >= 0).map(p => p.description) + private filterPermissions(permissions: EmployeePermission[]) { + return this._permissions.filter(p => permissions.indexOf(p.permission) >= 0).map(p => p.description) } } diff --git a/src/app/modules/shared/model/employee.ts b/src/app/modules/shared/model/employee.ts index a4db062..711e30b 100644 --- a/src/app/modules/shared/model/employee.ts +++ b/src/app/modules/shared/model/employee.ts @@ -65,7 +65,7 @@ export const mapped_permissions = { description: 'Voir', impliedPermissions: [EmployeePermission.VIEW_MATERIAL, EmployeePermission.VIEW_MATERIAL_TYPE, EmployeePermission.VIEW_COMPANY, EmployeePermission.VIEW_RECIPE] }, - {permission: EmployeePermission.VIEW_EMPLOYEE, description: 'Voir les employés', impliedPermissions: []}, + {permission: EmployeePermission.VIEW_EMPLOYEE, description: 'Voir les utilisateurs', impliedPermissions: []}, {permission: EmployeePermission.VIEW_EMPLOYEE_GROUP, description: 'Voir les groupes', impliedPermissions: []}, ], edit: [ @@ -96,7 +96,7 @@ export const mapped_permissions = { }, { permission: EmployeePermission.EDIT_EMPLOYEE, - description: 'Modifier les employés', + description: 'Modifier les utilisateurs', impliedPermissions: [EmployeePermission.VIEW_EMPLOYEE] }, { @@ -138,7 +138,7 @@ export const mapped_permissions = { }, { permission: EmployeePermission.REMOVE_EMPLOYEE, - description: 'Supprimer des employés', + description: 'Supprimer des utilisateurs', impliedPermissions: [EmployeePermission.EDIT_EMPLOYEE] }, { diff --git a/src/app/modules/shared/service/api.service.ts b/src/app/modules/shared/service/api.service.ts index 4d083d7..3deff1e 100644 --- a/src/app/modules/shared/service/api.service.ts +++ b/src/app/modules/shared/service/api.service.ts @@ -7,6 +7,7 @@ import {Router} from '@angular/router' import {map, share, takeUntil} from 'rxjs/operators' import {valueOr} from '../utils/utils' import {ErrorService} from './error.service' +import {AccountService} from '../../accounts/services/account.service' @Injectable({ providedIn: 'root' @@ -77,17 +78,16 @@ export class ApiService implements OnDestroy { console.error('httpOptions need to be specified to use credentials in HTTP methods.') } } else { + this.appState.resetAuthenticatedEmployee() this.navigateToLogin() } } - const result$ = requestOptions.takeFullResponse + return requestOptions.takeFullResponse ? requestFn(httpOptions) .pipe(takeUntil(this._destroy$), share()) : requestFn(httpOptions) .pipe(takeUntil(this._destroy$), map(r => r.body), share()) - - return result$ } private checkAuthenticated(): boolean { diff --git a/src/styles.sass b/src/styles.sass index 51e8189..5ece4d2 100644 --- a/src/styles.sass +++ b/src/styles.sass @@ -172,12 +172,6 @@ div.empty height: 2.3rem border: solid 1px white - //&.light-mode - // color: black - // width: 2.3rem - // height: 2.3rem - // border: solid 1px black - div position: absolute width: 2rem @@ -196,6 +190,7 @@ div.empty left: 0 background-color: black opacity: 0.05 + z-index: -1 .darker-background position: fixed @@ -205,6 +200,7 @@ div.empty left: 0 background-color: black opacity: 0.4 + z-index: -1 .color-warning color: #fdd835