import { IMagicLinkNotificationPort, MagicLinkNotificationInput } from '@core/identity/domain/ports/IMagicLinkNotificationPort'; import { Logger } from '@core/shared/application'; /** * Console adapter for magic link notifications * Logs to console for development/testing purposes */ export class ConsoleMagicLinkNotificationAdapter implements IMagicLinkNotificationPort { constructor(private readonly logger: Logger) {} async sendMagicLink(input: MagicLinkNotificationInput): Promise { this.logger.info('[ConsoleMagicLinkNotificationAdapter] Magic link generated', { email: input.email, userId: input.userId, magicLink: input.magicLink, expiresAt: input.expiresAt, }); // In development, log to console if (process.env.NODE_ENV === 'development') { console.log('\nšŸ”’ PASSWORD RESET MAGIC LINK'); console.log('='.repeat(50)); console.log(`šŸ“§ Email: ${input.email}`); console.log(`šŸ‘¤ User ID: ${input.userId}`); console.log(`šŸ”— Link: ${input.magicLink}`); console.log(`ā° Expires: ${input.expiresAt.toLocaleString()}`); console.log('='.repeat(50)); console.log('āš ļø This would be sent via email in production\n'); } } }