update: auth login with username or email
This commit is contained in:
@@ -70,13 +70,13 @@ class AuthController {
|
||||
const { error, value } = loginSchema.validate(req.body, { abortEarly: false });
|
||||
if (error) return res.status(400).json(setResponse([], 'Validation failed', 400));
|
||||
|
||||
const { email, password, captcha, captchaText } = value;
|
||||
const { identifier, password, captcha, captchaText } = value;
|
||||
|
||||
if (!captcha || captcha.toLowerCase() !== captchaText.toLowerCase()) {
|
||||
return res.status(400).json(setResponse([], 'Invalid captcha', 400));
|
||||
}
|
||||
|
||||
const { user, tokens } = await AuthService.login({ email, password });
|
||||
const { user, tokens } = await AuthService.login({ identifier, password });
|
||||
|
||||
// Set refresh token di cookie
|
||||
res.cookie('refreshToken', tokens.refreshToken, {
|
||||
|
||||
@@ -27,7 +27,7 @@ const registerSchema = Joi.object({
|
||||
})
|
||||
});
|
||||
const loginSchema = Joi.object({
|
||||
email: Joi.string().email().required(),
|
||||
identifier: Joi.string().required(),
|
||||
password: Joi.string().required(),
|
||||
captcha: Joi.string().required(),
|
||||
captchaText: Joi.string().required()
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
const {
|
||||
getUserByUserEmailDb,
|
||||
createUserDb
|
||||
createUserDb,
|
||||
getUserByUsernameDb
|
||||
} = require('../db/user.db');
|
||||
const { hashPassword, comparePassword } = require('../helpers/hashPassword');
|
||||
const { ErrorHandler } = require('../helpers/error');
|
||||
@@ -46,10 +47,17 @@ class AuthService {
|
||||
}
|
||||
|
||||
// Login
|
||||
static async login({ email, password }) {
|
||||
const user = await getUserByUserEmailDb(email);
|
||||
static async login({ identifier, password }) {
|
||||
let user;
|
||||
|
||||
if (identifier.includes('@')) {
|
||||
user = await getUserByUserEmailDb(identifier);
|
||||
} else {
|
||||
user = await getUserByUsernameDb(identifier);
|
||||
}
|
||||
|
||||
if (!user) {
|
||||
throw new ErrorHandler(401, 'Invalid credentials');
|
||||
throw new ErrorHandler(401, 'Invalid credentials')
|
||||
}
|
||||
|
||||
const passwordMatch = await comparePassword(password, user.user_password);
|
||||
|
||||
Reference in New Issue
Block a user