todo 웹앱 프로젝트
export const checkIdExist = async (id: string): Promise<boolean> => {
try {
const [isIdExist] = await database.execute<RowDataPacket[]>('SELECT user_id FROM users WHERE user_id = ?', [id]);
console.log(isIdExist);
if (Array.isArray(isIdExist) && isIdExist.length === 0) {
return true;
} else {
return false;
}
} catch (error) {
console.error("데이터베이스 조회 중 오류:", error);
throw new Error('데이터를 가져오는 중 오류가 발생했습니다.');
}
}
export const checkEmailAvailability = async (email: string): Promise<boolean> => {
try {
const [isEmailExist] = await database.execute<RowDataPacket[]>('SELECT user_id FROM users WHERE email = ?', [email]);
if (Array.isArray(isEmailExist) && isEmailExist.length === 0) {
return true;
} else {
return false;
}
} catch (error) {
console.error("데이터베이스 조회 중 오류:", error);
throw new Error('데이터를 가져오는 중 오류가 발생했습니다.');
}
}
아이디와 이메일 모두 테이블에 레코드 정보가 없으면 사용 가능
export const sendEmail = async (sendCase: number, email: string, id: string): Promise<boolean> => {
try {
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: process.env.EMAIL_USER,
pass: process.env.EMAIL_KEY
}
});
let mailOptions;
let code;
switch (sendCase) {
case 1:
code = Math.random().toString(36).substring(2, 8);
mailOptions = {
to: email,
subject: 'Verification code',
text: `Your verification code is : [${code}]`
};
await transporter.sendMail(mailOptions);
const isLogCreate = await createLog(email, code);
if (!isLogCreate) {
return false;
}
break;
// ~~
}
return true;
} catch (error) {
console.error('Failed to send email:', error);
return false;
}
}
nodemailer 모듈을 사용하여 gmail로 이메일 전송
export const verifyCode = async (email: string, code: string): Promise<boolean> => {
try {
const query = 'SELECT * FROM logs WHERE email = ? AND code = ?';
const values = [email, code];
const [isLogExist] = await database.execute(query, values);
if (Array.isArray(isLogExist) && isLogExist.length > 0) {
return true;
} else {
return false;
}
} catch (error) {
console.error('Error verifying code:', error);
return false;
}
}
쌩 sql로 하는 것 보다는..
그냥 서버에서 typeorm 써서 해야겠다..