Files
vitanovaPackages/packages/auth/src/marketplace-context.ts

29 lines
1023 B
TypeScript
Raw Normal View History

import { HttpHeaders } from '@angular/common/http';
import { Injectable, inject } from '@angular/core';
import { MARKETPLACES_AUTH_CONFIG } from './config';
export const MARKETPLACE_DOMAIN_HEADER = 'X-Marketplace-Domain';
export function normalizeMarketplaceDomain(domain: string): string {
return domain.trim().toLowerCase().replace(/\.$/, '');
}
@Injectable({ providedIn: 'root' })
export class AuthMarketplaceContext {
private readonly config = inject(MARKETPLACES_AUTH_CONFIG);
domain(): string {
const configured = this.config.marketplaceDomain;
const domain = typeof configured === 'function'
? configured()
: configured ?? (typeof location === 'undefined' ? '' : location.hostname);
return normalizeMarketplaceDomain(domain);
}
headers(extra?: Record<string, string>): HttpHeaders {
const domain = this.domain();
if (!domain) throw new Error('Marketplace domain cannot be resolved');
return new HttpHeaders({ [MARKETPLACE_DOMAIN_HEADER]: domain, ...extra });
}
}