diff --git a/api/src/model/entitites/user/user.entity.ts b/api/src/model/entitites/user/user.entity.ts index e9a9875..cbd5472 100644 --- a/api/src/model/entitites/user/user.entity.ts +++ b/api/src/model/entitites/user/user.entity.ts @@ -58,7 +58,7 @@ export class User implements IUser { @DeleteDateColumn() deletedAt: Date; - @OneToOne(() => UserSettings, (settings) => settings.user, { cascade: true }) + @OneToOne(() => UserSettings, (settings) => settings.user, { cascade: true, onDelete: 'CASCADE', onUpdate: 'NO ACTION', }) settings: UserSettings; accessToken?: string; diff --git a/api/src/model/repositories/user.repository.ts b/api/src/model/repositories/user.repository.ts index df402d7..b255390 100644 --- a/api/src/model/repositories/user.repository.ts +++ b/api/src/model/repositories/user.repository.ts @@ -15,8 +15,12 @@ export class UserRepository extends Repository { super(User, dataSource.createEntityManager()); } - findByUsername(username: string): Promise { - return this.findOne({ where: { username }, relations: ['external'] }); + findByUsername(username: string, {settings = false}: { settings: boolean }): Promise { + const relations = ['external']; + if (settings ) { + relations.push('settings') + } + return this.findOne({ where: { username }, relations: relations }); } findById(id: string): Promise { diff --git a/api/src/modules/auth/auth.service.ts b/api/src/modules/auth/auth.service.ts index 5e85ffc..95e563f 100644 --- a/api/src/modules/auth/auth.service.ts +++ b/api/src/modules/auth/auth.service.ts @@ -49,7 +49,7 @@ export class AuthService { }): Promise { const payload: IExternalAccessPayload = this.jwt.decode(access_token); return new Promise(async (resolve) => { - let user = await this.userRepo.findByUsername(payload.username); + let user = await this.userRepo.findByUsername(payload.username, { settings: true }); if (!user) { user = await this.userRepo.createUser({ @@ -69,7 +69,9 @@ export class AuthService { user.external.accessToken = access_token; user.external.refreshToken = refresh_token; - await this.userRepo.save(user); + try { + await this.userRepo.save(user); + } catch {} resolve(user); }); }