mirror of
https://github.com/immich-app/immich
synced 2025-10-17 18:19:27 +00:00
feat: reset oauth ids (#20798)
This commit is contained in:
parent
9ecaa3fa9d
commit
538d5c81ea
15 changed files with 247 additions and 6 deletions
18
server/src/controllers/auth-admin.controller.ts
Normal file
18
server/src/controllers/auth-admin.controller.ts
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
import { Controller, HttpCode, HttpStatus, Post } from '@nestjs/common';
|
||||
import { ApiTags } from '@nestjs/swagger';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import { Permission } from 'src/enum';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard';
|
||||
import { AuthAdminService } from 'src/services/auth-admin.service';
|
||||
|
||||
@ApiTags('Auth (admin)')
|
||||
@Controller('admin/auth')
|
||||
export class AuthAdminController {
|
||||
constructor(private service: AuthAdminService) {}
|
||||
@Post('unlink-all')
|
||||
@Authenticated({ permission: Permission.AdminAuthUnlinkAll, admin: true })
|
||||
@HttpCode(HttpStatus.NO_CONTENT)
|
||||
unlinkAllOAuthAccountsAdmin(@Auth() auth: AuthDto): Promise<void> {
|
||||
return this.service.unlinkAll(auth);
|
||||
}
|
||||
}
|
||||
|
|
@ -4,6 +4,7 @@ import { APIKeyController } from 'src/controllers/api-key.controller';
|
|||
import { AppController } from 'src/controllers/app.controller';
|
||||
import { AssetMediaController } from 'src/controllers/asset-media.controller';
|
||||
import { AssetController } from 'src/controllers/asset.controller';
|
||||
import { AuthAdminController } from 'src/controllers/auth-admin.controller';
|
||||
import { AuthController } from 'src/controllers/auth.controller';
|
||||
import { DownloadController } from 'src/controllers/download.controller';
|
||||
import { DuplicateController } from 'src/controllers/duplicate.controller';
|
||||
|
|
@ -40,6 +41,7 @@ export const controllers = [
|
|||
AssetController,
|
||||
AssetMediaController,
|
||||
AuthController,
|
||||
AuthAdminController,
|
||||
DownloadController,
|
||||
DuplicateController,
|
||||
FaceController,
|
||||
|
|
|
|||
|
|
@ -235,6 +235,8 @@ export enum Permission {
|
|||
AdminUserRead = 'adminUser.read',
|
||||
AdminUserUpdate = 'adminUser.update',
|
||||
AdminUserDelete = 'adminUser.delete',
|
||||
|
||||
AdminAuthUnlinkAll = 'adminAuth.unlinkAll',
|
||||
}
|
||||
|
||||
export enum SharedLinkType {
|
||||
|
|
|
|||
|
|
@ -194,6 +194,10 @@ export class UserRepository {
|
|||
.executeTakeFirstOrThrow();
|
||||
}
|
||||
|
||||
async updateAll(dto: Updateable<UserTable>) {
|
||||
await this.db.updateTable('user').set(dto).execute();
|
||||
}
|
||||
|
||||
restore(id: string) {
|
||||
return this.db
|
||||
.updateTable('user')
|
||||
|
|
|
|||
11
server/src/services/auth-admin.service.ts
Normal file
11
server/src/services/auth-admin.service.ts
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
import { Injectable } from '@nestjs/common';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import { BaseService } from 'src/services/base.service';
|
||||
|
||||
@Injectable()
|
||||
export class AuthAdminService extends BaseService {
|
||||
async unlinkAll(_auth: AuthDto) {
|
||||
// TODO replace '' with null
|
||||
await this.userRepository.updateAll({ oauthId: '' });
|
||||
}
|
||||
}
|
||||
|
|
@ -5,6 +5,7 @@ import { ApiService } from 'src/services/api.service';
|
|||
import { AssetMediaService } from 'src/services/asset-media.service';
|
||||
import { AssetService } from 'src/services/asset.service';
|
||||
import { AuditService } from 'src/services/audit.service';
|
||||
import { AuthAdminService } from 'src/services/auth-admin.service';
|
||||
import { AuthService } from 'src/services/auth.service';
|
||||
import { BackupService } from 'src/services/backup.service';
|
||||
import { CliService } from 'src/services/cli.service';
|
||||
|
|
@ -49,6 +50,7 @@ export const services = [
|
|||
AssetService,
|
||||
AuditService,
|
||||
AuthService,
|
||||
AuthAdminService,
|
||||
BackupService,
|
||||
CliService,
|
||||
DatabaseService,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue