diff --git a/.gitignore b/.gitignore index f14cc4d..0fb94d9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ node_modules -package-lock.json \ No newline at end of file +package-lock.json +/exthernal-rentroom-api diff --git a/exthernal-accountingwep-api/.env b/exthernal-accountingwep-api/.env index f4c11cd..c57b980 100644 --- a/exthernal-accountingwep-api/.env +++ b/exthernal-accountingwep-api/.env @@ -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 diff --git a/exthernal-login-api/src/controllers/registercontroller.js b/exthernal-login-api/src/controllers/registercontroller.js index 28f1c83..ca8e140 100644 --- a/exthernal-login-api/src/controllers/registercontroller.js +++ b/exthernal-login-api/src/controllers/registercontroller.js @@ -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) diff --git a/exthernal-login-api/src/services/registerservice.js b/exthernal-login-api/src/services/registerservice.js index db27d5a..184c4c7 100644 --- a/exthernal-login-api/src/services/registerservice.js +++ b/exthernal-login-api/src/services/registerservice.js @@ -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 = `