50 lines
1.2 KiB
TypeScript
50 lines
1.2 KiB
TypeScript
import { queryOne, execute } from '../../utils/db'
|
|
|
|
interface SelectUserBody {
|
|
employeeId: number
|
|
}
|
|
|
|
/**
|
|
* 기존 사용자 선택 로그인
|
|
* POST /api/auth/select-user
|
|
*/
|
|
export default defineEventHandler(async (event) => {
|
|
const body = await readBody<SelectUserBody>(event)
|
|
|
|
if (!body.employeeId) {
|
|
throw createError({ statusCode: 400, message: '사용자를 선택해주세요.' })
|
|
}
|
|
|
|
// 사원 조회
|
|
const employee = await queryOne<any>(`
|
|
SELECT * FROM wr_employee_info
|
|
WHERE employee_id = $1 AND is_active = true
|
|
`, [body.employeeId])
|
|
|
|
if (!employee) {
|
|
throw createError({ statusCode: 404, message: '사용자를 찾을 수 없습니다.' })
|
|
}
|
|
|
|
// 로그인 이력 추가
|
|
await execute(`
|
|
INSERT INTO wr_login_history (employee_id) VALUES ($1)
|
|
`, [employee.employee_id])
|
|
|
|
// 쿠키 설정
|
|
setCookie(event, 'user_id', String(employee.employee_id), {
|
|
httpOnly: true,
|
|
maxAge: 60 * 60 * 24 * 7,
|
|
path: '/'
|
|
})
|
|
|
|
return {
|
|
success: true,
|
|
user: {
|
|
employeeId: employee.employee_id,
|
|
employeeName: employee.employee_name,
|
|
employeeEmail: employee.employee_email,
|
|
employeePosition: employee.employee_position
|
|
}
|
|
}
|
|
})
|