Files
backbone/src/services/sessions/sessions.provider.ts
Morten Olsen 01336e71bb
Some checks failed
Build and release / Build (push) Failing after 13s
Build and release / update-release-draft (push) Has been skipped
Build and release / Release (push) Has been skipped
feat: add build
2025-10-16 22:19:59 +02:00

39 lines
955 B
TypeScript

import { Session } from './sessions.session.ts';
import type { AuthProvider } from '#root/auth/auth.provider.ts';
class SessionProvider {
#handlers: Map<string, AuthProvider>;
constructor() {
this.#handlers = new Map();
}
public get providers() {
return Array.from(this.#handlers.keys());
}
public register = (name: string, provider: AuthProvider) => {
this.#handlers.set(name, provider);
};
public validate = (provider: string, token: string) => {
const handler = this.#handlers.get(provider);
if (!handler) {
throw new Error('Provider not available');
}
return handler.getAccess(token);
};
public get = async (provider: string, token: string) => {
const handler = this.#handlers.get(provider);
if (!handler) {
throw new Error('Provider not available');
}
const access = await handler.getAccess(token);
return new Session(access);
};
}
export { SessionProvider };