2025-11-07 10:12:38 +00:00
|
|
|
import { Body, Controller, Post, Res } from '@nestjs/common';
|
2025-10-31 17:28:57 +00:00
|
|
|
import { ApiTags } from '@nestjs/swagger';
|
2025-11-05 12:27:10 +00:00
|
|
|
import { Response } from 'express';
|
2025-11-05 13:44:43 +00:00
|
|
|
import { AuthDto } from 'src/dtos/auth.dto';
|
2025-11-06 17:50:48 +00:00
|
|
|
import { MaintenanceAuthDto, MaintenanceLoginDto } from 'src/dtos/maintenance.dto';
|
2025-11-05 12:27:10 +00:00
|
|
|
import { ImmichCookie, Permission } from 'src/enum';
|
2025-11-05 13:44:43 +00:00
|
|
|
import { Auth, Authenticated } from 'src/middleware/auth.guard';
|
2025-10-31 17:28:57 +00:00
|
|
|
import { MaintenanceService } from 'src/services/maintenance.service';
|
|
|
|
|
|
|
|
|
|
@ApiTags('Maintenance (admin)')
|
|
|
|
|
@Controller('admin/maintenance')
|
|
|
|
|
export class MaintenanceController {
|
2025-11-05 14:10:30 +00:00
|
|
|
constructor(private service: MaintenanceService) {}
|
2025-10-31 17:28:57 +00:00
|
|
|
|
2025-11-05 14:39:34 +00:00
|
|
|
@Post('login')
|
2025-11-06 11:27:14 +00:00
|
|
|
maintenanceLogin(@Body() _dto: MaintenanceLoginDto): MaintenanceAuthDto {
|
2025-11-07 10:12:38 +00:00
|
|
|
return this.service.login();
|
2025-11-05 14:39:34 +00:00
|
|
|
}
|
|
|
|
|
|
2025-10-31 17:28:57 +00:00
|
|
|
@Post('start')
|
2025-11-05 11:28:34 +00:00
|
|
|
@Authenticated({ permission: Permission.Maintenance, admin: true })
|
2025-11-06 17:50:48 +00:00
|
|
|
async startMaintenance(@Auth() auth: AuthDto, @Res({ passthrough: true }) response: Response): Promise<void> {
|
2025-11-10 11:32:49 +00:00
|
|
|
const { jwt } = await this.service.startMaintenance(auth);
|
2025-11-05 13:44:43 +00:00
|
|
|
response.cookie(ImmichCookie.MaintenanceToken, jwt);
|
2025-10-31 17:28:57 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Post('end')
|
2025-11-05 11:28:34 +00:00
|
|
|
@Authenticated({ permission: Permission.Maintenance, admin: true })
|
2025-11-06 17:50:48 +00:00
|
|
|
endMaintenance(): void {
|
2025-11-07 10:12:38 +00:00
|
|
|
this.service.endMaintenance();
|
2025-10-31 17:28:57 +00:00
|
|
|
}
|
|
|
|
|
}
|