@ditsmod/authjs
Version:
Ditsmod module to support Auth.js
45 lines (39 loc) • 1.51 kB
text/typescript
import { controller, rootModule, inject, OnModuleInit } from '@ditsmod/core';
import { route, RoutingModule } from '@ditsmod/routing';
import type { AuthConfig } from '@auth/core';
import { vi } from 'vitest';
import credentials from '#mod/providers/credentials.js';
import { AuthjsModule } from '#mod/authjs.module.js';
import { AUTHJS_CONFIG, AUTHJS_SESSION } from '#mod/constants.js';
import { AuthjsGuard } from '#mod/auth.guard.js';
import { CredentialsService } from './credentials.service.js';
export const expectation = vi.fn((userName?: string | null) => userName);
()
export class Controller1 {
('GET', 'test', [AuthjsGuard])
async getAuth((AUTHJS_SESSION) session: any) {
expectation(session?.user?.name);
return session;
}
}
({
imports: [RoutingModule, { absolutePath: 'auth', module: AuthjsModule }],
controllers: [Controller1],
providersPerMod: [CredentialsService]
})
export class AppModule implements OnModuleInit {
constructor(
(AUTHJS_CONFIG) protected authConfig: AuthConfig,
protected credentialsService: CredentialsService,
) {}
onModuleInit() {
const credentialsProvider = credentials({
credentials: { username: { label: 'Username' } },
authorize: (data) => this.credentialsService.authorize(data),
});
this.authConfig.basePath ??= '/auth';
this.authConfig.secret ??= 'secret';
this.authConfig.providers ??= [];
this.authConfig.providers.push(credentialsProvider);
}
}