Add getUnverifiedUsers functionality to AdminUserController and AdminService, and update routes #2
@ -41,6 +41,19 @@ class AdminUserController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static async getUnverifiedUsers(req, res) {
|
||||||
|
const unitOfWork = new UnitOfWork();
|
||||||
|
await unitOfWork.start();
|
||||||
|
try {
|
||||||
|
const users = await AdminService.getUnverifiedUsers(unitOfWork);
|
||||||
|
await unitOfWork.commit();
|
||||||
|
res.json({ success: true, users });
|
||||||
|
} catch (error) {
|
||||||
|
await unitOfWork.rollback(error);
|
||||||
|
res.status(500).json({ success: false, message: error.message });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static async verifyUser(req, res) {
|
static async verifyUser(req, res) {
|
||||||
const userId = req.params.id;
|
const userId = req.params.id;
|
||||||
const { permissions = [] } = req.body;
|
const { permissions = [] } = req.body;
|
||||||
|
|||||||
@ -86,6 +86,31 @@ class AdminRepository {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static async getUnverifiedUsers(conn) {
|
||||||
|
logger.info('AdminRepository.getUnverifiedUsers:start');
|
||||||
|
try {
|
||||||
|
const [rows] = await conn.query(`
|
||||||
|
SELECT
|
||||||
|
u.id, u.email, u.user_type, u.role, u.created_at, u.last_login_at,
|
||||||
|
us.status, us.is_admin_verified, us.email_verified, us.profile_completed,
|
||||||
|
us.documents_uploaded, us.contract_signed,
|
||||||
|
pp.first_name, pp.last_name,
|
||||||
|
cp.company_name
|
||||||
|
FROM users u
|
||||||
|
LEFT JOIN user_status us ON u.id = us.user_id
|
||||||
|
LEFT JOIN personal_profiles pp ON u.id = pp.user_id
|
||||||
|
LEFT JOIN company_profiles cp ON u.id = cp.user_id
|
||||||
|
WHERE us.is_admin_verified = 0
|
||||||
|
ORDER BY u.created_at DESC
|
||||||
|
`);
|
||||||
|
logger.info('AdminRepository.getUnverifiedUsers:success', { count: rows.length });
|
||||||
|
return rows;
|
||||||
|
} catch (error) {
|
||||||
|
logger.error('AdminRepository.getUnverifiedUsers:error', { error: error.message });
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static async getUserDocuments(conn, userId) {
|
static async getUserDocuments(conn, userId) {
|
||||||
logger.info('AdminRepository.getUserDocuments:start', { userId });
|
logger.info('AdminRepository.getUserDocuments:start', { userId });
|
||||||
try {
|
try {
|
||||||
|
|||||||
@ -54,6 +54,7 @@ router.get('/verify-password-reset', (req, res) => { /* Note: was moved from Pas
|
|||||||
router.get('/admin/user-stats', authMiddleware, requireAdmin, AdminUserController.getUserStats);
|
router.get('/admin/user-stats', authMiddleware, requireAdmin, AdminUserController.getUserStats);
|
||||||
router.get('/admin/user-list', authMiddleware, requireAdmin, AdminUserController.getUserList);
|
router.get('/admin/user-list', authMiddleware, requireAdmin, AdminUserController.getUserList);
|
||||||
router.get('/admin/verification-pending-users', authMiddleware, requireAdmin, AdminUserController.getVerificationPendingUsers);
|
router.get('/admin/verification-pending-users', authMiddleware, requireAdmin, AdminUserController.getVerificationPendingUsers);
|
||||||
|
router.get('/admin/unverified-users', authMiddleware, requireAdmin, AdminUserController.getUnverifiedUsers);
|
||||||
router.get('/admin/user/:id/documents', authMiddleware, requireAdmin, UserDocumentController.getAllDocumentsForUser);
|
router.get('/admin/user/:id/documents', authMiddleware, requireAdmin, UserDocumentController.getAllDocumentsForUser);
|
||||||
router.get('/admin/server-status', authMiddleware, requireAdmin, ServerStatusController.getStatus);
|
router.get('/admin/server-status', authMiddleware, requireAdmin, ServerStatusController.getStatus);
|
||||||
|
|
||||||
|
|||||||
@ -3,8 +3,8 @@ const UnitOfWork = require('../database/UnitOfWork');
|
|||||||
const argon2 = require('argon2');
|
const argon2 = require('argon2');
|
||||||
|
|
||||||
async function createAdminUser() {
|
async function createAdminUser() {
|
||||||
// const adminEmail = process.env.ADMIN_EMAIL || 'office@profit-planet.com';
|
const adminEmail = process.env.ADMIN_EMAIL || 'office@profit-planet.com';
|
||||||
const adminEmail = process.env.ADMIN_EMAIL || 'loki.aahi@gmail.com';
|
// const adminEmail = process.env.ADMIN_EMAIL || 'loki.aahi@gmail.com';
|
||||||
const adminPassword = process.env.ADMIN_PASSWORD || 'W.profit-planet.com.2025'; // Set a secure password in production!
|
const adminPassword = process.env.ADMIN_PASSWORD || 'W.profit-planet.com.2025'; // Set a secure password in production!
|
||||||
const firstName = process.env.ADMIN_FIRST_NAME || 'Admin';
|
const firstName = process.env.ADMIN_FIRST_NAME || 'Admin';
|
||||||
const lastName = process.env.ADMIN_LAST_NAME || 'User';
|
const lastName = process.env.ADMIN_LAST_NAME || 'User';
|
||||||
|
|||||||
@ -46,6 +46,18 @@ class AdminService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static async getUnverifiedUsers(unitOfWork) {
|
||||||
|
logger.info('AdminService.getUnverifiedUsers:start');
|
||||||
|
try {
|
||||||
|
const users = await AdminRepository.getUnverifiedUsers(unitOfWork.connection);
|
||||||
|
logger.info('AdminService.getUnverifiedUsers:success', { count: users.length });
|
||||||
|
return users;
|
||||||
|
} catch (error) {
|
||||||
|
logger.error('AdminService.getUnverifiedUsers:error', { error: error.message });
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static async verifyUser(unitOfWork, userId, permissions) {
|
static async verifyUser(unitOfWork, userId, permissions) {
|
||||||
logger.info('AdminService.verifyUser:start', { userId, permissions });
|
logger.info('AdminService.verifyUser:start', { userId, permissions });
|
||||||
try {
|
try {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user