From 70a8a8522b40e12280483febe9458b25b98bcd7d Mon Sep 17 00:00:00 2001 From: sumanvpacewisdom Date: Thu, 11 Sep 2025 10:01:17 +0530 Subject: [PATCH 1/2] Add : get tenant domain to mentoring --- src/constants/common.js | 1 + src/controllers/v1/tenant.js | 26 ++++++++++++++++++ src/services/tenant.js | 51 ++++++++++++++++++++++++++++++++++++ 3 files changed, 78 insertions(+) diff --git a/src/constants/common.js b/src/constants/common.js index 54bc26da..39b4ab00 100644 --- a/src/constants/common.js +++ b/src/constants/common.js @@ -31,6 +31,7 @@ module.exports = { '/user/v1/account/validatingEmailIds', '/user/v1/tenant/list', '/user/v1/tenant/read/', + '/user/v1/tenant/domain/', '/v1/cloud-services/file/getDownloadableUrl', ], notificationEmailType: 'email', diff --git a/src/controllers/v1/tenant.js b/src/controllers/v1/tenant.js index 2b8026a2..b63e542c 100644 --- a/src/controllers/v1/tenant.js +++ b/src/controllers/v1/tenant.js @@ -156,4 +156,30 @@ module.exports = class Tenant { return error } } + + /** + * Get primary domain for tenant + * @method GET + * @name domain + * @param {Object} req -request data. + * @returns {JSON} - tenant domain information + */ + + async domain(req) { + try { + const tenantCode = req.params.id + if (!tenantCode) { + return responses.failureResponse({ + statusCode: httpStatusCode.bad_request, + message: 'TENANT_CODE_REQUIRED', + result: {}, + }) + } + + const domain = await tenantService.getDomain(tenantCode) + return domain + } catch (error) { + return error + } + } } diff --git a/src/services/tenant.js b/src/services/tenant.js index 6562394a..b4c06453 100644 --- a/src/services/tenant.js +++ b/src/services/tenant.js @@ -784,4 +784,55 @@ module.exports = class tenantHelper { throw error // Re-throw other errors } } + + /** + * Get primary domain for tenant + * @method + * @name getDomain + * @param {string} tenantCode - code of the tenant + * @returns {JSON} - tenant domain information + */ + static async getDomain(tenantCode) { + try { + // Validate tenant exists + const tenantDetails = await tenantQueries.findOne({ + code: tenantCode, + }) + + if (!tenantDetails) { + return responses.failureResponse({ + statusCode: httpStatusCode.not_found, + message: 'TENANT_NOT_FOUND', + responseCode: 'CLIENT_ERROR', + }) + } + + // Get the first domain (primary domain) for the tenant + const domain = await tenantDomainQueries.findOne({ + tenant_code: tenantCode, + verified: true, + }) + + if (!domain) { + return responses.failureResponse({ + statusCode: httpStatusCode.not_found, + message: 'TENANT_DOMAIN_NOT_FOUND', + responseCode: 'CLIENT_ERROR', + }) + } + + return responses.successResponse({ + statusCode: httpStatusCode.ok, + message: 'TENANT_DOMAIN_FETCHED', + result: { + domain: domain.domain, + tenant_code: tenantCode, + verified: domain.verified, + }, + }) + } catch (error) { + console.log(error) + throw error + } + } } From 6f1217855fd87128e93f7babdeaf7876cd2b26f2 Mon Sep 17 00:00:00 2001 From: sumanvpacewisdom Date: Wed, 24 Sep 2025 17:31:21 +0530 Subject: [PATCH 2/2] Passing tenant & OrgCode- internal api requestBody --- src/controllers/v1/admin.js | 2 +- src/controllers/v1/organization.js | 6 ++++-- src/helpers/userInvite.js | 4 ++++ src/services/admin.js | 7 +++++-- src/services/org-admin.js | 2 ++ src/services/organization.js | 6 ++++-- src/services/userInvite.js | 3 +++ 7 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/controllers/v1/admin.js b/src/controllers/v1/admin.js index b18b4c3f..ba3a4766 100644 --- a/src/controllers/v1/admin.js +++ b/src/controllers/v1/admin.js @@ -188,7 +188,7 @@ module.exports = class Admin { }) } - const result = await adminService.deactivateUser(req.body, req.decodedToken.id) + const result = await adminService.deactivateUser(req.body, req.decodedToken.id, req.decodedToken.tenant_code, req.decodedToken.organization_code) return result } catch (error) { diff --git a/src/controllers/v1/organization.js b/src/controllers/v1/organization.js index e56eb6ea..efdbe942 100644 --- a/src/controllers/v1/organization.js +++ b/src/controllers/v1/organization.js @@ -188,7 +188,8 @@ module.exports = class Organization { try { const result = await orgService.addRelatedOrg( req.params.id ? req.params.id : '', - req.body.related_orgs ? req.body.related_orgs : [] + req.body.related_orgs ? req.body.related_orgs : [], + req?.decodedToken?.tenant_code ) return result } catch (error) { @@ -199,7 +200,8 @@ module.exports = class Organization { try { const result = await orgService.removeRelatedOrg( req.params.id ? req.params.id : '', - req.body.related_orgs ? req.body.related_orgs : [] + req.body.related_orgs ? req.body.related_orgs : [], + req?.decodedToken?.tenant_code ) return result } catch (error) { diff --git a/src/helpers/userInvite.js b/src/helpers/userInvite.js index b229b2aa..5ead5c13 100644 --- a/src/helpers/userInvite.js +++ b/src/helpers/userInvite.js @@ -33,6 +33,7 @@ const notificationUtils = require('@utils/notification') const tenantDomainQueries = require('@database/queries/tenantDomain') const tenantQueries = require('@database/queries/tenants') const userSessionsService = require('@services/user-sessions') +const { organization } = require('@constants/blacklistConfig') let defaultOrg = {} let modelName = '' let externalEntityNameIdMap = {} @@ -932,6 +933,7 @@ module.exports = class UserInviteHelper { user_id: existingUser.id, organization_id: user.organization_id, roles: currentRoles, + organization_code: user.organization_code, }, }) } @@ -942,6 +944,8 @@ module.exports = class UserInviteHelper { user_id: existingUser.id, new_roles: newRoles, current_roles: currentRoles, + tenant_code: user.tenant_code, + organization_code: user.organization_code } if (isOrgUpdate) requestBody.organization_id = user.organization_id eventBroadcaster('roleChange', { diff --git a/src/services/admin.js b/src/services/admin.js index 21a44139..411239b8 100644 --- a/src/services/admin.js +++ b/src/services/admin.js @@ -607,6 +607,7 @@ module.exports = class AdminHelper { user_id: user.id, organization_id: organizationId, roles: roleData.map((r) => r.title), + organization_code: organization.code, }, }) ) @@ -694,7 +695,7 @@ module.exports = class AdminHelper { // Broadcast to end upcoming sessions eventBroadcaster('deactivateUpcomingSession', { - requestBody: { user_ids: userIds }, + requestBody: { user_ids: userIds , tenant_code: tenantCode, organization_code: organizationCode}, }) } @@ -720,7 +721,7 @@ module.exports = class AdminHelper { * @param {Object} loggedInUserId - logged in user id * @returns {JSON} - Deactivated user data */ - static async deactivateUser(bodyData, loggedInUserId) { + static async deactivateUser(bodyData, loggedInUserId, tenantCode, orgCode) { try { let filterQuery = {} for (let item in bodyData) { @@ -763,6 +764,8 @@ module.exports = class AdminHelper { eventBroadcaster('deactivateUpcomingSession', { requestBody: { user_ids: userIds, + tenant_code: tenantCode, + organization_code: orgCode }, }) diff --git a/src/services/org-admin.js b/src/services/org-admin.js index 24f862f7..ce32efcb 100644 --- a/src/services/org-admin.js +++ b/src/services/org-admin.js @@ -495,6 +495,8 @@ module.exports = class OrgAdminHelper { eventBroadcaster('deactivateUpcomingSession', { requestBody: { user_ids: allUserIds, + tenant_code: tokenInformation.tenant_code, + organization_code: tokenInformation.organization_code }, }) diff --git a/src/services/organization.js b/src/services/organization.js index ddc68b89..d9a4993a 100644 --- a/src/services/organization.js +++ b/src/services/organization.js @@ -512,7 +512,7 @@ module.exports = class OrganizationsHelper { } } - static async addRelatedOrg(id, relatedOrgs = []) { + static async addRelatedOrg(id, relatedOrgs = [], tenantCode) { try { // fetch organization details before update const orgDetailsBeforeUpdate = await organizationQueries.findOne({ id }) @@ -553,6 +553,7 @@ module.exports = class OrganizationsHelper { delta_organization_ids: deltaOrgs, organization_id: id, action: 'PUSH', + tenant_code: tenantCode }, }) } @@ -565,7 +566,7 @@ module.exports = class OrganizationsHelper { throw error } } - static async removeRelatedOrg(id, relatedOrgs = []) { + static async removeRelatedOrg(id, relatedOrgs = [], tenantCode) { try { // fetch organization details before update const orgDetailsBeforeUpdate = await organizationQueries.findOne({ id }) @@ -625,6 +626,7 @@ module.exports = class OrganizationsHelper { delta_organization_ids: relatedOrgs, organization_id: id, action: 'POP', + tenant_code:tenantCode }, }) } diff --git a/src/services/userInvite.js b/src/services/userInvite.js index b79f212c..f51da39f 100644 --- a/src/services/userInvite.js +++ b/src/services/userInvite.js @@ -370,6 +370,7 @@ module.exports = class UserInviteHelper { user_id: existingUser.id, organization_id: user.organization_id, roles: currentRoles, + organization_code: user.organization_code }, }) } @@ -380,6 +381,8 @@ module.exports = class UserInviteHelper { user_id: existingUser.id, new_roles: newRoles, current_roles: currentRoles, + tenant_code: user.tenant_code, + organization_code: user.organization_code } if (isOrgUpdate) requestBody.organization_id = user.organization_id eventBroadcaster('roleChange', {