generated from flo/template-frontend
88 lines
2.4 KiB
TypeScript
88 lines
2.4 KiB
TypeScript
import { Injectable } from "@angular/core";
|
|
import { RequestService } from "./request.service";
|
|
import { UserStateResponse } from "../models/user-state-request.model";
|
|
import { BehaviorSubject, Observable } from "rxjs";
|
|
import { LoginRequest, LoginResponse } from "../models/login-request.model copy";
|
|
import { Router } from "@angular/router";
|
|
import { RegisterUserRequest, RegisterUserResponse } from "../models/register-user-request.model";
|
|
import { ConfirmRegistrationRequest, ConfirmRegistrationResponse } from "../models/confirm-registration-request.model";
|
|
|
|
@Injectable()
|
|
export class AuthService {
|
|
|
|
currentState$ = new BehaviorSubject<UserStateResponse | null | undefined>(undefined);
|
|
|
|
constructor(
|
|
private requestService: RequestService,
|
|
private router: Router
|
|
) {
|
|
}
|
|
|
|
readUserState(): void {
|
|
this.requestService.get(
|
|
'user/state',
|
|
{},
|
|
(response: UserStateResponse) => {
|
|
this.currentState$.next(response);
|
|
},
|
|
() => {
|
|
this.currentState$.next(undefined);
|
|
}
|
|
)
|
|
}
|
|
|
|
login(body: LoginRequest): LoginResponse|null {
|
|
let result = null;
|
|
|
|
this.requestService.post(
|
|
'auth/login-user',
|
|
body,
|
|
(response: LoginResponse) => {
|
|
result = response;
|
|
this.readUserState();
|
|
}
|
|
);
|
|
|
|
return result;
|
|
}
|
|
|
|
register(body: RegisterUserRequest): RegisterUserResponse|null {
|
|
let result = null;
|
|
|
|
this.requestService.post(
|
|
'auth/register-user',
|
|
body,
|
|
(response: LoginResponse) => {
|
|
result = response;
|
|
this.readUserState();
|
|
}
|
|
);
|
|
|
|
return result;
|
|
}
|
|
|
|
confirmRegistration(body: ConfirmRegistrationRequest): ConfirmRegistrationResponse|null {
|
|
let result = null;
|
|
|
|
this.requestService.post(
|
|
'auth/confirm-registration',
|
|
body,
|
|
(response: LoginResponse) => {
|
|
result = response;
|
|
this.readUserState();
|
|
}
|
|
);
|
|
|
|
return result;
|
|
}
|
|
|
|
logout(): void {
|
|
this.requestService.post(
|
|
'auth/logout-user',
|
|
{},
|
|
(response: any) => {
|
|
this.readUserState();
|
|
}
|
|
);
|
|
}
|
|
} |