Skip to content

Commit 52f9407

Browse files
authored
Merge pull request #1072 from rocket-admin/backend_company_custom_domain
Add custom domain support to company info data structures
2 parents f99ed2b + 3c8910c commit 52f9407

File tree

7 files changed

+42
-10
lines changed

7 files changed

+42
-10
lines changed

backend/src/entities/company-info/application/data-structures/found-company-info.ds.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,9 @@ export class FoundUserCompanyInfoDs {
6969

7070
@ApiProperty()
7171
show_test_connections: boolean;
72+
73+
@ApiProperty({ required: false })
74+
custom_domain: string | null;
7275
}
7376

7477
export class FoundUserFullCompanyInfoDs extends FoundUserCompanyInfoDs {

backend/src/entities/company-info/use-cases/get-full-user-company-info.use.case.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ export class GetUserCompanyFullInfoUseCase
6767

6868
let foundUserCompanySaasInfo = null;
6969

70+
let customDomain = null;
7071
if (isSaaS()) {
7172
foundUserCompanySaasInfo = await this.saasCompanyGatewayService.getCompanyInfo(foundFullUserCoreCompanyInfo.id);
7273
if (!foundUserCompanySaasInfo) {
@@ -77,12 +78,18 @@ export class GetUserCompanyFullInfoUseCase
7778
HttpStatus.NOT_FOUND,
7879
);
7980
}
81+
customDomain = await this.saasCompanyGatewayService.getCompanyCustomDomainById(foundCompanyInfoByUserId.id);
8082
}
8183

8284
if (foundUser.role === UserRoleEnum.ADMIN) {
83-
return buildFoundCompanyFullInfoDs(foundFullUserCoreCompanyInfo, foundUserCompanySaasInfo, foundUser.role);
85+
return buildFoundCompanyFullInfoDs(
86+
foundFullUserCoreCompanyInfo,
87+
foundUserCompanySaasInfo,
88+
foundUser.role,
89+
customDomain,
90+
);
8491
}
8592

86-
return buildFoundCompanyInfoDs(foundFullUserCoreCompanyInfo, foundUserCompanySaasInfo);
93+
return buildFoundCompanyInfoDs(foundFullUserCoreCompanyInfo, foundUserCompanySaasInfo, customDomain);
8794
}
8895
}

backend/src/entities/company-info/use-cases/get-user-company.use.case.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ export class GetUserCompanyUseCase extends AbstractUseCase<string, FoundUserComp
3232
}
3333

3434
let foundUserCompanySaasInfo = null;
35+
let customDomain = null;
3536
if (isSaaS()) {
3637
foundUserCompanySaasInfo = await this.saasCompanyGatewayService.getCompanyInfo(foundUserCoreCompanyInfo.id);
3738
if (!foundUserCompanySaasInfo) {
@@ -42,7 +43,8 @@ export class GetUserCompanyUseCase extends AbstractUseCase<string, FoundUserComp
4243
HttpStatus.NOT_FOUND,
4344
);
4445
}
46+
customDomain = await this.saasCompanyGatewayService.getCompanyCustomDomainById(foundUserCoreCompanyInfo.id);
4547
}
46-
return buildFoundCompanyInfoDs(foundUserCoreCompanyInfo, foundUserCompanySaasInfo);
48+
return buildFoundCompanyInfoDs(foundUserCoreCompanyInfo, foundUserCompanySaasInfo, customDomain);
4749
}
4850
}

backend/src/entities/company-info/utils/build-found-company-info-ds.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,19 @@ export function buildFoundCompanyFullInfoDs(
1313
companyInfoFromCore: CompanyInfoEntity,
1414
companyInfoFromSaas: FoundSassCompanyInfoDS | null,
1515
userRole: UserRoleEnum,
16+
companyCustomDomain: string | null,
1617
): FoundUserFullCompanyInfoDs {
1718
if (!companyInfoFromCore.show_test_connections) {
1819
companyInfoFromCore.connections = companyInfoFromCore.connections.filter(
1920
(connection) => !connection.isTestConnection,
2021
);
2122
}
22-
const responseObject = buildFoundCompanyInfoDs(companyInfoFromCore, companyInfoFromSaas, userRole) as any;
23+
const responseObject = buildFoundCompanyInfoDs(
24+
companyInfoFromCore,
25+
companyInfoFromSaas,
26+
companyCustomDomain,
27+
userRole,
28+
) as any;
2329
const connectionsRO: Array<FoundSipleConnectionInfoDS> = companyInfoFromCore.connections.map((connection) => {
2430
return {
2531
id: connection.id,
@@ -57,6 +63,7 @@ export function buildFoundCompanyFullInfoDs(
5763
export function buildFoundCompanyInfoDs(
5864
companyInfoFromCore: CompanyInfoEntity,
5965
companyInfoFromSaas: FoundSassCompanyInfoDS | null,
66+
companyCustomDomain: string,
6067
userRole?: UserRoleEnum,
6168
): FoundUserCompanyInfoDs {
6269
if (!companyInfoFromSaas) {
@@ -65,6 +72,7 @@ export function buildFoundCompanyInfoDs(
6572
name: companyInfoFromCore.name,
6673
is2faEnabled: companyInfoFromCore.is2faEnabled,
6774
show_test_connections: companyInfoFromCore.show_test_connections,
75+
custom_domain: companyCustomDomain ? companyCustomDomain : null,
6876
};
6977
}
7078
const isUserAdmin = userRole === UserRoleEnum.ADMIN;
@@ -77,6 +85,7 @@ export function buildFoundCompanyInfoDs(
7785
is_payment_method_added: isUserAdmin ? companyInfoFromSaas.is_payment_method_added : undefined,
7886
is2faEnabled: isUserAdmin ? companyInfoFromCore.is2faEnabled : undefined,
7987
show_test_connections: companyInfoFromCore.show_test_connections,
88+
custom_domain: companyCustomDomain ? companyCustomDomain : null,
8089
address: {
8190
id: companyInfoFromSaas.address?.id,
8291
city: companyInfoFromSaas.address?.city,

backend/test/ava-tests/non-saas-tests/non-saas-company-info-e2e.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ test.serial(`${currentTest} should return found company info for user`, async (t
8181
const foundCompanyInfoRO = JSON.parse(foundCompanyInfo.text);
8282
t.is(foundCompanyInfoRO.hasOwnProperty('id'), true);
8383
t.is(foundCompanyInfoRO.hasOwnProperty('name'), true);
84-
t.is(Object.keys(foundCompanyInfoRO).length, 4);
84+
t.is(Object.keys(foundCompanyInfoRO).length, 5);
8585
} catch (error) {
8686
console.error(error);
8787
}
@@ -121,7 +121,7 @@ test.serial(`${currentTest} should return full found company info for company ad
121121
t.is(foundCompanyInfo.status, 200);
122122
t.is(foundCompanyInfoRO.hasOwnProperty('id'), true);
123123
t.is(foundCompanyInfoRO.hasOwnProperty('name'), true);
124-
t.is(Object.keys(foundCompanyInfoRO).length, 6);
124+
t.is(Object.keys(foundCompanyInfoRO).length, 7);
125125
t.is(foundCompanyInfoRO.hasOwnProperty('connections'), true);
126126
t.is(foundCompanyInfoRO.connections.length > 3, true);
127127
t.is(foundCompanyInfoRO.hasOwnProperty('invitations'), true);
@@ -175,7 +175,7 @@ test.serial(`${currentTest} should return found company info for non-admin user`
175175
t.is(foundCompanyInfo.status, 200);
176176
t.is(foundCompanyInfoRO.hasOwnProperty('id'), true);
177177
t.is(foundCompanyInfoRO.hasOwnProperty('name'), true);
178-
t.is(Object.keys(foundCompanyInfoRO).length, 4);
178+
t.is(Object.keys(foundCompanyInfoRO).length, 5);
179179
} catch (error) {
180180
console.error(error);
181181
throw error;

backend/test/ava-tests/saas-tests/company-info-e2e.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ test.serial(`${currentTest} should return found company info for user`, async (t
8181

8282
t.is(foundCompanyInfo.status, 200);
8383
const foundCompanyInfoRO = JSON.parse(foundCompanyInfo.text);
84-
t.is(Object.keys(foundCompanyInfoRO).length, 8);
84+
t.is(Object.keys(foundCompanyInfoRO).length, 9);
8585
t.is(foundCompanyInfoRO.hasOwnProperty('id'), true);
8686
t.is(foundCompanyInfoRO.hasOwnProperty('name'), true);
8787
t.is(foundCompanyInfoRO.hasOwnProperty('additional_info'), true);
@@ -122,7 +122,7 @@ test.serial(`${currentTest} should return full found company info for company ad
122122
t.is(foundCompanyInfoRO.hasOwnProperty('address'), true);
123123
t.is(foundCompanyInfoRO.hasOwnProperty('createdAt'), true);
124124
t.is(foundCompanyInfoRO.hasOwnProperty('updatedAt'), true);
125-
t.is(Object.keys(foundCompanyInfoRO).length, 13);
125+
t.is(Object.keys(foundCompanyInfoRO).length, 14);
126126
t.is(foundCompanyInfoRO.hasOwnProperty('connections'), true);
127127
t.is(foundCompanyInfoRO.connections.length > 3, true);
128128
t.is(foundCompanyInfoRO.hasOwnProperty('invitations'), true);
@@ -174,7 +174,7 @@ test.serial(`${currentTest} should return found company info for non-admin user`
174174
const foundCompanyInfoRO = JSON.parse(foundCompanyInfo.text);
175175

176176
t.is(foundCompanyInfo.status, 200);
177-
t.is(Object.keys(foundCompanyInfoRO).length, 8);
177+
t.is(Object.keys(foundCompanyInfoRO).length, 9);
178178
t.is(foundCompanyInfoRO.hasOwnProperty('id'), true);
179179
t.is(foundCompanyInfoRO.hasOwnProperty('name'), true);
180180
t.is(foundCompanyInfoRO.hasOwnProperty('additional_info'), true);

backend/test/ava-tests/saas-tests/custom-domains-e2e.test.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,17 @@ test.serial(`${currentTest} - should return found custom domain`, async (t) => {
200200
t.is(domainInfo.hasOwnProperty('id'), true);
201201
t.is(domainInfo.hasOwnProperty('createdAt'), true);
202202
t.is(Object.keys(domainInfo).length, 5);
203+
204+
const foundCompanyFullInfoResponse = await request(app.getHttpServer())
205+
.get('/company/my/full')
206+
.set('Content-Type', 'application/json')
207+
.set('Cookie', simpleUserToken)
208+
.set('Accept', 'application/json');
209+
210+
t.is(foundCompanyFullInfoResponse.status, 200);
211+
const foundCompanyFullInfoResponseRO = JSON.parse(foundCompanyFullInfoResponse.text);
212+
t.is(foundCompanyFullInfoResponseRO.hasOwnProperty('custom_domain'), true);
213+
t.is(foundCompanyFullInfoResponseRO.custom_domain, requestDomainData.hostname);
203214
} catch (error) {
204215
t.fail(error.message);
205216
}

0 commit comments

Comments
 (0)