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; 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 { Future<Response> getVersionCheckWithHttpInfo() async {
// ignore: prefer_const_declarations // ignore: prefer_const_declarations
final apiPath = r'/server/version-check'; final apiPath = r'/server/version-check';
@ -503,6 +505,7 @@ class ServerApi {
); );
} }
/// This endpoint requires the `server.versionCheck` permission.
Future<VersionCheckStateResponseDto?> getVersionCheck() async { Future<VersionCheckStateResponseDto?> getVersionCheck() async {
final response = await getVersionCheckWithHttpInfo(); final response = await getVersionCheckWithHttpInfo();
if (response.statusCode >= HttpStatus.badRequest) { if (response.statusCode >= HttpStatus.badRequest) {

View File

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

View File

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

View File

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

View File

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

View File

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