feat: add storage status check for user documents in getDetailedUserInfo function
This commit is contained in:
parent
5638b98cb8
commit
e2a6b215d5
@ -2,7 +2,7 @@ const AdminRepository = require('../../repositories/admin/AdminRepository');
|
||||
const UserDocumentRepository = require('../../repositories/documents/UserDocumentRepository');
|
||||
const UserRepository = require('../../repositories/user/UserRepository');
|
||||
const { s3 } = require('../../utils/exoscaleUploader');
|
||||
const { GetObjectCommand } = require('@aws-sdk/client-s3');
|
||||
const { GetObjectCommand, ListObjectsV2Command } = require('@aws-sdk/client-s3');
|
||||
const { getSignedUrl } = require('@aws-sdk/s3-request-presigner');
|
||||
const { DeleteObjectCommand } = require('@aws-sdk/client-s3');
|
||||
const pidusage = require('pidusage');
|
||||
@ -197,6 +197,34 @@ class AdminService {
|
||||
})
|
||||
);
|
||||
|
||||
const hasObjects = async (prefix) => {
|
||||
try {
|
||||
const res = await s3.send(new ListObjectsV2Command({
|
||||
Bucket: process.env.EXOSCALE_BUCKET,
|
||||
Prefix: prefix,
|
||||
MaxKeys: 1
|
||||
}));
|
||||
return !!(res && res.Contents && res.Contents.length);
|
||||
} catch (e) {
|
||||
logger.warn('AdminService.getDetailedUserInfo:storage_check_failed', { userId, prefix, error: e && e.message });
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
const userType = (user.user_type || '').toString().toLowerCase();
|
||||
const idPrefix = userType === 'company' ? `company-id/${userId}/` : `personal-id/${userId}/`;
|
||||
const contractBase = `contracts/${userType === 'company' ? 'company' : 'personal'}/${userId}/`;
|
||||
const [idDocumentsPresent, contractPresent, gdprPresent] = await Promise.all([
|
||||
hasObjects(idPrefix),
|
||||
hasObjects(`${contractBase}contract/`),
|
||||
hasObjects(`${contractBase}gdpr/`)
|
||||
]);
|
||||
|
||||
const storageStatus = {
|
||||
idDocumentsPresent,
|
||||
contractPresent: contractPresent || gdprPresent
|
||||
};
|
||||
|
||||
logger.info('AdminService.getDetailedUserInfo:success', { userId });
|
||||
return {
|
||||
user,
|
||||
@ -206,7 +234,8 @@ class AdminService {
|
||||
userStatus,
|
||||
documents,
|
||||
contracts,
|
||||
idDocuments: idDocumentsWithUrls
|
||||
idDocuments: idDocumentsWithUrls,
|
||||
storageStatus
|
||||
};
|
||||
} catch (error) {
|
||||
logger.error('AdminService.getDetailedUserInfo:error', { userId, error: error.message });
|
||||
|
||||
Loading…
Reference in New Issue
Block a user