-api เส้น register
-เครื่องมือต่างๆ (ไม่สมบูร)
This commit is contained in:
@@ -1,26 +1,72 @@
|
||||
import { RegisterService } from '../services/registerservice.js';
|
||||
import { sendError } from '../utils/response.js';
|
||||
import { RegisterService } from '../services/registerservice.js'
|
||||
import { sendError } from '../utils/response.js'
|
||||
import { GeneralService } from '../share/generalservice.js';
|
||||
import bcrypt from 'bcrypt'
|
||||
import { Interface } from '../interfaces/Interface.js';
|
||||
import { validateSave } from '../utils/validate.js'; // import เข้ามา
|
||||
|
||||
export class RegisterController {
|
||||
|
||||
constructor() {
|
||||
this.registerService = new RegisterService();
|
||||
this.generalService = new GeneralService();
|
||||
this.registerService = new RegisterService();
|
||||
this.Interface = new Interface();
|
||||
}
|
||||
|
||||
async onNavigate(req, res) {
|
||||
let idx = -1, result = [];
|
||||
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 = []
|
||||
try {
|
||||
const { organization, request } = req.body;
|
||||
const { email, fname, lname, password } = request;
|
||||
result = await this.registerService.requestRegistration(organization, email, fname, lname, password);
|
||||
// 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');
|
||||
|
||||
} catch (error) {
|
||||
idx = 1;
|
||||
this.generalService.devhint(1, 'registercontroller.js', 'Jumpout', error.message);
|
||||
result = error; // จะถูก Global Handler จัด format
|
||||
} finally {
|
||||
if (idx === 1) return result;
|
||||
return result;
|
||||
} 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 นี้
|
||||
}
|
||||
|
||||
// เรียก saveInterface ผ่าน generalService (ระบุชื่อตาราง 'usrmst')
|
||||
return this.Interface.saveInterface('usrmst', arysave, req);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user