Skip to content
Snippets Groups Projects
Commit 9a4ffc78 authored by Homada.Boumedane's avatar Homada.Boumedane
Browse files

refactor(dlcm-portal): implement login/logout

implement login/logout for mobile toolbar component
parent 57e2fca8
No related branches found
No related tags found
1 merge request!5Dlcm 550 use code flow
...@@ -3,13 +3,16 @@ ...@@ -3,13 +3,16 @@
[currentPath]="currentModule" [currentPath]="currentModule"
[currentLanguage]="appLanguage$ | async" [currentLanguage]="appLanguage$ | async"
(languageEvent)="useLanguage($event)" (languageEvent)="useLanguage($event)"
(navigateEvent)="navigate($event)"> (navigateEvent)="navigate($event)"
(logoutEvent)="logout()">
</dlcm-main-toolbar> </dlcm-main-toolbar>
<dlcm-main-toolbar-mobile [currentPath]="currentModule" <dlcm-main-toolbar-mobile [loggedIn]="isLogged$ | async"
[currentPath]="currentModule"
[currentLanguage]="appLanguage$ | async" [currentLanguage]="appLanguage$ | async"
(languageEvent)="useLanguage($event)" (languageEvent)="useLanguage($event)"
(navigateEvent)="navigate($event)"> (navigateEvent)="navigate($event)"
(logoutEvent)="logout()">
</dlcm-main-toolbar-mobile> </dlcm-main-toolbar-mobile>
<div class="container-fluid instance-logo-wrapper"> <div class="container-fluid instance-logo-wrapper">
......
import {Component} from "@angular/core"; import {Component} from "@angular/core";
import {Router, RouterStateSnapshot} from "@angular/router"; import {Router, RouterStateSnapshot} from "@angular/router";
import {ChangeAppLanguage} from "@app/app.action"; import {ChangeAppLanguage, Logout} from "@app/app.action";
import {AppStateModel} from "@app/app.state"; import {AppStateModel} from "@app/app.state";
import {BaseDirective} from "@app/shared/directives/base.directive"; import {BaseDirective} from "@app/shared/directives/base.directive";
import {LanguagesEnum} from "@app/shared/enums/languages.enum"; import {LanguagesEnum} from "@app/shared/enums/languages.enum";
...@@ -94,4 +94,8 @@ export class AppComponent extends BaseDirective { ...@@ -94,4 +94,8 @@ export class AppComponent extends BaseDirective {
this.translate.use(language); this.translate.use(language);
})); }));
} }
logout() {
this.store.dispatch(new Logout());
}
} }
...@@ -20,6 +20,8 @@ import {environment} from "../environments/environment"; ...@@ -20,6 +20,8 @@ import {environment} from "../environments/environment";
import {OAuthService} from "@app/oauth/oauth-service"; import {OAuthService} from "@app/oauth/oauth-service";
import {authConfig} from "@app/auth.config"; import {authConfig} from "@app/auth.config";
import {tap} from "rxjs/operators"; import {tap} from "rxjs/operators";
import {RoutesEnum} from "@app/shared/enums/routes.enum";
import {Navigate} from "@ngxs/router-plugin";
export interface AppStateModel extends BaseStateModel { export interface AppStateModel extends BaseStateModel {
appLanguage: LanguagesEnum; appLanguage: LanguagesEnum;
...@@ -102,6 +104,8 @@ export class AppState { ...@@ -102,6 +104,8 @@ export class AppState {
@Action(Logout) @Action(Logout)
logout(ctx: StateContext<AppStateModel>) { logout(ctx: StateContext<AppStateModel>) {
this.oauthService.logOut();
ctx.dispatch(new Navigate([RoutesEnum.access]));
ctx.patchState({ ctx.patchState({
isLoggedIn: false, isLoggedIn: false,
}); });
......
...@@ -30,6 +30,16 @@ ...@@ -30,6 +30,16 @@
(languageEvent)="useLanguage($event)"> (languageEvent)="useLanguage($event)">
</dlcm-language-selector> </dlcm-language-selector>
</li> </li>
<li>{{'app.toolbar.logout' | translate }}</li> <ng-template [ngIf]="!loggedIn" [ngIfElse]="loggedOut">
<li class="login">
<a (click)="login()">{{'app.toolbar.login' | translate }}</a>
</li>
</ng-template>
<ng-template #loggedOut>
<li class="logout">
<a (click)="logout()">{{'app.toolbar.logout' | translate }}</a>
</li>
</ng-template>
</ul> </ul>
</div> </div>
import {ChangeDetectionStrategy, Component} from "@angular/core"; import {ChangeDetectionStrategy, Component} from "@angular/core";
import {MainToolbarDirective} from "@app/directives/main-toolbar.directive"; import {MainToolbarDirective} from "@app/directives/main-toolbar.directive";
import {OAuthService} from "@app/oauth/oauth-service";
@Component({ @Component({
selector: "dlcm-main-toolbar-mobile", selector: "dlcm-main-toolbar-mobile",
...@@ -8,7 +9,7 @@ import {MainToolbarDirective} from "@app/directives/main-toolbar.directive"; ...@@ -8,7 +9,7 @@ import {MainToolbarDirective} from "@app/directives/main-toolbar.directive";
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
}) })
export class MainToolbarMobileComponent extends MainToolbarDirective { export class MainToolbarMobileComponent extends MainToolbarDirective {
constructor() { constructor(private oauth: OAuthService) {
super(); super(oauth);
} }
} }
import {ChangeDetectionStrategy, Component, EventEmitter, Input} from "@angular/core"; import {ChangeDetectionStrategy, Component, EventEmitter, Input, Output} from "@angular/core";
import {MainToolbarDirective} from "@app/directives/main-toolbar.directive"; import {MainToolbarDirective} from "@app/directives/main-toolbar.directive";
import {OAuthService} from "@app/oauth/oauth-service"; import {OAuthService} from "@app/oauth/oauth-service";
import {Router} from "@angular/router"; import {Router} from "@angular/router";
...@@ -13,40 +13,7 @@ import {LanguagesEnum} from "@app/shared/enums/languages.enum"; ...@@ -13,40 +13,7 @@ import {LanguagesEnum} from "@app/shared/enums/languages.enum";
}) })
export class MainToolbarComponent extends MainToolbarDirective { export class MainToolbarComponent extends MainToolbarDirective {
private logged = false; constructor(private oauth: OAuthService) {
super(oauth);
get loggedIn(): boolean {
return this.logged;
}
@Input()
set loggedIn(val: boolean) {
this.logged = val;
}
constructor(private oauthService: OAuthService, private router: Router) {
super();
this.navigateEvent = new EventEmitter();
this.languageEvent = new EventEmitter();
}
navigate(path: string) {
this.navigateEvent.emit(path);
}
useLanguage(language: LanguagesEnum) {
this.languageEvent.emit(language);
}
login() {
this.oauthService.initAuthorizationCodeFlow();
this.loggedIn = true;
}
logout() {
this.oauthService.logOut();
this.router.navigate([RoutesEnum.access]);
this.loggedIn = false;
} }
} }
...@@ -2,6 +2,7 @@ import {Directive, EventEmitter, Input, Output} from "@angular/core"; ...@@ -2,6 +2,7 @@ import {Directive, EventEmitter, Input, Output} from "@angular/core";
import {BaseDirective} from "@app/shared/directives/base.directive"; import {BaseDirective} from "@app/shared/directives/base.directive";
import {LanguagesEnum} from "@app/shared/enums/languages.enum"; import {LanguagesEnum} from "@app/shared/enums/languages.enum";
import {RoutesEnum} from "@app/shared/enums/routes.enum"; import {RoutesEnum} from "@app/shared/enums/routes.enum";
import {OAuthService} from "@app/oauth/oauth-service";
@Directive({ @Directive({
selector: "[dlcmMainToolbar]" selector: "[dlcmMainToolbar]"
...@@ -19,13 +20,29 @@ export class MainToolbarDirective extends BaseDirective { ...@@ -19,13 +20,29 @@ export class MainToolbarDirective extends BaseDirective {
@Output() @Output()
languageEvent: EventEmitter<LanguagesEnum>; languageEvent: EventEmitter<LanguagesEnum>;
@Output()
logoutEvent = new EventEmitter<void>();
organizationalUnitPath: string = RoutesEnum.organizationalUnit; organizationalUnitPath: string = RoutesEnum.organizationalUnit;
depositPath: string = RoutesEnum.deposit; depositPath: string = RoutesEnum.deposit;
accessPath: string = RoutesEnum.access; accessPath: string = RoutesEnum.access;
isOpen: boolean; isOpen: boolean;
constructor() { private logged = false;
get loggedIn(): boolean {
return this.logged;
}
@Input()
set loggedIn(val: boolean) {
this.logged = val;
}
constructor(private oauthService: OAuthService) {
super(); super();
this.navigateEvent = new EventEmitter(); this.navigateEvent = new EventEmitter();
this.languageEvent = new EventEmitter(); this.languageEvent = new EventEmitter();
...@@ -43,4 +60,12 @@ export class MainToolbarDirective extends BaseDirective { ...@@ -43,4 +60,12 @@ export class MainToolbarDirective extends BaseDirective {
toggleMenu() { toggleMenu() {
this.isOpen = !this.isOpen; this.isOpen = !this.isOpen;
} }
login() {
this.oauthService.initAuthorizationCodeFlow();
}
logout() {
this.logoutEvent.emit();
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment