feat: add providers OAuth
This commit is contained in:
@ -1,8 +1,14 @@
|
||||
import {Injectable} from "@angular/core";
|
||||
import ApiService, {AvailableVersion} from "@api/api.service";
|
||||
import {LoginRequest} from "@api/v1/loginRequest";
|
||||
import {catchError, of} from "rxjs";
|
||||
import {AuthRoles} from "@model/AuthRoles";
|
||||
import {catchError, map, Observable, of} from "rxjs";
|
||||
import {AuthRoles} from "@model/authRoles";
|
||||
import {AvailableOAuthProvidersResponse} from "@api/v1/availableProvidersResponse";
|
||||
import {OAuthProvider} from "@model/oAuthProvider";
|
||||
|
||||
export interface OAuthProviderData extends AvailableOAuthProvidersResponse {
|
||||
icon: string;
|
||||
}
|
||||
|
||||
@Injectable()
|
||||
export default class AuthApiService extends ApiService {
|
||||
@ -51,4 +57,32 @@ export default class AuthApiService extends ApiService {
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
private getProviderIcon(provider: OAuthProvider): string {
|
||||
switch (provider) {
|
||||
case OAuthProvider.Google:
|
||||
return 'assets/icons/google.svg';
|
||||
case OAuthProvider.Yandex:
|
||||
return 'assets/icons/yandex.svg';
|
||||
case OAuthProvider.MailRu:
|
||||
return 'assets/icons/mailru.svg';
|
||||
default:
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
public availableProviders(): Observable<OAuthProviderData[]> {
|
||||
let request = this.createRequestBuilder()
|
||||
.setEndpoint('AvailableProviders')
|
||||
.setWithCredentials()
|
||||
.build;
|
||||
|
||||
return this.get<Array<AvailableOAuthProvidersResponse>>(request).pipe(
|
||||
map(data => {
|
||||
return data.map((provider) => ({
|
||||
...provider,
|
||||
icon: this.getProviderIcon(provider.provider),
|
||||
}) as OAuthProviderData);
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user