mirror of
https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend
synced 2025-12-28 22:42:11 +01:00
Missing Files
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
export * from './lib/storage-providers';
|
||||
export * from './lib/signal-store-feature';
|
||||
export * from './lib/storage';
|
||||
export * from './lib/tokens';
|
||||
|
||||
@@ -1,36 +1,14 @@
|
||||
import { inject, InjectionToken, signal, Signal } from '@angular/core';
|
||||
import { logger } from '@isa/core/logging';
|
||||
import { OAuthService } from 'angular-oauth2-oidc';
|
||||
import z from 'zod';
|
||||
import { InjectionToken, signal, Signal } from '@angular/core';
|
||||
|
||||
export const USER_SUB = new InjectionToken<Signal<string>>(
|
||||
'core.storage.user-sub',
|
||||
{
|
||||
factory: () => {
|
||||
const _logger = logger(() => ({
|
||||
context: 'USER_SUB',
|
||||
}));
|
||||
const auth = inject(OAuthService);
|
||||
|
||||
const claims = auth.getIdentityClaims();
|
||||
|
||||
if (!claims || typeof claims !== 'object' || !('sub' in claims)) {
|
||||
const err = new Error(
|
||||
'No valid identity claims found. User is anonymous.',
|
||||
);
|
||||
_logger.error(err.message);
|
||||
throw err;
|
||||
}
|
||||
|
||||
const validation = z.string().safeParse(claims['sub']);
|
||||
|
||||
if (!validation.success) {
|
||||
const err = new Error('Invalid "sub" claim in identity claims.');
|
||||
_logger.error(err.message, { claims });
|
||||
throw err;
|
||||
}
|
||||
|
||||
return signal(validation.data);
|
||||
return signal('anonymous');
|
||||
},
|
||||
},
|
||||
);
|
||||
|
||||
export function provideUserSubFactory(factory: () => Signal<string>) {
|
||||
return { provide: USER_SUB, useFactory: factory };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user