mirror of
https://github.com/hashicorp/vault.git
synced 2025-09-19 12:51:08 +02:00
* change entity_id to camel casing, remove "backends" key from stored auth data * fix tokenExpirationEpoch returning NaN, use authSuccess in auth service tests * camel case mfa_requirement references * refactor auth service * implement api service for token method * implement api service in standard auth methods * add lookupSelf request to persistAuthData method in auht service instead of calling in components * implement api service in oidc-jwt component * implement api service in okta component * implement api service in saml component * use api service for wrapped_token query param * remaining test updates, enterprise tests and stabilize auth helpers * upate renew() to use new persistAuthData method, add a test * revert as this will be addressed upstream * rename supported-login-methods to auth-form-helpers and delete old supported-auth-backends helper, update tests * cleanup normalize after testing mfa validation for each auth method * update type declarations, set displayName in each method component * stabilize redirect tests by waiting for login before asserting url * stabilize tests * modernize typescript syntax, move error const to util * use mirage instead of vault server to resolve test race conditions * fix file import
64 lines
2.0 KiB
TypeScript
64 lines
2.0 KiB
TypeScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: BUSL-1.1
|
|
*/
|
|
|
|
import { baseResourceFactory } from 'vault/resources/base-factory';
|
|
import { service } from '@ember/service';
|
|
import { supportedTypes } from 'vault/utils/auth-form-helpers';
|
|
import engineDisplayData from 'vault/helpers/engines-display-data';
|
|
|
|
import type { Mount } from 'vault/mount';
|
|
import type VersionService from 'vault/services/version';
|
|
import type NamespaceService from 'vault/services/namespace';
|
|
import type { PathInfo } from 'vault/utils/openapi-helpers';
|
|
|
|
export default class AuthMethodResource extends baseResourceFactory<Mount>() {
|
|
@service declare readonly version: VersionService;
|
|
@service declare readonly namespace: NamespaceService;
|
|
|
|
id: string;
|
|
declare paths: PathInfo;
|
|
|
|
constructor(data: Mount, context: unknown) {
|
|
super(data, context);
|
|
// strip trailing slash from path for id since it is used in routing
|
|
this.id = data.path.replace(/\/$/, '');
|
|
}
|
|
|
|
// namespaces introduced types with a `ns_` prefix for built-in engines
|
|
// so we need to strip that to normalize the type
|
|
get methodType() {
|
|
return this.type.replace(/^ns_/, '');
|
|
}
|
|
|
|
get icon() {
|
|
// methodType refers to the backend type (e.g., "aws", "azure")
|
|
const engineData = engineDisplayData(this.methodType);
|
|
return engineData?.glyph || 'users';
|
|
}
|
|
|
|
get directLoginLink() {
|
|
const ns = this.namespace.path;
|
|
const nsQueryParam = ns ? `namespace=${encodeURIComponent(ns)}&` : '';
|
|
const isSupported = supportedTypes(this.version.isEnterprise).includes(this.methodType);
|
|
return isSupported
|
|
? `${window.origin}/ui/vault/auth?${nsQueryParam}with=${encodeURIComponent(this.path)}`
|
|
: '';
|
|
}
|
|
|
|
// used when the `auth` prefix is important,
|
|
// currently only when setting perf mount filtering
|
|
get apiPath() {
|
|
return `auth/${this.path}`;
|
|
}
|
|
|
|
get localDisplay() {
|
|
return this.local ? 'local' : 'replicated';
|
|
}
|
|
|
|
get supportsUserLockoutConfig() {
|
|
return ['approle', 'ldap', 'userpass'].includes(this.methodType);
|
|
}
|
|
}
|