-
Notifications
You must be signed in to change notification settings - Fork 58
/
Copy pathoidc-identity-providers.js
55 lines (44 loc) · 1.83 KB
/
oidc-identity-providers.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import Service, { inject as service } from '@ember/service';
// TODO: Manage this through the API
const FR_FEATURED_IDENTITY_PROVIDER_CODE = 'POLE_EMPLOI';
const ORG_FEATURED_IDENTITY_PROVIDER_CODE = 'FWB';
const FEATURED_IDENTITY_PROVIDER_CODES = [FR_FEATURED_IDENTITY_PROVIDER_CODE, ORG_FEATURED_IDENTITY_PROVIDER_CODE];
export default class OidcIdentityProviders extends Service {
@service store;
@service currentDomain;
get list() {
return this.store.peekAll('oidc-identity-provider');
}
getIdentityProviderNamesByAuthenticationMethods(methods) {
const identityProviderCodes = methods.map(({ identityProvider }) => identityProvider);
return this.list
.filter((provider) => identityProviderCodes.includes(provider.code))
.map((provider) => provider.organizationName);
}
get hasIdentityProviders() {
return this.list.length > 0;
}
// TODO: Manage this through the API
get featuredIdentityProvider() {
return this.list.find((identityProvider) => {
const featuredIdentityProviderCode = this.currentDomain.isFranceDomain
? FR_FEATURED_IDENTITY_PROVIDER_CODE
: ORG_FEATURED_IDENTITY_PROVIDER_CODE;
return identityProvider.code === featuredIdentityProviderCode;
});
}
// TODO: Manage this through the API
get hasOtherIdentityProviders() {
if (!this.currentDomain.isFranceDomain) {
return false;
}
return this.list.some((identityProvider) => !FEATURED_IDENTITY_PROVIDER_CODES.includes(identityProvider.code));
}
isProviderEnabled(identityProviderSlug) {
return this.list.some((provider) => provider.id === identityProviderSlug);
}
async load() {
const oidcIdentityProviders = await this.store.findAll('oidc-identity-provider');
oidcIdentityProviders.map((oidcIdentityProvider) => (this[oidcIdentityProvider.id] = oidcIdentityProvider));
}
}