feat : admin feature
This commit is contained in:
62
src/controllers/admin_auth.controller.js
Normal file
62
src/controllers/admin_auth.controller.js
Normal file
@@ -0,0 +1,62 @@
|
||||
const adminAuthService = require('../services/admin.auth.service');
|
||||
const { generateToken } = require('../util/jwt');
|
||||
const { logger } = require('../util/logger');
|
||||
const db = require('../config/db');
|
||||
// const authenticate = require('../middlewares/auth.middleware');
|
||||
|
||||
async function login(req, res) {
|
||||
const { userName, password } = req.body;
|
||||
|
||||
if (!userName || !password) {
|
||||
return res
|
||||
.status(400)
|
||||
.json({ error: 'UserName and Password are required' });
|
||||
}
|
||||
const currentTime = new Date().toISOString();
|
||||
try {
|
||||
const admin = await adminAuthService.validateAdmin(userName, password);
|
||||
if (!admin) return res.status(401).json({ error: 'invalid credentials' });
|
||||
|
||||
const token = generateToken(admin.username, 'admin', '1d');
|
||||
await db.query('UPDATE admin SET last_login = $1 WHERE username = $2', [
|
||||
currentTime,
|
||||
userName,
|
||||
]);
|
||||
res.json({ token });
|
||||
} catch (err) {
|
||||
logger.error(err, 'login failed');
|
||||
res.status(500).json({ error: 'something went wrong' });
|
||||
}
|
||||
}
|
||||
|
||||
async function fetchAdminDetails(req, res) {
|
||||
const customerNo = req.admin;
|
||||
try {
|
||||
const admin = await adminAuthService.findAdminByUserName(customerNo);
|
||||
if (!admin) return res.status(404).json({ message: 'ADMIN_USER_NOT_FOUND' });
|
||||
return res.json(admin);
|
||||
|
||||
} catch (err) {
|
||||
logger.error(err, 'error occurred while fetching admin details');
|
||||
res.status(500).json({ error: 'something went wrong' });
|
||||
}
|
||||
}
|
||||
|
||||
async function getUserDetails(req, res) {
|
||||
const { CIF } = req.query;
|
||||
if (!CIF) {
|
||||
res.status(400).json({
|
||||
error: 'CIF number is required',
|
||||
});
|
||||
}
|
||||
try {
|
||||
const userDetails = await adminAuthService.getCustomerDetails(CIF);
|
||||
if (!userDetails)
|
||||
return res.status(401).json({ error: 'invalid CIF number' });
|
||||
return res.json(userDetails);
|
||||
} catch (error) {
|
||||
logger.error('while fetching customer details', error);
|
||||
res.status(500).json({ error: 'invalid CIF number'});
|
||||
}
|
||||
}
|
||||
module.exports = { login, fetchAdminDetails, getUserDetails };
|
Reference in New Issue
Block a user