-web-service
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
import Redis from 'ioredis';
|
||||
import bcrypt from 'bcrypt';
|
||||
import { sendError } from '../utils/response.js';
|
||||
import { GeneralService } from '../share/generalservice.js';
|
||||
|
||||
export class ResetPasswordService {
|
||||
constructor() {
|
||||
this.redis = new Redis();
|
||||
this.generalService = new GeneralService();
|
||||
}
|
||||
|
||||
async resetPassword(email, token, newPassword) {
|
||||
let database = '';
|
||||
|
||||
const storedToken = await this.redis.get(`reset:${email}`);
|
||||
if (!storedToken || storedToken !== token) {
|
||||
throw sendError('Token ไม่ถูกต้องหรือหมดอายุ', 'Invalid or expired token');
|
||||
}
|
||||
|
||||
await this.redis.del(`reset:${email}`);
|
||||
|
||||
// อัปเดตรหัสผ่านในฐานข้อมูลจริง
|
||||
const hashedPwd = await bcrypt.hash(newPassword, 10);
|
||||
let sql = `
|
||||
UPDATE usrmst SET usrpwd = $1 WHERE usrnam = $2
|
||||
`
|
||||
let param = [hashedPwd, email];
|
||||
await this.generalService.executeQueryParam(database, sql, param);
|
||||
|
||||
this.generalService.devhint(1, 'resetpasswordservice.js', `Password reset successful (${email})`);
|
||||
|
||||
return {
|
||||
code: '200',
|
||||
message: 'successful',
|
||||
message_th: 'รีเซ็ตรหัสผ่านสำเร็จ'
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user