Skip to content

Commit 5cb9ed0

Browse files
authored
Merge pull request #1858 from rocket-admin/backend_company_id_in_jwt
feat(auth): include companyId in JWT payload and update related interfaces and tests
2 parents 5f55ed3 + 038cfa8 commit 5cb9ed0

16 files changed

Lines changed: 180 additions & 7 deletions

backend/src/authorization/auth-with-api.middleware.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ export class AuthWithApiMiddleware implements NestMiddleware {
9191
const payload = {
9292
sub: userId,
9393
email: data.email,
94+
companyId: data.companyId ?? null,
9495
exp: data.exp,
9596
iat: data.iat,
9697
};

backend/src/authorization/auth.middleware.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ export class AuthMiddleware implements NestMiddleware {
7979
const payload = {
8080
sub: userId,
8181
email: data.email,
82+
companyId: data.companyId ?? null,
8283
exp: data.exp,
8384
iat: data.iat,
8485
};

backend/src/authorization/cognito-decoded.interface.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ export interface ICognitoDecodedData {
1313
exp: number;
1414
iat: number;
1515
email: string;
16+
/** Id of the user's company; null for tokens issued before the claim was added. */
17+
companyId: string | null;
1618
}
1719

1820
/**

backend/src/authorization/non-scoped-auth.middleware.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ export class NonScopedAuthMiddleware implements NestMiddleware {
5858
const payload = {
5959
sub: userId,
6060
email: data.email,
61+
companyId: data.companyId ?? null,
6162
exp: data.exp,
6263
iat: data.iat,
6364
};

backend/src/authorization/public-or-auth.middleware.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ export class PublicOrAuthMiddleware implements NestMiddleware {
9696
const payload = {
9797
sub: userId,
9898
email: data.email,
99+
companyId: data.companyId ?? null,
99100
exp: data.exp,
100101
iat: data.iat,
101102
};

backend/src/entities/company-info/use-cases/verify-invite-user-in-company.use.case.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ export class VerifyInviteUserInCompanyAndConnectionGroupUseCase
6565
foundUser.isActive = true;
6666
foundUser.role = role;
6767
await this._dbContext.userRepository.saveUserEntity(foundUser);
68-
return generateGwtToken(foundUser, get2FaScope(foundUser, foundInvitation.company));
68+
return generateGwtToken(foundUser, get2FaScope(foundUser, foundInvitation.company), foundInvitation.company?.id);
6969
}
7070
const newUser = await this._dbContext.userRepository.saveRegisteringUser({
7171
email: invitedUserEmail,
@@ -97,6 +97,6 @@ export class VerifyInviteUserInCompanyAndConnectionGroupUseCase
9797
}
9898
await this._dbContext.invitationInCompanyRepository.remove(foundInvitation);
9999
await this.saasCompanyGatewayService.recountUsersInCompanyRequest(companyId);
100-
return generateGwtToken(newUser, get2FaScope(newUser, foundInvitation.company));
100+
return generateGwtToken(newUser, get2FaScope(newUser, foundInvitation.company), foundInvitation.company?.id);
101101
}
102102
}

backend/src/entities/user/use-cases/change-usual-password-use.case.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,6 @@ export class ChangeUsualPasswordUseCase
3636
user.password = await Encryptor.hashUserPassword(userData.newPassword);
3737
const updatedUser = await this._dbContext.userRepository.saveUserEntity(user);
3838
const foundUserCompany = await this._dbContext.companyInfoRepository.findCompanyInfoByUserId(updatedUser.id);
39-
return generateGwtToken(updatedUser, get2FaScope(updatedUser, foundUserCompany));
39+
return generateGwtToken(updatedUser, get2FaScope(updatedUser, foundUserCompany), foundUserCompany?.id);
4040
}
4141
}

backend/src/entities/user/use-cases/otp-login-use.case.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ export class OtpLoginUseCase extends AbstractUseCase<VerifyOtpDS, IToken> implem
5252
await this.recordSignInAudit(foundUser.email, userId, SignInStatusEnum.SUCCESS, ipAddress, userAgent);
5353

5454
const foundUserCompany = await this._dbContext.companyInfoRepository.findCompanyInfoByUserId(foundUser.id);
55-
return generateGwtToken(foundUser, get2FaScope(foundUser, foundUserCompany));
55+
return generateGwtToken(foundUser, get2FaScope(foundUser, foundUserCompany), foundUserCompany?.id);
5656
}
5757

5858
private async recordSignInAudit(

backend/src/entities/user/use-cases/usual-login-use.case.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ export class UsualLoginUseCase extends AbstractUseCase<UsualLoginDs, IToken> imp
122122
await this.recordSignInAudit(email, user.id, SignInStatusEnum.SUCCESS, ipAddress, userAgent);
123123

124124
const foundUserCompany = await this._dbContext.companyInfoRepository.findCompanyInfoByUserId(user.id);
125-
return generateGwtToken(user, get2FaScope(user, foundUserCompany));
125+
return generateGwtToken(user, get2FaScope(user, foundUserCompany), foundUserCompany?.id);
126126
}
127127

128128
private async recordSignInAudit(

backend/src/entities/user/use-cases/verify-reset-user-password.use.case.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ export class VerifyResetUserPasswordUseCase
5353
return {
5454
id: foundUser.id,
5555
email: foundUser.email,
56-
token: generateGwtToken(foundUser, get2FaScope(foundUser, foundUserCompany)),
56+
token: generateGwtToken(foundUser, get2FaScope(foundUser, foundUserCompany), foundUserCompany?.id),
5757
name: foundUser.name,
5858
externalRegistrationProvider: foundUser.externalRegistrationProvider,
5959
};

0 commit comments

Comments
 (0)