add logout v2

This commit is contained in:
Peter Maquiran
2024-11-07 11:15:01 +01:00
parent 652252e478
commit dad392335e
7 changed files with 80 additions and 32 deletions
@@ -42,4 +42,5 @@ export type UserLoginOutputResponse = z.infer<typeof LoginUserResponseSchema>
export type IUserRepositoryLoginParams = z.infer<typeof UserRepositoryLoginParams> export type IUserRepositoryLoginParams = z.infer<typeof UserRepositoryLoginParams>
export abstract class IUserRemoteRepository { export abstract class IUserRemoteRepository {
abstract login(input: IUserRepositoryLoginParams): Promise<Result<HttpResult<UserLoginOutputResponse>, HttpErrorResponse>> abstract login(input: IUserRepositoryLoginParams): Promise<Result<HttpResult<UserLoginOutputResponse>, HttpErrorResponse>>
abstract logout(): Promise<Result<HttpResult<any>, HttpErrorResponse>>
} }
@@ -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)
}
}
}
+5 -24
View File
@@ -19,6 +19,8 @@ import { NotificationTable } from 'src/app/module/notification/data/infra/db/not
import { isHttpError } from 'src/app/services/http.service'; import { isHttpError } from 'src/app/services/http.service';
import { UserRepositoryService } from 'src/app/module/user/data/user-repository.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 { UserProfilePicture } from 'src/app/module/user/data/datasource/user-local-repository.service';
import { UserService } from 'src/app/module/user/domain/user.service'
@Component({ @Component({
selector: 'app-profile', selector: 'app-profile',
@@ -69,7 +71,8 @@ export class ProfilePage implements OnInit {
private agendaDataRepository: AgendaDataRepositoryService, private agendaDataRepository: AgendaDataRepositoryService,
private toastService: ToastService, private toastService: ToastService,
private notificationRepositoryService: NotificationRepositoryService, private notificationRepositoryService: NotificationRepositoryService,
private UserRepositoryService: UserRepositoryService private UserRepositoryService: UserRepositoryService,
private UserService:UserService
) { ) {
this.profilePictureSubject = this.UserRepositoryService.getProfilePictureLive() as any this.profilePictureSubject = this.UserRepositoryService.getProfilePictureLive() as any
@@ -350,29 +353,7 @@ export class ProfilePage implements OnInit {
} }
logout() { logout() {
this.authservice.logoutUser(); this.UserService.logout();
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)
}
} }
async editProfile() { async editProfile() {
@@ -7,6 +7,7 @@ import { TracingType } from 'src/app/services/monitoring/opentelemetry/tracer';
import { HttpAdapter } from 'src/app/infra/http/adapter'; import { HttpAdapter } from 'src/app/infra/http/adapter';
import { IUserRepositoryLoginParams } from 'src/app/core/user/repository/user-remote-repository'; 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 { UserLoginOutput } from 'src/app/core/user/use-case/user-login-use-case.service';
import { SessionStore } from 'src/app/store/session.service';
@Injectable({ @Injectable({
providedIn: 'root' providedIn: 'root'
}) })
@@ -26,6 +27,12 @@ export class UserRemoteRepositoryService {
return await this.http.post<UserLoginOutput>(`${this.baseUrl}/Users/login`, input) return await this.http.post<UserLoginOutput>(`${this.baseUrl}/Users/login`, input)
} }
// @APIReturn(MessageOutPutDTOSchema, 'get/Messages')
async logout() {
return await this.http.post<UserLoginOutput>(`${this.baseUrl}/Users/${SessionStore.user.UserId}/logout`, {})
}
getUserProfilePhoto(guid: string, tracing?: TracingType) { getUserProfilePhoto(guid: string, tracing?: TracingType) {
const geturl = environment.apiURL + 'UserAuthentication/GetPhoto'; const geturl = environment.apiURL + 'UserAuthentication/GetPhoto';
@@ -1,6 +1,7 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { IUserRemoteRepository } from 'src/app/core/user/repository/user-remote-repository'; 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 { 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 { SessionStore } from './service/session.service'
import { UserEntity } from 'src/app/core/user/entity/userEntity'; import { UserEntity } from 'src/app/core/user/entity/userEntity';
@Injectable({ @Injectable({
@@ -10,6 +11,7 @@ export class UserService {
constructor( constructor(
private userLoginUseCaseService: UserLoginUseCaseService, private userLoginUseCaseService: UserLoginUseCaseService,
private userLogOutUseCaseService: UserLogOutUseCaseService
) { } ) { }
@@ -23,4 +25,8 @@ export class UserService {
return result return result
} }
async logout() {
return await this.userLogOutUseCaseService.execute()
}
} }
@@ -74,8 +74,6 @@ export class EventListPage implements OnInit {
this.setCalendarByDefault() this.setCalendarByDefault()
console.log('remove!=================')
} }
async setCalendarByDefault() { async setCalendarByDefault() {
+6 -6
View File
@@ -1,11 +1,11 @@
export let versionData = { export let versionData = {
"shortSHA": "f0b4ada55", "shortSHA": "652252e47",
"SHA": "f0b4ada550488841ace50da67bdd6e703dc74680", "SHA": "652252e47882a8b5adf832e5dfd9f0ba0f43579b",
"branch": "feature/login-v2", "branch": "feature/login-v2",
"lastCommitAuthor": "'Peter Maquiran'", "lastCommitAuthor": "'Peter Maquiran'",
"lastCommitTime": "'Wed Nov 6 14:17:14 2024 +0100'", "lastCommitTime": "'Thu Nov 7 10:51:58 2024 +0100'",
"lastCommitMessage": "fix gerar diploma", "lastCommitMessage": "fix edit event to approve",
"lastCommitNumber": "6131", "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 <file>...\" 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", "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 <file>...\" 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" "changeAuthor": "peter.maquiran"
} }