Files
micro-service-api/exthernal-login-api/src/controllers/registercontroller.js

72 lines
3.2 KiB
JavaScript
Raw Normal View History

import { RegisterService } from '../services/registerservice.js'
import { sendError } from '../utils/response.js'
2025-11-11 12:36:06 +07:00
import { GeneralService } from '../share/generalservice.js';
import bcrypt from 'bcrypt'
import { Interface } from '../interfaces/Interface.js';
import { validateSave } from '../utils/validate.js'; // import เข้ามา
2025-11-11 12:36:06 +07:00
export class RegisterController {
2025-11-11 12:36:06 +07:00
constructor() {
this.generalService = new GeneralService();
this.registerService = new RegisterService();
this.Interface = new Interface();
2025-11-11 12:36:06 +07:00
}
async onNavigate(req, res) {
this.generalService.devhint(1, 'registercontroller.js', 'onNavigate() start');
let organization = req.body.organization;
const prommis = await this.onRegisterController(req, res, organization);
return prommis;
}
async onRegisterController(req, res, database) {
let idx = -1
let result = []
2025-11-11 12:36:06 +07:00
try {
// 1. ดึง Sequence ล่าสุดจาก Service (เพื่อเอามา +1)
const Seq = await this.registerService.genNum(database);
// 2. Hash Password
let passwordRaw = req.body.request.password;
const saltRounds = 10;
const hashedPassword = await bcrypt.hash(passwordRaw, saltRounds);
// 3. เรียก makeArySave เพื่อเตรียมข้อมูลและบันทึกผ่าน saveInterface
// ส่ง nextSeq และ hashedPassword เข้าไป
result = await this.makeArySave(req, Seq, hashedPassword);
this.generalService.devhint(1, 'registercontroller.js', 'Register success');
2025-11-11 12:36:06 +07:00
} catch (error) {
idx = 1;
} finally {
if (idx === 1) return sendError('เกิดข้อผิดพลาดไม่คาดคิดเกิดขึ้น', 'Unexpected error');
if (!result) return sendError('ไม่สามารถลงทะเบียนได้', 'Registration failed');
return result
}
}
async makeArySave(req, seq, hashedPassword) {
// Map ข้อมูลเข้า Field ตามตาราง usrmst
let arysave = {
methods: 'post', // สั่งให้ saveInterface ทำการ INSERT
usrseq: seq + 1, // PK: integer
usrnam: validateSave(req.body.request.username, 'username'),
usrpwd: hashedPassword, // character varying(255)
usreml: validateSave(req.body.request.email, 'Email'), // character varying(50)
usrthinam: validateSave(req.body.request.firstname, 'firstname'), // character varying(100)
usrthilstnam: validateSave(req.body.request.lastname, 'lastname'), // character varying(100)
// Field อื่นๆ ที่อาจต้อง Default ค่าไว้ก่อน (ตาม Schema)
usrrol: 'U', // Default User Role
adpdte: '', // Approved Date (รออนุมัติ)
expdte: '', // Expire Date
lstlgn: '', // Last Login
usrorg: req.body.request.organization, // ถ้ามี field นี้
2025-11-11 12:36:06 +07:00
}
// เรียก saveInterface ผ่าน generalService (ระบุชื่อตาราง 'usrmst')
return this.Interface.saveInterface('usrmst', arysave, req);
2025-11-11 12:36:06 +07:00
}
}