mirror of
https://github.com/twentyhq/twenty.git
synced 2024-12-22 19:41:53 +03:00
feat(auth): add workspaceId validation and token expiration (#9134)
Added validation to ensure refresh tokens include a workspaceId, throwing an exception for malformed tokens. Included workspaceId in payloads and introduced expiration handling for access tokens. This enhances token security and prevents potential misuse. Close #9126
This commit is contained in:
parent
f620fd3c18
commit
a2423fad5e
@ -100,6 +100,7 @@ export class AccessTokenService {
|
||||
return {
|
||||
token: this.jwtWrapperService.sign(jwtPayload, {
|
||||
secret: this.jwtWrapperService.generateAppSecret('ACCESS', workspaceId),
|
||||
expiresIn,
|
||||
}),
|
||||
expiresAt,
|
||||
};
|
||||
|
@ -90,6 +90,14 @@ export class RefreshTokenService {
|
||||
);
|
||||
}
|
||||
|
||||
// TODO: Delete this useless condition and error after March 31st 2025
|
||||
if (!token.workspaceId) {
|
||||
throw new AuthException(
|
||||
'This refresh token is malformed',
|
||||
AuthExceptionCode.INVALID_INPUT,
|
||||
);
|
||||
}
|
||||
|
||||
return { user, token };
|
||||
}
|
||||
|
||||
@ -115,10 +123,12 @@ export class RefreshTokenService {
|
||||
const refreshTokenPayload = {
|
||||
userId,
|
||||
expiresAt,
|
||||
workspaceId,
|
||||
type: AppTokenType.RefreshToken,
|
||||
};
|
||||
const jwtPayload = {
|
||||
sub: userId,
|
||||
workspaceId,
|
||||
};
|
||||
|
||||
const refreshToken = this.appTokenRepository.create(refreshTokenPayload);
|
||||
|
Loading…
Reference in New Issue
Block a user