UNPKG

@restnfeel/agentc-starter-kit

Version:

한국어 기업용 CMS 모듈 - Task Master AI와 함께 빠르게 웹사이트를 구현할 수 있는 재사용 가능한 컴포넌트 시스템

126 lines (98 loc) 3.35 kB
import { UserRole } from "@/lib/auth/roles"; export interface InvitationEmailData { to: string; inviteToken: string; invitedBy: string; role: UserRole; siteIds?: string[]; message?: string; } const ROLE_NAMES: Record<UserRole, string> = { [UserRole.SUPER_ADMIN]: "슈퍼 관리자", [UserRole.SITE_ADMIN]: "사이트 관리자", [UserRole.EDITOR]: "편집자", [UserRole.VIEWER]: "뷰어", }; export async function sendInvitationEmail( data: InvitationEmailData ): Promise<void> { const { to, inviteToken, invitedBy, role, siteIds, message } = data; // Create invitation URL const baseUrl = process.env.NEXTAUTH_URL || "http://localhost:3000"; const inviteUrl = `${baseUrl}/auth/accept-invite?token=${encodeURIComponent( inviteToken )}`; // Prepare email content const roleName = ROLE_NAMES[role]; const siteInfo = siteIds && siteIds.length > 0 ? `\n\n할당된 사이트: ${siteIds.join(", ")}` : ""; const emailContent = ` 안녕하세요, ${invitedBy}님이 AgentC 다중 사이트 관리 시스템에 초대하셨습니다. 초대 정보: - 역할: ${roleName}${siteInfo} ${message ? `\n메시지:\n${message}\n` : ""} 아래 링크를 클릭하여 계정을 활성화하세요: ${inviteUrl} 이 초대는 7일 후에 만료됩니다. 감사합니다. AgentC 팀 `.trim(); // In a real implementation, this would use a proper email service // For now, we'll log the email content and simulate sending console.log("=== 초대 이메일 발송 ==="); console.log(`받는 사람: ${to}`); console.log(`제목: AgentC 시스템 초대`); console.log(`내용:\n${emailContent}`); console.log("========================"); // Simulate email sending delay await new Promise((resolve) => setTimeout(resolve, 100)); // In production, you would integrate with services like: // - SendGrid // - AWS SES // - Nodemailer with SMTP // - Resend // etc. /* Example with Nodemailer: import nodemailer from 'nodemailer'; const transporter = nodemailer.createTransporter({ host: process.env.EMAIL_SERVER_HOST, port: parseInt(process.env.EMAIL_SERVER_PORT || '587'), secure: false, auth: { user: process.env.EMAIL_SERVER_USER, pass: process.env.EMAIL_SERVER_PASSWORD, }, }); await transporter.sendMail({ from: process.env.EMAIL_FROM, to, subject: 'AgentC 시스템 초대', text: emailContent, html: `<pre>${emailContent}</pre>`, }); */ } export async function sendWelcomeEmail( email: string, name: string ): Promise<void> { const welcomeContent = ` 안녕하세요 ${name}님, AgentC 다중 사이트 관리 시스템에 오신 것을 환영합니다! 계정이 성공적으로 활성화되었습니다. 이제 시스템에 로그인하여 할당된 사이트를 관리할 수 있습니다. 로그인 페이지: ${process.env.NEXTAUTH_URL}/admin/login 궁금한 점이 있으시면 언제든지 문의해 주세요. 감사합니다. AgentC 팀 `.trim(); console.log("=== 환영 이메일 발송 ==="); console.log(`받는 사람: ${email}`); console.log(`제목: AgentC 시스템 가입을 환영합니다`); console.log(`내용:\n${welcomeContent}`); console.log("========================"); await new Promise((resolve) => setTimeout(resolve, 100)); }