From dad392335e0043ef66332a82dd2e524e714443c2 Mon Sep 17 00:00:00 2001 From: Peter Maquiran Date: Thu, 7 Nov 2024 11:15:01 +0100 Subject: [PATCH] add logout v2 --- .../user/repository/user-remote-repository.ts | 1 + .../use-case/user-log-out-use-case.service.ts | 55 +++++++++++++++++++ src/app/modals/profile/profile.page.ts | 29 ++-------- .../user-remote-repository.service.ts | 7 +++ src/app/module/user/domain/user.service.ts | 6 ++ .../component/event-list/event-list.page.ts | 2 - version/git-version.ts | 12 ++-- 7 files changed, 80 insertions(+), 32 deletions(-) create mode 100644 src/app/core/user/use-case/user-log-out-use-case.service.ts diff --git a/src/app/core/user/repository/user-remote-repository.ts b/src/app/core/user/repository/user-remote-repository.ts index d869c73d1..c7b69c3ae 100644 --- a/src/app/core/user/repository/user-remote-repository.ts +++ b/src/app/core/user/repository/user-remote-repository.ts @@ -42,4 +42,5 @@ export type UserLoginOutputResponse = z.infer export type IUserRepositoryLoginParams = z.infer export abstract class IUserRemoteRepository { abstract login(input: IUserRepositoryLoginParams): Promise, HttpErrorResponse>> + abstract logout(): Promise, HttpErrorResponse>> } diff --git a/src/app/core/user/use-case/user-log-out-use-case.service.ts b/src/app/core/user/use-case/user-log-out-use-case.service.ts new file mode 100644 index 000000000..f102cad89 --- /dev/null +++ b/src/app/core/user/use-case/user-log-out-use-case.service.ts @@ -0,0 +1,55 @@ +import { Injectable } from '@angular/core'; +import { IUserRemoteRepository } from '../repository/user-remote-repository'; +import { XTracerAsync } from 'src/app/services/monitoring/opentelemetry/tracer'; +import { SessionStore } from 'src/app/store/session.service'; +import { Router } from '@angular/router'; +import { environment } from 'src/environments/environment'; +import { NotificationsService } from 'src/app/services/notifications.service'; + +@Injectable({ + providedIn: 'root' +}) +export class UserLogOutUseCaseService { + + constructor( + private userRemoteRepository: IUserRemoteRepository, + private router: Router, + private notificationService: NotificationsService, + ) { } + + @XTracerAsync({name:'UserLogOutUseCaseService', module:'user', bugPrint: true}) + async execute() { + let logoutOut = false + + let subscription = this.router.events.subscribe((val) => { + logoutOut = true + }); + + const result = await this.userRemoteRepository.logout() + + SessionStore.setInativity(false) + SessionStore.setUrlBeforeInactivity(this.router.url); + logoutOut == false + + if (environment.production) { + window.location.pathname = '/auth' + this.notificationService.DeletePostToken() + subscription.unsubscribe() + } else { + const pathBeforeGoOut = window.location.pathname + this.router.navigateByUrl('/auth', { replaceUrl: true }); + this.notificationService.DeletePostToken() + + setTimeout(() => { + if (logoutOut == false || pathBeforeGoOut == window.location.pathname) { + window.location.pathname = '/auth' + this.notificationService.DeletePostToken() + } else { + + } + subscription.unsubscribe() + }, 500) + } + + } +} diff --git a/src/app/modals/profile/profile.page.ts b/src/app/modals/profile/profile.page.ts index 591477aa5..1b783e8af 100644 --- a/src/app/modals/profile/profile.page.ts +++ b/src/app/modals/profile/profile.page.ts @@ -19,6 +19,8 @@ import { NotificationTable } from 'src/app/module/notification/data/infra/db/not import { isHttpError } from 'src/app/services/http.service'; import { UserRepositoryService } from 'src/app/module/user/data/user-repository.service'; import { UserProfilePicture } from 'src/app/module/user/data/datasource/user-local-repository.service'; +import { UserService } from 'src/app/module/user/domain/user.service' + @Component({ selector: 'app-profile', @@ -69,7 +71,8 @@ export class ProfilePage implements OnInit { private agendaDataRepository: AgendaDataRepositoryService, private toastService: ToastService, private notificationRepositoryService: NotificationRepositoryService, - private UserRepositoryService: UserRepositoryService + private UserRepositoryService: UserRepositoryService, + private UserService:UserService ) { this.profilePictureSubject = this.UserRepositoryService.getProfilePictureLive() as any @@ -350,29 +353,7 @@ export class ProfilePage implements OnInit { } logout() { - this.authservice.logoutUser(); - SessionStore.setInativity(false) - SessionStore.setUrlBeforeInactivity(this.router.url); - this.logoutOut == false - - if (environment.production) { - window.location.pathname = '/auth' - this.notificationService.DeletePostToken() - } else { - const pathBeforeGoOut = window.location.pathname - this.router.navigateByUrl('/auth', { replaceUrl: true }); - this.notificationService.DeletePostToken() - - setTimeout(() => { - if (this.logoutOut == false || pathBeforeGoOut == window.location.pathname) { - window.location.pathname = '/auth' - this.notificationService.DeletePostToken() - } else { - - } - }, 500) - } - + this.UserService.logout(); } async editProfile() { diff --git a/src/app/module/user/data/datasource/user-remote-repository.service.ts b/src/app/module/user/data/datasource/user-remote-repository.service.ts index f7b387b25..d0389da0d 100644 --- a/src/app/module/user/data/datasource/user-remote-repository.service.ts +++ b/src/app/module/user/data/datasource/user-remote-repository.service.ts @@ -7,6 +7,7 @@ import { TracingType } from 'src/app/services/monitoring/opentelemetry/tracer'; import { HttpAdapter } from 'src/app/infra/http/adapter'; import { IUserRepositoryLoginParams } from 'src/app/core/user/repository/user-remote-repository'; import { UserLoginOutput } from 'src/app/core/user/use-case/user-login-use-case.service'; +import { SessionStore } from 'src/app/store/session.service'; @Injectable({ providedIn: 'root' }) @@ -26,6 +27,12 @@ export class UserRemoteRepositoryService { return await this.http.post(`${this.baseUrl}/Users/login`, input) } + // @APIReturn(MessageOutPutDTOSchema, 'get/Messages') + async logout() { + + return await this.http.post(`${this.baseUrl}/Users/${SessionStore.user.UserId}/logout`, {}) + } + getUserProfilePhoto(guid: string, tracing?: TracingType) { const geturl = environment.apiURL + 'UserAuthentication/GetPhoto'; diff --git a/src/app/module/user/domain/user.service.ts b/src/app/module/user/domain/user.service.ts index 81c463300..4209e48b1 100644 --- a/src/app/module/user/domain/user.service.ts +++ b/src/app/module/user/domain/user.service.ts @@ -1,6 +1,7 @@ import { Injectable } from '@angular/core'; import { IUserRemoteRepository } from 'src/app/core/user/repository/user-remote-repository'; import { UserLoginInput, UserLoginUseCaseService } from 'src/app/core/user/use-case/user-login-use-case.service'; +import { UserLogOutUseCaseService } from 'src/app/core/user/use-case/user-log-out-use-case.service'; import { SessionStore } from './service/session.service' import { UserEntity } from 'src/app/core/user/entity/userEntity'; @Injectable({ @@ -10,6 +11,7 @@ export class UserService { constructor( private userLoginUseCaseService: UserLoginUseCaseService, + private userLogOutUseCaseService: UserLogOutUseCaseService ) { } @@ -23,4 +25,8 @@ export class UserService { return result } + + async logout() { + return await this.userLogOutUseCaseService.execute() + } } diff --git a/src/app/ui/agenda/component/event-list/event-list.page.ts b/src/app/ui/agenda/component/event-list/event-list.page.ts index 5e7fbcd75..2c36ac837 100644 --- a/src/app/ui/agenda/component/event-list/event-list.page.ts +++ b/src/app/ui/agenda/component/event-list/event-list.page.ts @@ -74,8 +74,6 @@ export class EventListPage implements OnInit { this.setCalendarByDefault() - console.log('remove!=================') - } async setCalendarByDefault() { diff --git a/version/git-version.ts b/version/git-version.ts index 08dbf7064..64704a3dd 100644 --- a/version/git-version.ts +++ b/version/git-version.ts @@ -1,11 +1,11 @@ export let versionData = { - "shortSHA": "f0b4ada55", - "SHA": "f0b4ada550488841ace50da67bdd6e703dc74680", + "shortSHA": "652252e47", + "SHA": "652252e47882a8b5adf832e5dfd9f0ba0f43579b", "branch": "feature/login-v2", "lastCommitAuthor": "'Peter Maquiran'", - "lastCommitTime": "'Wed Nov 6 14:17:14 2024 +0100'", - "lastCommitMessage": "fix gerar diploma", - "lastCommitNumber": "6131", - "changeStatus": "On branch feature/login-v2\nYour branch is up to date with 'origin/feature/login-v2'.\n\nChanges to be committed:\n (use \"git restore --staged ...\" to unstage)\n\tmodified: src/app/core/user/mapper/user-login.ts\n\tmodified: src/app/core/user/use-case/user-login-use-case.service.ts\n\tmodified: src/app/module/agenda/data/repository/agenda-data-repository.service.ts\n\tmodified: src/app/pages/gabinete-digital/event-list/approve-event/approve-event.page.html\n\tmodified: src/app/services/decorator/api-validate-schema.decorator.ts\n\tmodified: src/app/ui/agenda/agenda.page.html\n\tmodified: src/app/ui/agenda/component/edit-event-to-approve/edit-event-to-approve.page.ts\n\tmodified: src/app/ui/agenda/component/event-list/event-list.page.scss\n\tmodified: src/app/ui/agenda/component/event-list/event-list.page.ts\n\tmodified: src/app/ui/chat/component/messages/messages.page.html\n\tmodified: src/app/ui/shared/components/header/header.page.ts", + "lastCommitTime": "'Thu Nov 7 10:51:58 2024 +0100'", + "lastCommitMessage": "fix edit event to approve", + "lastCommitNumber": "6132", + "changeStatus": "On branch feature/login-v2\nYour branch is up to date with 'origin/feature/login-v2'.\n\nChanges to be committed:\n (use \"git restore --staged ...\" to unstage)\n\tmodified: src/app/core/user/repository/user-remote-repository.ts\n\tnew file: src/app/core/user/use-case/user-log-out-use-case.service.ts\n\tmodified: src/app/modals/profile/profile.page.ts\n\tmodified: src/app/module/user/data/datasource/user-remote-repository.service.ts\n\tmodified: src/app/module/user/domain/user.service.ts\n\tmodified: src/app/ui/agenda/component/event-list/event-list.page.ts\n\tmodified: version/git-version.ts", "changeAuthor": "peter.maquiran" } \ No newline at end of file