Deprecate legacy core datasource token (#14096)

This commit is contained in:
Weiko
2025-08-27 20:09:54 +02:00
committed by GitHub
parent c6aa419c18
commit 533d7fe49a
321 changed files with 702 additions and 849 deletions
@@ -78,21 +78,18 @@ import { JwtAuthStrategy } from './strategies/jwt.auth.strategy';
UserModule,
WorkspaceManagerModule,
TypeORMModule,
TypeOrmModule.forFeature(
[
Workspace,
User,
AppToken,
ApiKey,
FeatureFlag,
WorkspaceSSOIdentityProvider,
KeyValuePair,
UserWorkspace,
TwoFactorAuthenticationMethod,
],
'core',
),
TypeOrmModule.forFeature([ObjectMetadataEntity], 'core'),
TypeOrmModule.forFeature([
Workspace,
User,
AppToken,
ApiKey,
FeatureFlag,
WorkspaceSSOIdentityProvider,
KeyValuePair,
UserWorkspace,
TwoFactorAuthenticationMethod,
]),
TypeOrmModule.forFeature([ObjectMetadataEntity]),
HttpModule,
UserWorkspaceModule,
WorkspaceModule,
@@ -38,11 +38,11 @@ describe('AuthResolver', () => {
providers: [
AuthResolver,
{
provide: getRepositoryToken(AppToken, 'core'),
provide: getRepositoryToken(AppToken),
useValue: {},
},
{
provide: getRepositoryToken(User, 'core'),
provide: getRepositoryToken(User),
useValue: {},
},
{
@@ -92,9 +92,9 @@ import { AuthService } from './services/auth.service';
)
export class AuthResolver {
constructor(
@InjectRepository(User, 'core')
@InjectRepository(User)
private readonly userRepository: Repository<User>,
@InjectRepository(AppToken, 'core')
@InjectRepository(AppToken)
private readonly appTokenRepository: Repository<AppToken>,
private readonly twoFactorAuthenticationService: TwoFactorAuthenticationService,
private authService: AuthService,
@@ -38,7 +38,7 @@ export class GoogleAPIsAuthController {
private readonly onboardingService: OnboardingService,
private readonly domainManagerService: DomainManagerService,
private readonly guardRedirectService: GuardRedirectService,
@InjectRepository(Workspace, 'core')
@InjectRepository(Workspace)
private readonly workspaceRepository: Repository<Workspace>,
) {}
@@ -38,7 +38,7 @@ export class MicrosoftAPIsAuthController {
private readonly domainManagerService: DomainManagerService,
private readonly onboardingService: OnboardingService,
private readonly guardRedirectService: GuardRedirectService,
@InjectRepository(Workspace, 'core')
@InjectRepository(Workspace)
private readonly workspaceRepository: Repository<Workspace>,
) {}
@@ -50,9 +50,9 @@ export class SSOAuthController {
private readonly domainManagerService: DomainManagerService,
private readonly sSOService: SSOService,
@InjectRepository(User, 'core')
@InjectRepository(User)
private readonly userRepository: Repository<User>,
@InjectRepository(WorkspaceSSOIdentityProvider, 'core')
@InjectRepository(WorkspaceSSOIdentityProvider)
private readonly workspaceSSOIdentityProviderRepository: Repository<WorkspaceSSOIdentityProvider>,
) {}
@@ -25,7 +25,7 @@ export class GoogleAPIsOauthExchangeCodeForTokenGuard extends AuthGuard(
private readonly twentyConfigService: TwentyConfigService,
private readonly transientTokenService: TransientTokenService,
private readonly domainManagerService: DomainManagerService,
@InjectRepository(Workspace, 'core')
@InjectRepository(Workspace)
private readonly workspaceRepository: Repository<Workspace>,
) {
super();
@@ -22,7 +22,7 @@ export class GoogleAPIsOauthRequestCodeGuard extends AuthGuard('google-apis') {
private readonly twentyConfigService: TwentyConfigService,
private readonly transientTokenService: TransientTokenService,
private readonly guardRedirectService: GuardRedirectService,
@InjectRepository(Workspace, 'core')
@InjectRepository(Workspace)
private readonly workspaceRepository: Repository<Workspace>,
private readonly domainManagerService: DomainManagerService,
) {
@@ -17,7 +17,7 @@ import { DomainManagerService } from 'src/engine/core-modules/domain-manager/ser
export class GoogleOauthGuard extends AuthGuard('google') {
constructor(
private readonly guardRedirectService: GuardRedirectService,
@InjectRepository(Workspace, 'core')
@InjectRepository(Workspace)
private readonly workspaceRepository: Repository<Workspace>,
private readonly domainManagerService: DomainManagerService,
) {
@@ -24,7 +24,7 @@ export class MicrosoftAPIsOauthRequestCodeGuard extends AuthGuard(
private readonly twentyConfigService: TwentyConfigService,
private readonly transientTokenService: TransientTokenService,
private readonly guardRedirectService: GuardRedirectService,
@InjectRepository(Workspace, 'core')
@InjectRepository(Workspace)
private readonly workspaceRepository: Repository<Workspace>,
private readonly domainManagerService: DomainManagerService,
) {
@@ -12,7 +12,7 @@ import { DomainManagerService } from 'src/engine/core-modules/domain-manager/ser
export class MicrosoftOAuthGuard extends AuthGuard('microsoft') {
constructor(
private readonly guardRedirectService: GuardRedirectService,
@InjectRepository(Workspace, 'core')
@InjectRepository(Workspace)
private readonly workspaceRepository: Repository<Workspace>,
private readonly domainManagerService: DomainManagerService,
) {
@@ -10,7 +10,7 @@ import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
@Injectable()
export class AuthSsoService {
constructor(
@InjectRepository(Workspace, 'core')
@InjectRepository(Workspace)
private readonly workspaceRepository: Repository<Workspace>,
private readonly twentyConfigService: TwentyConfigService,
) {}
@@ -18,7 +18,7 @@ describe('AuthSsoService', () => {
providers: [
AuthSsoService,
{
provide: getRepositoryToken(Workspace, 'core'),
provide: getRepositoryToken(Workspace),
useValue: {
findOne: jest.fn(),
},
@@ -34,7 +34,7 @@ describe('AuthSsoService', () => {
authSsoService = module.get<AuthSsoService>(AuthSsoService);
workspaceRepository = module.get<Repository<Workspace>>(
getRepositoryToken(Workspace, 'core'),
getRepositoryToken(Workspace),
);
twentyConfigService = module.get<TwentyConfigService>(TwentyConfigService);
});
@@ -47,19 +47,19 @@ describe('AuthService', () => {
providers: [
AuthService,
{
provide: getRepositoryToken(Workspace, 'core'),
provide: getRepositoryToken(Workspace),
useValue: {
findOne: jest.fn(),
},
},
{
provide: getRepositoryToken(User, 'core'),
provide: getRepositoryToken(User),
useValue: {
findOne: jest.fn(),
},
},
{
provide: getRepositoryToken(AppToken, 'core'),
provide: getRepositoryToken(AppToken),
useValue: {
createQueryBuilder: jest.fn().mockReturnValue({
leftJoin: jest.fn().mockReturnThis(),
@@ -146,11 +146,9 @@ describe('AuthService', () => {
userWorkspaceService =
module.get<UserWorkspaceService>(UserWorkspaceService);
workspaceRepository = module.get<Repository<Workspace>>(
getRepositoryToken(Workspace, 'core'),
);
userRepository = module.get<Repository<User>>(
getRepositoryToken(User, 'core'),
getRepositoryToken(Workspace),
);
userRepository = module.get<Repository<User>>(getRepositoryToken(User));
});
beforeEach(() => {
@@ -78,13 +78,13 @@ export class AuthService {
private readonly authSsoService: AuthSsoService,
private readonly userService: UserService,
private readonly signInUpService: SignInUpService,
@InjectRepository(Workspace, 'core')
@InjectRepository(Workspace)
private readonly workspaceRepository: Repository<Workspace>,
@InjectRepository(User, 'core')
@InjectRepository(User)
private readonly userRepository: Repository<User>,
private readonly twentyConfigService: TwentyConfigService,
private readonly emailService: EmailService,
@InjectRepository(AppToken, 'core')
@InjectRepository(AppToken)
private readonly appTokenRepository: Repository<AppToken>,
) {}
@@ -99,7 +99,7 @@ describe('GoogleAPIsService', () => {
},
},
{
provide: getRepositoryToken(ObjectMetadataEntity, 'core'),
provide: getRepositoryToken(ObjectMetadataEntity),
useValue: {
findOneOrFail: jest.fn(),
},
@@ -100,7 +100,7 @@ describe('MicrosoftAPIsService', () => {
},
},
{
provide: getRepositoryToken(ObjectMetadataEntity, 'core'),
provide: getRepositoryToken(ObjectMetadataEntity),
useValue: {
findOneOrFail: jest.fn(),
},
@@ -21,9 +21,9 @@
// @Injectable()
// export class OAuthService {
// constructor(
// @InjectRepository(User, 'core')
// @InjectRepository(User)
// private readonly userRepository: Repository<User>,
// @InjectRepository(AppToken, 'core')
// @InjectRepository(AppToken)
// private readonly appTokenRepository: Repository<AppToken>,
// private readonly accessTokenService: AccessTokenService,
// private readonly refreshTokenService: RefreshTokenService,
@@ -31,19 +31,19 @@ describe('ResetPasswordService', () => {
providers: [
ResetPasswordService,
{
provide: getRepositoryToken(User, 'core'),
provide: getRepositoryToken(User),
useClass: Repository,
},
{
provide: getRepositoryToken(Workspace, 'core'),
provide: getRepositoryToken(Workspace),
useClass: Repository,
},
{
provide: getRepositoryToken(AppToken, 'core'),
provide: getRepositoryToken(AppToken),
useClass: Repository,
},
{
provide: getRepositoryToken(Workspace, 'core'),
provide: getRepositoryToken(Workspace),
useClass: Repository,
},
{
@@ -71,14 +71,12 @@ describe('ResetPasswordService', () => {
}).compile();
service = module.get<ResetPasswordService>(ResetPasswordService);
userRepository = module.get<Repository<User>>(
getRepositoryToken(User, 'core'),
);
userRepository = module.get<Repository<User>>(getRepositoryToken(User));
workspaceRepository = module.get<Repository<Workspace>>(
getRepositoryToken(Workspace, 'core'),
getRepositoryToken(Workspace),
);
appTokenRepository = module.get<Repository<AppToken>>(
getRepositoryToken(AppToken, 'core'),
getRepositoryToken(AppToken),
);
emailService = module.get<EmailService>(EmailService);
twentyConfigService = module.get<TwentyConfigService>(TwentyConfigService);
@@ -36,11 +36,11 @@ export class ResetPasswordService {
constructor(
private readonly twentyConfigService: TwentyConfigService,
private readonly domainManagerService: DomainManagerService,
@InjectRepository(User, 'core')
@InjectRepository(User)
private readonly userRepository: Repository<User>,
@InjectRepository(Workspace, 'core')
@InjectRepository(Workspace)
private readonly workspaceRepository: Repository<Workspace>,
@InjectRepository(AppToken, 'core')
@InjectRepository(AppToken)
private readonly appTokenRepository: Repository<AppToken>,
private readonly emailService: EmailService,
) {}
@@ -52,14 +52,14 @@ describe('SignInUpService', () => {
providers: [
SignInUpService,
{
provide: getRepositoryToken(User, 'core'),
provide: getRepositoryToken(User),
useValue: {
create: jest.fn(),
save: jest.fn(),
},
},
{
provide: getRepositoryToken(Workspace, 'core'),
provide: getRepositoryToken(Workspace),
useValue: {
save: jest.fn(),
create: jest.fn(),
@@ -147,8 +147,8 @@ describe('SignInUpService', () => {
}).compile();
service = module.get<SignInUpService>(SignInUpService);
UserRepository = module.get(getRepositoryToken(User, 'core'));
WorkspaceRepository = module.get(getRepositoryToken(Workspace, 'core'));
UserRepository = module.get(getRepositoryToken(User));
WorkspaceRepository = module.get(getRepositoryToken(Workspace));
workspaceInvitationService = module.get<WorkspaceInvitationService>(
WorkspaceInvitationService,
);
@@ -43,9 +43,9 @@ import { isWorkEmail } from 'src/utils/is-work-email';
// eslint-disable-next-line @nx/workspace-inject-workspace-repository
export class SignInUpService {
constructor(
@InjectRepository(User, 'core')
@InjectRepository(User)
private readonly userRepository: Repository<User>,
@InjectRepository(Workspace, 'core')
@InjectRepository(Workspace)
private readonly workspaceRepository: Repository<Workspace>,
private readonly workspaceInvitationService: WorkspaceInvitationService,
private readonly userWorkspaceService: UserWorkspaceService,
@@ -30,13 +30,13 @@ import { workspaceValidator } from 'src/engine/core-modules/workspace/workspace.
export class JwtAuthStrategy extends PassportStrategy(Strategy, 'jwt') {
constructor(
private readonly jwtWrapperService: JwtWrapperService,
@InjectRepository(Workspace, 'core')
@InjectRepository(Workspace)
private readonly workspaceRepository: Repository<Workspace>,
@InjectRepository(User, 'core')
@InjectRepository(User)
private readonly userRepository: Repository<User>,
@InjectRepository(UserWorkspace, 'core')
@InjectRepository(UserWorkspace)
private readonly userWorkspaceRepository: Repository<UserWorkspace>,
@InjectRepository(ApiKey, 'core')
@InjectRepository(ApiKey)
private readonly apiKeyRepository: Repository<ApiKey>,
) {
const jwtFromRequestFunction = jwtWrapperService.extractJwtFromRequest();
@@ -54,19 +54,19 @@ describe('AccessTokenService', () => {
},
},
{
provide: getRepositoryToken(User, 'core'),
provide: getRepositoryToken(User),
useClass: Repository,
},
{
provide: getRepositoryToken(AppToken, 'core'),
provide: getRepositoryToken(AppToken),
useClass: Repository,
},
{
provide: getRepositoryToken(Workspace, 'core'),
provide: getRepositoryToken(Workspace),
useClass: Repository,
},
{
provide: getRepositoryToken(UserWorkspace, 'core'),
provide: getRepositoryToken(UserWorkspace),
useClass: Repository,
},
{
@@ -85,17 +85,15 @@ describe('AccessTokenService', () => {
service = module.get<AccessTokenService>(AccessTokenService);
jwtWrapperService = module.get<JwtWrapperService>(JwtWrapperService);
twentyConfigService = module.get<TwentyConfigService>(TwentyConfigService);
userRepository = module.get<Repository<User>>(
getRepositoryToken(User, 'core'),
);
userRepository = module.get<Repository<User>>(getRepositoryToken(User));
workspaceRepository = module.get<Repository<Workspace>>(
getRepositoryToken(Workspace, 'core'),
getRepositoryToken(Workspace),
);
twentyORMGlobalManager = module.get<TwentyORMGlobalManager>(
TwentyORMGlobalManager,
);
userWorkspaceRepository = module.get<Repository<UserWorkspace>>(
getRepositoryToken(UserWorkspace, 'core'),
getRepositoryToken(UserWorkspace),
);
});
@@ -35,12 +35,12 @@ export class AccessTokenService {
private readonly jwtWrapperService: JwtWrapperService,
private readonly jwtStrategy: JwtAuthStrategy,
private readonly twentyConfigService: TwentyConfigService,
@InjectRepository(User, 'core')
@InjectRepository(User)
private readonly userRepository: Repository<User>,
@InjectRepository(Workspace, 'core')
@InjectRepository(Workspace)
private readonly workspaceRepository: Repository<Workspace>,
private readonly twentyORMGlobalManager: TwentyORMGlobalManager,
@InjectRepository(UserWorkspace, 'core')
@InjectRepository(UserWorkspace)
private readonly userWorkspaceRepository: Repository<UserWorkspace>,
) {}
@@ -29,11 +29,11 @@ describe('EmailVerificationTokenService', () => {
providers: [
EmailVerificationTokenService,
{
provide: getRepositoryToken(AppToken, 'core'),
provide: getRepositoryToken(AppToken),
useClass: Repository,
},
{
provide: getRepositoryToken(User, 'core'),
provide: getRepositoryToken(User),
useValue: {
findOne: jest.fn(),
},
@@ -51,11 +51,9 @@ describe('EmailVerificationTokenService', () => {
EmailVerificationTokenService,
);
appTokenRepository = module.get<Repository<AppToken>>(
getRepositoryToken(AppToken, 'core'),
);
userRepository = module.get<Repository<User>>(
getRepositoryToken(User, 'core'),
getRepositoryToken(AppToken),
);
userRepository = module.get<Repository<User>>(getRepositoryToken(User));
twentyConfigService = module.get<TwentyConfigService>(TwentyConfigService);
});
@@ -23,9 +23,9 @@ import { User } from 'src/engine/core-modules/user/user.entity';
@Injectable()
export class EmailVerificationTokenService {
constructor(
@InjectRepository(AppToken, 'core')
@InjectRepository(AppToken)
private readonly appTokenRepository: Repository<AppToken>,
@InjectRepository(User, 'core')
@InjectRepository(User)
private readonly userRepository: Repository<User>,
private readonly twentyConfigService: TwentyConfigService,
) {}
@@ -39,11 +39,11 @@ describe('RefreshTokenService', () => {
},
},
{
provide: getRepositoryToken(AppToken, 'core'),
provide: getRepositoryToken(AppToken),
useClass: Repository,
},
{
provide: getRepositoryToken(User, 'core'),
provide: getRepositoryToken(User),
useClass: Repository,
},
],
@@ -53,11 +53,9 @@ describe('RefreshTokenService', () => {
jwtWrapperService = module.get<JwtWrapperService>(JwtWrapperService);
twentyConfigService = module.get<TwentyConfigService>(TwentyConfigService);
appTokenRepository = module.get<Repository<AppToken>>(
getRepositoryToken(AppToken, 'core'),
);
userRepository = module.get<Repository<User>>(
getRepositoryToken(User, 'core'),
getRepositoryToken(AppToken),
);
userRepository = module.get<Repository<User>>(getRepositoryToken(User));
});
it('should be defined', () => {
@@ -27,9 +27,9 @@ export class RefreshTokenService {
constructor(
private readonly jwtWrapperService: JwtWrapperService,
private readonly twentyConfigService: TwentyConfigService,
@InjectRepository(AppToken, 'core')
@InjectRepository(AppToken)
private readonly appTokenRepository: Repository<AppToken>,
@InjectRepository(User, 'core')
@InjectRepository(User)
private readonly userRepository: Repository<User>,
) {}
@@ -24,7 +24,7 @@ describe('RenewTokenService', () => {
providers: [
RenewTokenService,
{
provide: getRepositoryToken(AppToken, 'core'),
provide: getRepositoryToken(AppToken),
useClass: Repository,
},
{
@@ -51,7 +51,7 @@ describe('RenewTokenService', () => {
service = module.get<RenewTokenService>(RenewTokenService);
appTokenRepository = module.get<Repository<AppToken>>(
getRepositoryToken(AppToken, 'core'),
getRepositoryToken(AppToken),
);
accessTokenService = module.get<AccessTokenService>(AccessTokenService);
refreshTokenService = module.get<RefreshTokenService>(RefreshTokenService);
@@ -18,7 +18,7 @@ import { JwtTokenTypeEnum } from 'src/engine/core-modules/auth/types/auth-contex
@Injectable()
export class RenewTokenService {
constructor(
@InjectRepository(AppToken, 'core')
@InjectRepository(AppToken)
private readonly appTokenRepository: Repository<AppToken>,
private readonly accessTokenService: AccessTokenService,
private readonly workspaceAgnosticTokenService: WorkspaceAgnosticTokenService,
@@ -36,7 +36,7 @@ describe('WorkspaceAgnosticToken', () => {
},
},
{
provide: getRepositoryToken(User, 'core'),
provide: getRepositoryToken(User),
useValue: {
findOne: jest.fn(),
},
@@ -49,9 +49,7 @@ describe('WorkspaceAgnosticToken', () => {
);
jwtWrapperService = module.get<JwtWrapperService>(JwtWrapperService);
twentyConfigService = module.get<TwentyConfigService>(TwentyConfigService);
userRepository = module.get<Repository<User>>(
getRepositoryToken(User, 'core'),
);
userRepository = module.get<Repository<User>>(getRepositoryToken(User));
});
it('should be defined', () => {
@@ -25,7 +25,7 @@ export class WorkspaceAgnosticTokenService {
constructor(
private readonly jwtWrapperService: JwtWrapperService,
private readonly twentyConfigService: TwentyConfigService,
@InjectRepository(User, 'core')
@InjectRepository(User)
private readonly userRepository: Repository<User>,
) {}
@@ -19,10 +19,13 @@ import { DataSourceModule } from 'src/engine/metadata-modules/data-source/data-s
@Module({
imports: [
JwtModule,
TypeOrmModule.forFeature(
[User, AppToken, Workspace, UserWorkspace, ApiKey],
'core',
),
TypeOrmModule.forFeature([
User,
AppToken,
Workspace,
UserWorkspace,
ApiKey,
]),
TypeORMModule,
DataSourceModule,
],