From be92c22de0c43a071cdb90f4b4779c9045aa7570 Mon Sep 17 00:00:00 2001 From: William Date: Thu, 19 May 2022 07:30:49 -0400 Subject: [PATCH] Move routes to a constant --- src/app/app-routing.module.ts | 35 +++++---- src/app/modules/accounts/accounts.ts | 5 +- .../accounts/services/account.service.ts | 2 +- .../accounts/services/group-token.service.ts | 10 +++ .../company/pages/add/add.component.ts | 3 +- .../company/pages/edit/edit.component.ts | 7 +- .../group-tokens-routing.module.ts | 3 +- .../groupTokens/group-tokens.module.ts | 6 +- src/app/modules/groupTokens/group-tokens.ts | 31 +++++++- src/app/modules/groupTokens/list.html | 55 ++++++++++++- .../modules/groups/pages/add/add.component.ts | 3 +- .../groups/pages/edit/edit.component.ts | 11 ++- .../groups/pages/list/list.component.ts | 4 +- .../material-type/pages/add/add.component.ts | 3 +- .../pages/edit/edit.component.ts | 7 +- .../material/pages/add/add.component.ts | 3 +- .../material/pages/edit/edit.component.ts | 7 +- src/app/modules/recipes/explore.ts | 3 +- src/app/modules/recipes/list.ts | 3 +- src/app/modules/recipes/mix/mix.ts | 7 +- src/app/modules/recipes/recipes.ts | 9 ++- src/app/modules/shared/app-state.ts | 78 ++++++++----------- .../shared/components/nav/nav.component.html | 4 +- .../shared/components/nav/nav.component.ts | 10 ++- .../user-info/user-menu.component.html | 15 ++-- .../user-info/user-menu.component.sass | 2 +- .../user-info/user-menu.component.ts | 40 ++++++---- src/app/modules/shared/service/api.service.ts | 28 +++++-- .../modules/shared/service/error.service.ts | 2 +- .../modules/touch-up-kit/pages/touchupkit.ts | 11 +-- .../modules/users/pages/add/add.component.ts | 3 +- .../users/pages/edit/edit.component.ts | 7 +- .../password-edit/password-edit.component.ts | 5 +- .../administration.component.ts | 9 +-- src/app/pages/catalog/catalog.component.ts | 8 +- src/app/pages/others/misc.component.ts | 6 +- src/app/routes.ts | 71 +++++++++++++++++ 37 files changed, 349 insertions(+), 167 deletions(-) create mode 100644 src/app/routes.ts diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index c17efab..93b0351 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -4,68 +4,69 @@ import {CatalogComponent} from './pages/catalog/catalog.component' import {AdministrationComponent} from './pages/administration/administration.component' import {MiscComponent} from './pages/others/misc.component' import {CreConfigEditor} from './modules/configuration/config-editor' +import {routes as routesConst} from './routes' const routes: Routes = [{ - path: 'color', + path: routesConst.recipes.route, loadChildren: () => import('./modules/recipes/recipes.module').then(m => m.RecipesModule) }, { - path: 'account', + path: routesConst.accounts.route, loadChildren: () => import('./modules/accounts/accounts.module').then(m => m.AccountsModule) }, { - path: 'catalog', + path: routesConst.catalog.route, component: CatalogComponent, children: [{ - path: 'materialtype', + path: routesConst.catalog.children.materialTypes.simpleRoute, loadChildren: () => import('./modules/material-type/material-type.module').then(m => m.MaterialTypeModule), }, { - path: 'material', + path: routesConst.catalog.children.materials.simpleRoute, loadChildren: () => import('./modules/material/material.module').then(m => m.MaterialModule) }, { - path: 'company', + path: routesConst.catalog.children.companies.simpleRoute, loadChildren: () => import('./modules/company/company.module').then(m => m.CompanyModule) }, { path: '', pathMatch: 'full', - redirectTo: 'materialtype' + redirectTo: routesConst.catalog.children.materials.simpleRoute }] }, { - path: 'admin', + path: routesConst.administration.route, component: AdministrationComponent, children: [ { - path: 'user', + path: routesConst.administration.children.users.simpleRoute, loadChildren: () => import('./modules/users/user.module').then(m => m.UserModule) }, { - path: 'group', + path: routesConst.administration.children.groups.simpleRoute, loadChildren: () => import('./modules/groups/group.module').then(m => m.GroupModule) }, { - path: 'group-token', + path: routesConst.administration.children.groupTokens.simpleRoute, loadChildren: () => import('./modules/groupTokens/group-tokens.module').then(m => m.GroupTokensModule) }, { - path: 'config', + path: routesConst.administration.children.configurations.simpleRoute, loadChildren: () => import('./modules/configuration/config.module').then(m => m.ConfigModule), component: CreConfigEditor }, { path: '', pathMatch: 'full', - redirectTo: 'user' + redirectTo: routesConst.administration.children.users.simpleRoute } ] }, { - path: 'misc', + path: routesConst.misc.route, component: MiscComponent, children: [{ - path: 'touch-up-kit', + path: routesConst.misc.children.touchUpKits.simpleRoute, loadChildren: () => import('./modules/touch-up-kit/touch-up-kit.module').then(m => m.TouchUpKitModule) }, { path: '', pathMatch: 'full', - redirectTo: 'touch-up-kit' + redirectTo: routesConst.misc.children.touchUpKits.simpleRoute }] }] @NgModule({ - imports: [RouterModule.forRoot(routes, {relativeLinkResolution: 'legacy'})], + imports: [RouterModule.forRoot(routes)], exports: [RouterModule] }) export class AppRoutingModule { diff --git a/src/app/modules/accounts/accounts.ts b/src/app/modules/accounts/accounts.ts index fccec7d..48180d6 100644 --- a/src/app/modules/accounts/accounts.ts +++ b/src/app/modules/accounts/accounts.ts @@ -7,6 +7,7 @@ import {ErrorHandler, ErrorService} from '../shared/service/error.service' import {ActivatedRoute, Router} from '@angular/router' import {CreForm, ICreForm} from "../shared/components/forms/forms"; import {AlertService} from "../shared/service/alert.service"; +import {routes} from "../../routes"; @Component({ selector: 'cre-login', @@ -49,7 +50,7 @@ export class Login extends ErrorHandlingComponent { submit() { this.subscribeAndNavigate( this.accountService.loginAsUser(this.userIdControl.value, this.passwordControl.value), - '/color/list' + `/${routes.recipes.route}/list` ) } @@ -83,6 +84,6 @@ export class Logout extends SubscribingComponent { this.accountService.logout() } - this.urlUtils.navigateTo('/account/login') + this.urlUtils.navigateTo(`/${routes.accounts.route}/login`) } } diff --git a/src/app/modules/accounts/services/account.service.ts b/src/app/modules/accounts/services/account.service.ts index 97d6a10..f392a25 100644 --- a/src/app/modules/accounts/services/account.service.ts +++ b/src/app/modules/accounts/services/account.service.ts @@ -59,7 +59,7 @@ export class AccountService implements OnDestroy { .pipe(take(1), takeUntil(this.destroy$)) login$.subscribe({ - next: result => this.appState.authenticateUser(result), + next: result => this.appState.authenticateUser(result, isGroup), error: error => { if (errorConsumer(error)) return; diff --git a/src/app/modules/accounts/services/group-token.service.ts b/src/app/modules/accounts/services/group-token.service.ts index a7409d8..7eadb61 100644 --- a/src/app/modules/accounts/services/group-token.service.ts +++ b/src/app/modules/accounts/services/group-token.service.ts @@ -23,4 +23,14 @@ export class GroupTokenService { save(name: string, groupId: number): Observable { return this.api.post('/account/group/token', {name, groupId}) } + + toggle(token: GroupToken): Observable { + return token.enabled ? + this.api.put(`/account/group/token/${token.id}/disable`) : + this.api.put(`/account/group/token/${token.id}/enable`) + } + + delete(id: string): Observable { + return this.api.delete(`/account/group/token/${id}`) + } } diff --git a/src/app/modules/company/pages/add/add.component.ts b/src/app/modules/company/pages/add/add.component.ts index 37fbe4c..c239de3 100644 --- a/src/app/modules/company/pages/add/add.component.ts +++ b/src/app/modules/company/pages/add/add.component.ts @@ -5,6 +5,7 @@ import {FormField} from '../../../shared/components/entity-add/entity-add.compon import {ActivatedRoute, Router} from '@angular/router' import {ErrorHandler, ErrorService} from '../../../shared/service/error.service' import {AppState} from '../../../shared/app-state' +import {routes} from "../../../../routes"; @Component({ selector: 'cre-add', @@ -50,7 +51,7 @@ export class AddComponent extends ErrorHandlingComponent { this.submittedValues = values this.subscribeAndNavigate( this.companyService.save(values.name), - '/catalog/company/list' + routes.catalog.children.companies.route + '/list' ) } } diff --git a/src/app/modules/company/pages/edit/edit.component.ts b/src/app/modules/company/pages/edit/edit.component.ts index b536b39..b23cb3e 100644 --- a/src/app/modules/company/pages/edit/edit.component.ts +++ b/src/app/modules/company/pages/edit/edit.component.ts @@ -6,6 +6,7 @@ import {CompanyService} from '../../service/company.service' import {ActivatedRoute, Router} from '@angular/router' import {ErrorHandler, ErrorHandlerComponent, ErrorService} from '../../../shared/service/error.service' import {AppState} from '../../../shared/app-state' +import {routes} from "../../../../routes"; @Component({ selector: 'cre-edit', @@ -29,7 +30,7 @@ export class EditComponent extends ErrorHandlingComponent { errorHandlers: ErrorHandler[] = [{ filter: error => error.type === 'notfound-company-id', - consumer: error => this.urlUtils.navigateTo('/catalog/company/list') + consumer: _ => this.urlUtils.navigateTo(routes.catalog.children.companies.route + '/list') }, { filter: error => error.type === 'exists-company-name', messageProducer: error => `Une bannière avec le nom '${error.name}' existe déjà` @@ -65,14 +66,14 @@ export class EditComponent extends ErrorHandlingComponent { submit(values) { this.subscribeAndNavigate( this.companyService.update(this.company.id, values.name), - '/catalog/company/list' + routes.catalog.children.companies.route + '/list' ) } delete() { this.subscribeAndNavigate( this.companyService.delete(this.company.id), - '/catalog/company/list' + routes.catalog.children.companies.route + '/list' ) } } diff --git a/src/app/modules/groupTokens/group-tokens-routing.module.ts b/src/app/modules/groupTokens/group-tokens-routing.module.ts index 0409085..c55971c 100644 --- a/src/app/modules/groupTokens/group-tokens-routing.module.ts +++ b/src/app/modules/groupTokens/group-tokens-routing.module.ts @@ -6,8 +6,7 @@ const routes: Routes = [{ path: 'list', component: GroupTokenList }, { - path: '', - redirectTo: 'list' + path: '', redirectTo: 'list' }] @NgModule({ diff --git a/src/app/modules/groupTokens/group-tokens.module.ts b/src/app/modules/groupTokens/group-tokens.module.ts index f7f0191..1f2d324 100644 --- a/src/app/modules/groupTokens/group-tokens.module.ts +++ b/src/app/modules/groupTokens/group-tokens.module.ts @@ -4,6 +4,8 @@ import {SharedModule} from '../shared/shared.module' import {CreInputsModule} from '../shared/components/inputs/inputs.module' import {CreButtonsModule} from '../shared/components/buttons/buttons.module' import {GroupTokenAdd, GroupTokenList} from "../groupTokens/group-tokens"; +import {GroupTokensRoutingModule} from "./group-tokens-routing.module"; +import {CreTablesModule} from "../shared/components/tables/tables.module"; @NgModule({ @@ -15,9 +17,11 @@ import {GroupTokenAdd, GroupTokenList} from "../groupTokens/group-tokens"; GroupTokenAdd ], imports: [ + GroupTokensRoutingModule, SharedModule, CreInputsModule, - CreButtonsModule + CreButtonsModule, + CreTablesModule ] }) export class GroupTokensModule { diff --git a/src/app/modules/groupTokens/group-tokens.ts b/src/app/modules/groupTokens/group-tokens.ts index 959feaf..6e8a6b9 100644 --- a/src/app/modules/groupTokens/group-tokens.ts +++ b/src/app/modules/groupTokens/group-tokens.ts @@ -6,15 +6,21 @@ import {GroupTokenService} from "../accounts/services/group-token.service"; import {SubscribingComponent} from "../shared/components/subscribing.component"; import {ErrorService} from "../shared/service/error.service"; import {ActivatedRoute, Router} from "@angular/router"; +import {tap} from "rxjs/operators"; @Component({ selector: 'cre-group-token-list', templateUrl: 'list.html' }) export class GroupTokenList extends SubscribingComponent { - tokens$ = this.groupTokenService.all + tokens$ = this.groupTokenService.all.pipe(tap( + tokens => this.tokensEmpty = tokens.length <= 0)) + tokensEmpty = false - columns = ['id', 'name', 'groupName', 'deleteButton'] + columns = ['id', 'name', 'groupName', 'state', 'stateButton', 'deleteButton'] + + @ViewChild(CrePromptDialog) removePrompt: CrePromptDialog + removePromptToken: GroupToken | null = null constructor( private groupTokenService: GroupTokenService, @@ -24,6 +30,25 @@ export class GroupTokenList extends SubscribingComponent { ) { super(errorService, activatedRoute, router) } + + showRemovePrompt(token: GroupToken) { + this.removePromptToken = token + this.removePrompt.show() + } + + toggle(token: GroupToken) { + this.subscribe( + this.groupTokenService.toggle(token), + _ => window.location.reload() + ) + } + + delete() { + this.subscribe( + this.groupTokenService.delete(this.removePromptToken.id), + _ => window.location.reload() + ) + } } @Component({ @@ -63,7 +88,7 @@ export class GroupTokenAdd extends SubscribingComponent { const name = this.controls.name.value this.subscribe( this.groupTokenService.save(name, this.group.id), - groupToken => this.defaultGroupUpdate.emit(groupToken.group) + groupToken => this.defaultGroupUpdate.emit(groupToken) ) } } diff --git a/src/app/modules/groupTokens/list.html b/src/app/modules/groupTokens/list.html index 79a243c..c259ef8 100644 --- a/src/app/modules/groupTokens/list.html +++ b/src/app/modules/groupTokens/list.html @@ -1 +1,54 @@ -
A list
+
+ + +

Il n'y a aucun ordinateur enregistré dans le système.

+

Vous pouvez en ajouter un en définissant un groupe par défaut ici.

+
+ + + + Identifiant + {{token.id}} + + + + Nom + {{token.name}} + + + + Groupe + {{token.group.name}} + + + + État + {{token.enabled ? 'Activé' : 'Désactivé'}} + + + + + + + Activer + Désactiver + + + + + + + + + Supprimer + + + + + + + + Voulez-vous vraiment retirer l'ordinateur '{{removePromptToken.name}}' du système?
+ Ses utilisateurs ne seront plus connectés automatiquement. +
+
diff --git a/src/app/modules/groups/pages/add/add.component.ts b/src/app/modules/groups/pages/add/add.component.ts index 4c39fe2..0a69fda 100644 --- a/src/app/modules/groups/pages/add/add.component.ts +++ b/src/app/modules/groups/pages/add/add.component.ts @@ -7,6 +7,7 @@ import {ErrorHandlingComponent} from '../../../shared/components/subscribing.com import {ErrorHandler, ErrorService} from '../../../shared/service/error.service' import {FormField} from '../../../shared/components/entity-add/entity-add.component' import {AppState} from '../../../shared/app-state' +import {routes} from "../../../../routes"; @Component({ selector: 'cre-add', @@ -60,7 +61,7 @@ export class AddComponent extends ErrorHandlingComponent { if (permissionsField.valid()) { this.subscribeAndNavigate( this.groupService.save(values.name, permissionsField.allEnabledPermissions), - '/admin/group/list' + routes.administration.children.groups.route + '/list' ) } } diff --git a/src/app/modules/groups/pages/edit/edit.component.ts b/src/app/modules/groups/pages/edit/edit.component.ts index acafa9e..36f9504 100644 --- a/src/app/modules/groups/pages/edit/edit.component.ts +++ b/src/app/modules/groups/pages/edit/edit.component.ts @@ -3,12 +3,15 @@ import {ActivatedRoute, Router} from '@angular/router' import {Group} from '../../../shared/model/account.model' import {GroupService} from '../../services/group.service' import {Validators} from '@angular/forms' -import {currentPermissionsFieldComponent} from '../../../shared/components/permissions-field/permissions-field.component' +import { + currentPermissionsFieldComponent +} from '../../../shared/components/permissions-field/permissions-field.component' import {AccountService} from '../../../accounts/services/account.service' import {ErrorHandlingComponent} from '../../../shared/components/subscribing.component' import {ErrorHandler, ErrorService} from '../../../shared/service/error.service' import {FormField} from '../../../shared/components/entity-add/entity-add.component' import {AppState} from '../../../shared/app-state' +import {routes} from "../../../../routes"; @Component({ selector: 'cre-edit', @@ -38,7 +41,7 @@ export class EditComponent extends ErrorHandlingComponent { errorHandlers: ErrorHandler[] = [{ filter: error => error.type === 'notfound-group-id', - consumer: error => this.urlUtils.navigateTo('/admin/group/list') + consumer: _ => this.urlUtils.navigateTo(routes.administration.children.groups.route + '/list') }, { filter: error => error.type === 'exists-group-name', messageProducer: error => `Un groupe avec le nom '${error.name}' existe déjà` @@ -74,7 +77,7 @@ export class EditComponent extends ErrorHandlingComponent { if (permissionsField.valid()) { this.subscribeAndNavigate( this.groupService.update(this.group.id, values.name, permissionsField.allEnabledPermissions), - '/admin/group/list' + routes.administration.children.groups.route + '/list' ) } } @@ -82,7 +85,7 @@ export class EditComponent extends ErrorHandlingComponent { delete() { this.subscribeAndNavigate( this.groupService.delete(this.group.id), - '/admin/group/list' + routes.administration.children.groups.route + '/list' ) } } diff --git a/src/app/modules/groups/pages/list/list.component.ts b/src/app/modules/groups/pages/list/list.component.ts index f5450a4..8aba474 100644 --- a/src/app/modules/groups/pages/list/list.component.ts +++ b/src/app/modules/groups/pages/list/list.component.ts @@ -9,6 +9,7 @@ import {AlertService} from '../../../shared/service/alert.service' import {AppState} from '../../../shared/app-state' import {GroupTokenService} from "../../../accounts/services/group-token.service"; import {GroupTokenAdd} from "../../../groupTokens/group-tokens"; +import {tap} from "rxjs/operators"; @Component({ selector: 'cre-groups', @@ -16,7 +17,8 @@ import {GroupTokenAdd} from "../../../groupTokens/group-tokens"; styleUrls: ['./list.component.sass'] }) export class ListComponent extends ErrorHandlingComponent { - groups$ = this.groupService.all + groups$ = this.groupService.all.pipe(tap( + groups => this.groupsEmpty = groups.length <= 0)) groupsEmpty = false currentGroupToken: GroupToken | null diff --git a/src/app/modules/material-type/pages/add/add.component.ts b/src/app/modules/material-type/pages/add/add.component.ts index 1c2b1ff..4300ab4 100644 --- a/src/app/modules/material-type/pages/add/add.component.ts +++ b/src/app/modules/material-type/pages/add/add.component.ts @@ -6,6 +6,7 @@ import {ErrorHandlingComponent} from '../../../shared/components/subscribing.com import {ActivatedRoute, Router} from '@angular/router' import {ErrorHandler, ErrorService} from '../../../shared/service/error.service' import {AppState} from '../../../shared/app-state' +import {routes} from "../../../../routes"; @Component({ selector: 'cre-add', @@ -69,7 +70,7 @@ export class AddComponent extends ErrorHandlingComponent { submit(values) { this.subscribeAndNavigate( this.materialTypeService.save(values.name, values.prefix, values.usePercentages), - '/catalog/materialtype/list' + routes.catalog.children.materialTypes.route + '/list' ) } } diff --git a/src/app/modules/material-type/pages/edit/edit.component.ts b/src/app/modules/material-type/pages/edit/edit.component.ts index 8db8933..e005cf7 100644 --- a/src/app/modules/material-type/pages/edit/edit.component.ts +++ b/src/app/modules/material-type/pages/edit/edit.component.ts @@ -7,6 +7,7 @@ import {FormField} from '../../../shared/components/entity-add/entity-add.compon import {Validators} from '@angular/forms' import {ErrorHandler, ErrorService} from '../../../shared/service/error.service' import {AppState} from '../../../shared/app-state' +import {routes} from "../../../../routes"; @Component({ selector: 'cre-edit', @@ -45,7 +46,7 @@ export class EditComponent extends ErrorHandlingComponent { errorHandlers: ErrorHandler[] = [{ filter: error => error.type === 'notfound-materialtype-id', - consumer: error => this.urlUtils.navigateTo('/catalog/materialtype/list') + consumer: _ => this.urlUtils.navigateTo(routes.catalog.children.materialTypes.route + '/list') }, { filter: error => error.type === 'exists-materialtype-name', messageProducer: error => `Un type de produit avec le nom '${error.name}' existe déjà` @@ -84,14 +85,14 @@ export class EditComponent extends ErrorHandlingComponent { submit(values) { this.subscribeAndNavigate( this.materialTypeService.update(this.materialType.id, values.name, values.prefix), - '/catalog/materialtype/list' + routes.catalog.children.materialTypes.route + '/list' ) } delete() { this.subscribeAndNavigate( this.materialTypeService.delete(this.materialType.id), - '/catalog/materialtype/list' + routes.catalog.children.materialTypes.route + '/list' ) } } diff --git a/src/app/modules/material/pages/add/add.component.ts b/src/app/modules/material/pages/add/add.component.ts index d5e710a..588d068 100644 --- a/src/app/modules/material/pages/add/add.component.ts +++ b/src/app/modules/material/pages/add/add.component.ts @@ -8,6 +8,7 @@ import {ErrorHandlingComponent} from '../../../shared/components/subscribing.com import {map} from 'rxjs/operators' import {ErrorHandler, ErrorService} from '../../../shared/service/error.service' import {AppState} from '../../../shared/app-state' +import {routes} from "../../../../routes"; @Component({ selector: 'cre-add', @@ -81,7 +82,7 @@ export class AddComponent extends ErrorHandlingComponent { submit(values) { this.subscribeAndNavigate( this.materialService.save(values.name, values.inventoryQuantity, values.materialType, values.simdutFile), - '/catalog/material/list' + routes.catalog.children.materials.route + '/list' ) } } diff --git a/src/app/modules/material/pages/edit/edit.component.ts b/src/app/modules/material/pages/edit/edit.component.ts index fbc2a44..d8a2d7a 100644 --- a/src/app/modules/material/pages/edit/edit.component.ts +++ b/src/app/modules/material/pages/edit/edit.component.ts @@ -9,6 +9,7 @@ import {ErrorHandlingComponent} from '../../../shared/components/subscribing.com import {Material, openSimdut} from '../../../shared/model/material.model' import {ErrorHandler, ErrorService} from '../../../shared/service/error.service' import {AppState} from '../../../shared/app-state' +import {routes} from "../../../../routes"; @Component({ selector: 'cre-edit', @@ -69,7 +70,7 @@ export class EditComponent extends ErrorHandlingComponent { errorHandlers: ErrorHandler[] = [{ filter: error => error.type === 'notfound-material-id', - consumer: error => this.urlUtils.navigateTo('/catalog/material/list') + consumer: _ => this.urlUtils.navigateTo(routes.catalog.children.materials.route + '/list') }, { filter: error => error.type === 'exists-material-name', messageProducer: error => `Un produit avec le nom '${error.name}' existe déjà` @@ -108,14 +109,14 @@ export class EditComponent extends ErrorHandlingComponent { submit(values) { this.subscribeAndNavigate( this.materialService.update(this.material.id, values.name, values.inventoryQuantity, values.materialType, this.selectedSimdutFile), - '/catalog/material/list' + routes.catalog.children.materials.route + '/list' ) } delete() { this.subscribeAndNavigate( this.materialService.delete(this.material.id), - '/catalog/material/list' + routes.catalog.children.materials.route + '/list' ) } diff --git a/src/app/modules/recipes/explore.ts b/src/app/modules/recipes/explore.ts index fb00c96..4132cdc 100644 --- a/src/app/modules/recipes/explore.ts +++ b/src/app/modules/recipes/explore.ts @@ -22,6 +22,7 @@ import {Permission} from '../shared/model/account.model' import {FormControl} from '@angular/forms'; import {map} from 'rxjs/operators'; import {CreInputEntry} from '../shared/components/inputs/inputs'; +import {routes} from "../../routes"; @Component({ selector: 'cre-recipe-explore', @@ -48,7 +49,7 @@ export class CreRecipeExplore extends ErrorHandlingComponent { errorHandlers: ErrorHandler[] = [{ filter: error => error.type === 'notfound-recipe-id', - consumer: error => this.urlUtils.navigateTo('/color/list') + consumer: _ => this.urlUtils.navigateTo(routes.recipes.route + '/list') }, { filter: error => error.type === 'notenoughinventory-multiple', consumer: error => this.deductErrorBody = {mix: this.deductedMixId, lowQuantities: error.lowQuantities}, diff --git a/src/app/modules/recipes/list.ts b/src/app/modules/recipes/list.ts index 02c35fe..c0d516c 100644 --- a/src/app/modules/recipes/list.ts +++ b/src/app/modules/recipes/list.ts @@ -12,6 +12,7 @@ import {ActivatedRoute, Router} from '@angular/router' import {Config} from '../shared/model/config.model' import {Permission} from '../shared/model/account.model' import {FormControl} from '@angular/forms' +import {routes} from "../../routes"; @Component({ selector: 'cre-recipe-list', @@ -52,7 +53,7 @@ export class RecipeList extends ErrorHandlingComponent { this.configService.get(Config.EMERGENCY_MODE), config => { if (config.content == 'true') { - this.urlUtils.navigateTo('/admin/config/') + this.urlUtils.navigateTo(routes.administration.children.configurations.route) } } ) diff --git a/src/app/modules/recipes/mix/mix.ts b/src/app/modules/recipes/mix/mix.ts index 9480c20..0d4fed8 100644 --- a/src/app/modules/recipes/mix/mix.ts +++ b/src/app/modules/recipes/mix/mix.ts @@ -15,6 +15,7 @@ import {MaterialService} from '../../material/service/material.service' import {CreForm} from '../../shared/components/forms/forms' import {MixMaterialsForm} from './materials-form' import {MixSaveDto, MixService, MixUpdateDto} from '../services/mix.service' +import {routes} from "../../../routes"; @Directive() abstract class _BaseMixPage extends SubscribingComponent { @@ -74,7 +75,7 @@ export class MixAdd extends _BaseMixPage { submit(dto: MixSaveDto) { this.subscribeAndNavigate( this.mixService.saveDto(dto), - `/color/edit/${this.recipe.id}` + `/${routes.recipes.route}/edit/${this.recipe.id}` ) } } @@ -110,14 +111,14 @@ export class MixEdit extends _BaseMixPage { submit(dto: MixSaveDto) { this.subscribeAndNavigate( this.mixService.updateDto({...dto, id: this.mix.id}), - `/color/edit/${this.recipe.id}` + `/${routes.recipes.route}/edit/${this.recipe.id}` ) } delete() { this.subscribeAndNavigate( this.mixService.delete(this.mixId), - '/color/edit/' + this.recipe.id + `/${routes.recipes.route}/edit/` + this.recipe.id ) } } diff --git a/src/app/modules/recipes/recipes.ts b/src/app/modules/recipes/recipes.ts index 046a9b9..f8dcea1 100644 --- a/src/app/modules/recipes/recipes.ts +++ b/src/app/modules/recipes/recipes.ts @@ -17,6 +17,7 @@ import {GroupService} from '../groups/services/group.service'; import {StepTableComponent} from './components/step-table/step-table.component'; import {anyMap} from '../shared/utils/map.utils'; import {CreForm, ICreForm} from '../shared/components/forms/forms'; +import {routes} from "../../routes"; @Component({ selector: 'recipe-form', @@ -117,7 +118,7 @@ export class RecipeAdd extends ErrorHandlingComponent { submit(recipe: Recipe) { this.subscribe( this.recipeService.save(recipe), - recipe => this.urlUtils.navigateTo(`/color/edit/${recipe.id}`) + recipe => this.urlUtils.navigateTo(routes.recipes.route + `/edit/${recipe.id}`) ) } } @@ -137,7 +138,7 @@ export class RecipeEdit extends ErrorHandlingComponent { errorHandlers: ErrorHandler[] = [{ filter: error => error.type === 'notfound-recipe-id', - consumer: _ => this.urlUtils.navigateTo('/color/list') + consumer: _ => this.urlUtils.navigateTo(routes.recipes.route + '/list') }] constructor( @@ -190,14 +191,14 @@ export class RecipeEdit extends ErrorHandlingComponent { this.subscribeAndNavigate( this.recipeService.update(recipe, steps), - '/color/list' + routes.recipes.route + '/list' ) } delete() { this.subscribeAndNavigate( this.recipeService.delete(this.recipe.id), - '/color/list' + routes.recipes.route + '/list' ) } diff --git a/src/app/modules/shared/app-state.ts b/src/app/modules/shared/app-state.ts index d15d617..15ce7cc 100644 --- a/src/app/modules/shared/app-state.ts +++ b/src/app/modules/shared/app-state.ts @@ -7,11 +7,10 @@ import {Title} from '@angular/platform-browser' providedIn: 'root' }) export class AppState { - private readonly KEY_AUTHENTICATED = 'authenticated' - private readonly KEY_DEFAULT_GROUP_USER_AUTHENTICATED = 'default-group-user-authenticated' - private readonly KEY_LOGGED_IN_USER = 'logged-in-user' + private readonly KEY_AUTHENTICATED_USER = 'authenticated-user' + private readonly KEY_GROUP_USER = 'authenticated-user-group' - authenticatedUser$ = new Subject<{ authenticated: boolean, authenticatedUser: LoginDto }>() + authenticatedUser$ = new Subject() serverOnline$ = new Subject() constructor( @@ -19,67 +18,49 @@ export class AppState { ) { } - authenticateUser(user: LoginDto) { - this.authenticatedUser = user - this.isAuthenticated = true - } - - authenticateGroupUser(user: LoginDto) { - this.authenticatedUser = user - this.isDefaultGroupUserAuthenticated = true + authenticateUser(user: LoginDto, isGroup: boolean) { + this.setAuthenticatedUser(user, isGroup) } resetAuthenticatedUser() { - this.isAuthenticated = false - this.isDefaultGroupUserAuthenticated = false - this.authenticatedUser = null + this.removeAuthenticatedUser() } set isServerOnline(isOnline: boolean) { if (!isOnline) { - this.authenticatedUser = null + this.removeAuthenticatedUser() } this.serverOnline$.next(isOnline) } get isAuthenticated(): boolean { - return sessionStorage.getItem(this.KEY_AUTHENTICATED) === 'true' - } - - private set isAuthenticated(value: boolean) { - sessionStorage.setItem(this.KEY_AUTHENTICATED, value.toString()) - this.authenticatedUser$.next({ - authenticated: value, - authenticatedUser: this.authenticatedUser - }) - } - - get isDefaultGroupUserAuthenticated(): boolean { - return sessionStorage.getItem(this.KEY_DEFAULT_GROUP_USER_AUTHENTICATED) === 'true' - } - - private set isDefaultGroupUserAuthenticated(value: boolean) { - sessionStorage.setItem(this.KEY_DEFAULT_GROUP_USER_AUTHENTICATED, value.toString()) - } - - get hasCredentials(): boolean { - return this.isAuthenticated || this.isDefaultGroupUserAuthenticated + return !!this.authenticatedUser } get authenticatedUser(): LoginDto { - const userString = sessionStorage.getItem(this.KEY_LOGGED_IN_USER) + const userString = sessionStorage.getItem(this.KEY_AUTHENTICATED_USER) return userString ? JSON.parse(userString) : null } - private set authenticatedUser(value: LoginDto) { - if (value === null) { - sessionStorage.removeItem(this.KEY_LOGGED_IN_USER) - } else { - sessionStorage.setItem(this.KEY_LOGGED_IN_USER, JSON.stringify(value)) - } + get isGroupUserAuthenticated(): boolean { + return sessionStorage.getItem(this.KEY_GROUP_USER) === 'true' + } + + private setAuthenticatedUser(login: LoginDto, isGroup: boolean) { + sessionStorage.setItem(this.KEY_AUTHENTICATED_USER, JSON.stringify(login)) + sessionStorage.setItem(this.KEY_GROUP_USER, JSON.stringify(isGroup)) this.authenticatedUser$.next({ - authenticated: this.isAuthenticated, - authenticatedUser: value + authenticatedUser: login, + isGroup + }) + } + + private removeAuthenticatedUser() { + sessionStorage.removeItem(this.KEY_AUTHENTICATED_USER) + sessionStorage.removeItem(this.KEY_GROUP_USER) + this.authenticatedUser$.next({ + authenticatedUser: null, + isGroup: false }) } @@ -87,3 +68,8 @@ export class AppState { this.titleService.setTitle(`CRE: ${value}`) } } + +export interface AuthenticationEvent { + authenticatedUser: LoginDto | null + isGroup: boolean +} diff --git a/src/app/modules/shared/components/nav/nav.component.html b/src/app/modules/shared/components/nav/nav.component.html index 05e7976..57e917c 100644 --- a/src/app/modules/shared/components/nav/nav.component.html +++ b/src/app/modules/shared/components/nav/nav.component.html @@ -1,9 +1,9 @@