| /** |
| * Copyright (c) HashiCorp, Inc. |
| * SPDX-License-Identifier: MPL-2.0 |
| */ |
| |
| import Model, { attr } from '@ember-data/model'; |
| import parseURL from 'core/utils/parse-url'; |
| |
| const DOMAIN_STRINGS = { |
| 'github.com': 'GitHub', |
| 'gitlab.com': 'GitLab', |
| 'google.com': 'Google', |
| 'ping.com': 'Ping', |
| 'okta.com': 'Okta', |
| 'auth0.com': 'Auth0', |
| }; |
| |
| const PROVIDER_WITH_LOGO = ['GitLab', 'Google', 'Auth0']; |
| |
| export { DOMAIN_STRINGS, PROVIDER_WITH_LOGO }; |
| |
| export default class RoleJwtModel extends Model { |
| @attr('string') authUrl; |
| |
| get providerName() { |
| const { hostname } = parseURL(this.authUrl); |
| const firstMatch = Object.keys(DOMAIN_STRINGS).find((name) => hostname.includes(name)); |
| return DOMAIN_STRINGS[firstMatch] || null; |
| } |
| |
| get providerButtonComponent() { |
| const { providerName } = this; |
| return PROVIDER_WITH_LOGO.includes(providerName) ? `auth-button-${providerName.toLowerCase()}` : null; |
| } |
| } |