feat: add server.versionCheck permission (#20555)

* add server.versionCheck permission

* getVersionCheck is no admin-route
This commit is contained in:
Michael 2025-08-05 00:39:05 +02:00 committed by GitHub
parent 42b78c59b5
commit a91bb399f0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 17 additions and 3 deletions

View File

@ -477,7 +477,9 @@ class ServerApi {
return null;
}
/// Performs an HTTP 'GET /server/version-check' operation and returns the [Response].
/// This endpoint requires the `server.versionCheck` permission.
///
/// Note: This method returns the HTTP [Response].
Future<Response> getVersionCheckWithHttpInfo() async {
// ignore: prefer_const_declarations
final apiPath = r'/server/version-check';
@ -503,6 +505,7 @@ class ServerApi {
);
}
/// This endpoint requires the `server.versionCheck` permission.
Future<VersionCheckStateResponseDto?> getVersionCheck() async {
final response = await getVersionCheckWithHttpInfo();
if (response.statusCode >= HttpStatus.badRequest) {

View File

@ -101,6 +101,7 @@ class Permission {
static const serverPeriodApkLinks = Permission._(r'server.apkLinks');
static const serverPeriodStorage = Permission._(r'server.storage');
static const serverPeriodStatistics = Permission._(r'server.statistics');
static const serverPeriodVersionCheck = Permission._(r'server.versionCheck');
static const serverLicensePeriodRead = Permission._(r'serverLicense.read');
static const serverLicensePeriodUpdate = Permission._(r'serverLicense.update');
static const serverLicensePeriodDelete = Permission._(r'serverLicense.delete');
@ -230,6 +231,7 @@ class Permission {
serverPeriodApkLinks,
serverPeriodStorage,
serverPeriodStatistics,
serverPeriodVersionCheck,
serverLicensePeriodRead,
serverLicensePeriodUpdate,
serverLicensePeriodDelete,
@ -394,6 +396,7 @@ class PermissionTypeTransformer {
case r'server.apkLinks': return Permission.serverPeriodApkLinks;
case r'server.storage': return Permission.serverPeriodStorage;
case r'server.statistics': return Permission.serverPeriodStatistics;
case r'server.versionCheck': return Permission.serverPeriodVersionCheck;
case r'serverLicense.read': return Permission.serverLicensePeriodRead;
case r'serverLicense.update': return Permission.serverLicensePeriodUpdate;
case r'serverLicense.delete': return Permission.serverLicensePeriodDelete;

View File

@ -6506,7 +6506,9 @@
],
"tags": [
"Server"
]
],
"x-immich-permission": "server.versionCheck",
"description": "This endpoint requires the `server.versionCheck` permission."
}
},
"/server/version-history": {
@ -12631,6 +12633,7 @@
"server.apkLinks",
"server.storage",
"server.statistics",
"server.versionCheck",
"serverLicense.read",
"serverLicense.update",
"serverLicense.delete",

View File

@ -3552,6 +3552,9 @@ export function getServerVersion(opts?: Oazapfts.RequestOpts) {
...opts
}));
}
/**
* This endpoint requires the `server.versionCheck` permission.
*/
export function getVersionCheck(opts?: Oazapfts.RequestOpts) {
return oazapfts.ok(oazapfts.fetchJson<{
status: 200;
@ -4616,6 +4619,7 @@ export enum Permission {
ServerApkLinks = "server.apkLinks",
ServerStorage = "server.storage",
ServerStatistics = "server.statistics",
ServerVersionCheck = "server.versionCheck",
ServerLicenseRead = "serverLicense.read",
ServerLicenseUpdate = "serverLicense.update",
ServerLicenseDelete = "serverLicense.delete",

View File

@ -109,7 +109,7 @@ export class ServerController {
}
@Get('version-check')
@Authenticated()
@Authenticated({ permission: Permission.ServerVersionCheck })
getVersionCheck(): Promise<VersionCheckStateResponseDto> {
return this.systemMetadataService.getVersionCheckState();
}

View File

@ -172,6 +172,7 @@ export enum Permission {
ServerApkLinks = 'server.apkLinks',
ServerStorage = 'server.storage',
ServerStatistics = 'server.statistics',
ServerVersionCheck = 'server.versionCheck',
ServerLicenseRead = 'serverLicense.read',
ServerLicenseUpdate = 'serverLicense.update',