48 lines
1.9 KiB
TypeScript
48 lines
1.9 KiB
TypeScript
/**
|
|
* Adapter: CookieIdentitySessionAdapter
|
|
*
|
|
* Manages user session using cookies. This is a placeholder implementation.
|
|
*/
|
|
|
|
import type { AuthenticatedUserDTO } from '@core/identity/application/dto/AuthenticatedUserDTO';
|
|
import type { AuthSessionDTO } from '@core/identity/application/dto/AuthSessionDTO';
|
|
import type { IdentitySessionPort } from '@core/identity/application/ports/IdentitySessionPort';
|
|
import { Logger } from '@core/shared/application';
|
|
|
|
export class CookieIdentitySessionAdapter implements IdentitySessionPort {
|
|
private currentSession: AuthSessionDTO | null = null;
|
|
|
|
constructor(private readonly logger: Logger) {
|
|
this.logger.info('CookieIdentitySessionAdapter initialized.');
|
|
// In a real application, you would load the session from a cookie here
|
|
// For demo, we'll start with no session.
|
|
}
|
|
|
|
async getCurrentSession(): Promise<AuthSessionDTO | null> {
|
|
this.logger.debug('[CookieIdentitySessionAdapter] Getting current session.');
|
|
return Promise.resolve(this.currentSession);
|
|
}
|
|
|
|
async createSession(user: AuthenticatedUserDTO): Promise<AuthSessionDTO> {
|
|
this.logger.debug(`[CookieIdentitySessionAdapter] Creating session for user: ${user.id}`);
|
|
const newSession: AuthSessionDTO = {
|
|
user: user,
|
|
issuedAt: Date.now(),
|
|
expiresAt: Date.now() + 3600 * 1000, // 1 hour expiration
|
|
token: `mock-token-${user.id}-${Date.now()}`,
|
|
};
|
|
this.currentSession = newSession;
|
|
// In a real app, you'd set a secure, HTTP-only cookie here.
|
|
this.logger.info(`[CookieIdentitySessionAdapter] Session created for user ${user.id}.`);
|
|
return Promise.resolve(newSession);
|
|
}
|
|
|
|
async clearSession(): Promise<void> {
|
|
this.logger.debug('[CookieIdentitySessionAdapter] Clearing session.');
|
|
this.currentSession = null;
|
|
// In a real app, you'd clear the session cookie here.
|
|
this.logger.info('[CookieIdentitySessionAdapter] Session cleared.');
|
|
return Promise.resolve();
|
|
}
|
|
}
|