เช็ค User ซ้ำ
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,3 +1,4 @@
|
||||
node_modules
|
||||
|
||||
package-lock.json
|
||||
package-lock.json
|
||||
/exthernal-rentroom-api
|
||||
|
||||
@@ -13,7 +13,7 @@ SMTP_USER=lalisakuty@gmail.com
|
||||
SMTP_PASS=lurl pckw qugk tzob
|
||||
|
||||
# REDIS
|
||||
REDIS_HOST=10.9.0.0x
|
||||
REDIS_HOST=10.9.0.0
|
||||
REDIS_PORT=6379
|
||||
OTP_TTL_SECONDS=300
|
||||
|
||||
|
||||
@@ -23,18 +23,20 @@ export class RegisterController {
|
||||
async onRegisterController(req, res, database) {
|
||||
let idx = -1
|
||||
let result = []
|
||||
let aryUserDuplicate = [];
|
||||
try {
|
||||
// 1. ดึง Sequence ล่าสุดจาก Service (เพื่อเอามา +1)
|
||||
const Seq = await this.registerService.genNum(database);
|
||||
var 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);
|
||||
var hashedPassword = await bcrypt.hash(passwordRaw, saltRounds);
|
||||
|
||||
// 3. เรียก makeArySave เพื่อเตรียมข้อมูลและบันทึกผ่าน saveInterface
|
||||
// ส่ง nextSeq และ hashedPassword เข้าไป
|
||||
result = await this.makeArySave(req, Seq, hashedPassword);
|
||||
aryUserDuplicate = await this.registerService.checkUserDuplicate(database, req.body.request.email);
|
||||
|
||||
|
||||
this.generalService.devhint(1, 'registercontroller.js', 'Register success');
|
||||
|
||||
@@ -42,6 +44,8 @@ export class RegisterController {
|
||||
idx = 1;
|
||||
} finally {
|
||||
if (idx === 1) return sendError('เกิดข้อผิดพลาดไม่คาดคิดเกิดขึ้น', 'Unexpected error');
|
||||
if (aryUserDuplicate.length > 0) return sendError('มีชื่อผู้ใช้หรืออีเมลนี้ในระบบแล้ว', 'Username or Email already exists');
|
||||
result = await this.makeArySave(req, Seq, hashedPassword);
|
||||
if (!result) return sendError('ไม่สามารถลงทะเบียนได้', 'Registration failed');
|
||||
return result
|
||||
}
|
||||
@@ -51,10 +55,10 @@ export class RegisterController {
|
||||
// Map ข้อมูลเข้า Field ตามตาราง usrmst
|
||||
let arysave = {
|
||||
methods: 'post', // สั่งให้ saveInterface ทำการ INSERT
|
||||
usrseq: seq + 1, // PK: integer
|
||||
usrseq: seq, // PK: integer
|
||||
usrnam: validateSave(req.body.request.username, 'username'),
|
||||
usrpwd: hashedPassword, // character varying(255)
|
||||
usreml: validateSave(req.body.request.email, 'Email'), // character varying(50)
|
||||
usreml: req.body.request.email, // character varying(50)
|
||||
usrthinam: validateSave(req.body.request.firstname, 'firstname'), // character varying(100)
|
||||
usrthilstnam: validateSave(req.body.request.lastname, 'lastname'), // character varying(100)
|
||||
|
||||
|
||||
@@ -40,6 +40,15 @@ export class RegisterService {
|
||||
}
|
||||
}
|
||||
|
||||
async checkUserDuplicate(database, email) {
|
||||
const sql = `
|
||||
SELECT * FROM nuttakit.usrmst
|
||||
WHERE usreml = $1
|
||||
`
|
||||
const params = [email]
|
||||
const aryResult = await this.generalService.executeQueryParam(database, sql, params);
|
||||
return aryResult;
|
||||
}
|
||||
|
||||
async genNum(database) {
|
||||
const sql = `
|
||||
|
||||
Reference in New Issue
Block a user