File size: 783 Bytes
4e23b01 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | import { createDecorator } from '@moonshot-ai/agent-core-v2';
import { verifyPassword } from './password';
import type { TokenStore } from './tokenStore';
export interface IAuthTokenService {
readonly _serviceBrand: undefined;
getToken(): string;
isValid(candidate: string): Promise<boolean>;
}
export const IAuthTokenService =
createDecorator<IAuthTokenService>('authTokenService');
export function createAuthTokenService(deps: {
readonly tokenStore: TokenStore;
readonly passwordHash: string | undefined;
}): IAuthTokenService {
return {
_serviceBrand: undefined,
getToken: () => deps.tokenStore.getToken(),
isValid: async (candidate) =>
deps.tokenStore.isValid(candidate) ||
(await verifyPassword(candidate, deps.passwordHash)),
};
}
|