Parallel use of the same Api Service instance is likely to replace requestData
60 lines
1.7 KiB
TypeScript
60 lines
1.7 KiB
TypeScript
import {Injectable} from "@angular/core";
|
|
import ApiService, {AvailableVersion} from "@api/api.service";
|
|
import {LoginRequest} from "@api/v1/loginRequest";
|
|
import {TokenResponse} from "@api/v1/tokenResponse";
|
|
import {catchError, of, tap} from "rxjs";
|
|
import {AuthRoles} from "@model/AuthRoles";
|
|
import {AuthService, AvailableAuthenticationProvider} from "@service/auth.service";
|
|
|
|
@Injectable()
|
|
export default class AuthApiService extends ApiService {
|
|
public readonly basePath = 'Auth/';
|
|
public readonly version = AvailableVersion.v1;
|
|
|
|
public login(login: LoginRequest) {
|
|
let request = this.createRequestBuilder()
|
|
.setEndpoint('Login')
|
|
.setData(login)
|
|
.setWithCredentials()
|
|
.build;
|
|
|
|
return this.post<TokenResponse>(request)
|
|
.pipe(
|
|
tap(response => {
|
|
AuthService.setToken(response, AvailableAuthenticationProvider.Bearer, this.combinedUrl(this.createRequestBuilder().setEndpoint('ReLogin').build));
|
|
this.tokenRefreshService.setRefreshTokenExpireMs(response.expiresIn);
|
|
})
|
|
);
|
|
}
|
|
|
|
public logout() {
|
|
let request = this.createRequestBuilder()
|
|
.setWithCredentials()
|
|
.setEndpoint('Logout')
|
|
.build;
|
|
|
|
return this.addAuth(request)
|
|
.get(request)
|
|
.pipe(
|
|
tap(_ => {
|
|
localStorage.removeItem(ApiService.tokenKey);
|
|
})
|
|
);
|
|
}
|
|
|
|
public getRole(isSilence: boolean = true) {
|
|
let request = this.createRequestBuilder()
|
|
.setSilenceMode(isSilence)
|
|
.setEndpoint('GetRole')
|
|
.build;
|
|
|
|
return this.addAuth(request)
|
|
.get<AuthRoles>(request)
|
|
.pipe(
|
|
catchError(_ => {
|
|
return of(null);
|
|
})
|
|
);
|
|
}
|
|
}
|