Add skeleton
This commit is contained in:
77
services/auth.service.js
Normal file
77
services/auth.service.js
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
const bcrypt = require("bcrypt");
|
||||||
|
const jwt = require("jsonwebtoken");
|
||||||
|
const validateUser = require("../helpers/validateUser");
|
||||||
|
const { ErrorHandler } = require("../helpers/error");
|
||||||
|
const {
|
||||||
|
getUserByUsernameDb
|
||||||
|
} = require("../db/user.db");
|
||||||
|
const { logger } = require("../utils/logger");
|
||||||
|
|
||||||
|
class AuthService {
|
||||||
|
|
||||||
|
async login(username, password, tenantId) {
|
||||||
|
try {
|
||||||
|
// if (!validateUser(username, password)) {
|
||||||
|
// throw new ErrorHandler(403, "Invalid login");
|
||||||
|
// }
|
||||||
|
|
||||||
|
const user = await getUserByUsernameDb(username, tenantId);
|
||||||
|
console.log(user);
|
||||||
|
|
||||||
|
if (!user) {
|
||||||
|
throw new ErrorHandler(403, "Username not found.");
|
||||||
|
}
|
||||||
|
|
||||||
|
const isCorrectPassword = password === user.password
|
||||||
|
if (!isCorrectPassword) {
|
||||||
|
throw new ErrorHandler(403, "Username or password incorrect.");
|
||||||
|
}
|
||||||
|
|
||||||
|
const dataToken = {
|
||||||
|
tenant_id: tenantId,
|
||||||
|
user_id: user.user_id,
|
||||||
|
username,
|
||||||
|
fullname: user.full_name,
|
||||||
|
role_id: user.role_id
|
||||||
|
}
|
||||||
|
|
||||||
|
const token = await this.signToken(dataToken);
|
||||||
|
const refreshToken = await this.signRefreshToken(dataToken);
|
||||||
|
|
||||||
|
return {
|
||||||
|
token,
|
||||||
|
refreshToken,
|
||||||
|
role_id: dataToken.role_id,
|
||||||
|
tenant_id: tenantId,
|
||||||
|
user: {
|
||||||
|
user_id: dataToken.user_id,
|
||||||
|
fullname: dataToken.fullname,
|
||||||
|
username: dataToken.username,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
} catch (error) {
|
||||||
|
throw new ErrorHandler(error.statusCode, error.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async signToken(data) {
|
||||||
|
try {
|
||||||
|
// console.log("signToken process.env.SECRET", process.env.SECRET)
|
||||||
|
return jwt.sign(data, process.env.SECRET, { expiresIn: "23h" });
|
||||||
|
} catch (error) {
|
||||||
|
logger.error(error);
|
||||||
|
throw new ErrorHandler(500, "An error occurred");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async signRefreshToken(data) {
|
||||||
|
try {
|
||||||
|
return jwt.sign(data, process.env.REFRESH_SECRET, { expiresIn: "23h" });
|
||||||
|
} catch (error) {
|
||||||
|
logger.error(error);
|
||||||
|
throw new ErrorHandler(500, error.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = new AuthService();
|
||||||
124
services/user.service.js
Normal file
124
services/user.service.js
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
const {
|
||||||
|
createUserDb,
|
||||||
|
changeUserPasswordDb,
|
||||||
|
getUserByIdDb,
|
||||||
|
updateUserDb,
|
||||||
|
deleteUserDb,
|
||||||
|
getAllUsersDb,
|
||||||
|
getUserByUsernameDb,
|
||||||
|
getAllRoleDb
|
||||||
|
} = require("../db/user.db");
|
||||||
|
const { ErrorHandler } = require("../helpers/error");
|
||||||
|
const { convertId } = require("../helpers/utils");
|
||||||
|
|
||||||
|
const statusName = [
|
||||||
|
{
|
||||||
|
status: true,
|
||||||
|
status_name: "Aktif"
|
||||||
|
}, {
|
||||||
|
status: false,
|
||||||
|
status_name: "NonAktif"
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
class UserService {
|
||||||
|
|
||||||
|
getAllStatusUsers = async () => {
|
||||||
|
try {
|
||||||
|
return statusName;
|
||||||
|
} catch (error) {
|
||||||
|
throw new ErrorHandler(error.statusCode, error.message);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
getAllUsers = async (param) => {
|
||||||
|
try {
|
||||||
|
const results = await getAllUsersDb(param);
|
||||||
|
|
||||||
|
results.data.map(element => {
|
||||||
|
element.is_active = element.is_active == 1 ? true : false
|
||||||
|
element.is_active_name = convertId(statusName, element.is_active, 'status', 'status_name')
|
||||||
|
});
|
||||||
|
|
||||||
|
return results
|
||||||
|
} catch (error) {
|
||||||
|
throw new ErrorHandler(error.statusCode, error.message);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
createUser = async (param) => {
|
||||||
|
try {
|
||||||
|
const userByUsername = await getUserByUsernameDb(param.userName, param.tenantID);
|
||||||
|
|
||||||
|
if (userByUsername) {
|
||||||
|
throw new ErrorHandler(401, "username taken already");
|
||||||
|
}
|
||||||
|
|
||||||
|
return await createUserDb(param);
|
||||||
|
} catch (error) {
|
||||||
|
throw new ErrorHandler(error.statusCode, error.message);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
getUserById = async (id) => {
|
||||||
|
try {
|
||||||
|
const user = await getUserByIdDb(id);
|
||||||
|
// user.password = undefined;
|
||||||
|
user.is_active = user.is_active == 1 ? true : false
|
||||||
|
return user;
|
||||||
|
} catch (error) {
|
||||||
|
throw new ErrorHandler(error.statusCode, error.message);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
changeUserPassword = async (password, email, tenantID) => {
|
||||||
|
try {
|
||||||
|
return await changeUserPasswordDb(password, email, tenantID);
|
||||||
|
} catch (error) {
|
||||||
|
throw new ErrorHandler(error.statusCode, error.message);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
updateUser = async (param) => {
|
||||||
|
const { userName, id } = param;
|
||||||
|
const errors = {};
|
||||||
|
try {
|
||||||
|
|
||||||
|
const user = await getUserByIdDb(id);
|
||||||
|
|
||||||
|
const findUserByUsername = await getUserByUsernameDb(userName, param.tenantID);
|
||||||
|
|
||||||
|
const usernameChanged = userName && user.user_name.toLowerCase() !== userName.toLowerCase();
|
||||||
|
|
||||||
|
if (usernameChanged && typeof findUserByUsername === "object") {
|
||||||
|
errors["username"] = "Username is already taken";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Object.keys(errors).length > 0) {
|
||||||
|
throw new ErrorHandler(403, errors);
|
||||||
|
}
|
||||||
|
|
||||||
|
return await updateUserDb(param);
|
||||||
|
} catch (error) {
|
||||||
|
throw new ErrorHandler(error.statusCode, error.message);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
deleteUser = async (id, userID) => {
|
||||||
|
try {
|
||||||
|
return await deleteUserDb(id, userID);
|
||||||
|
} catch (error) {
|
||||||
|
throw new ErrorHandler(error.statusCode, error.message);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
getAllRoles = async (tenantID) => {
|
||||||
|
try {
|
||||||
|
return await getAllRoleDb(tenantID);
|
||||||
|
} catch (error) {
|
||||||
|
throw new ErrorHandler(error.statusCode, error.message);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = new UserService();
|
||||||
Reference in New Issue
Block a user