From 6f39a706b2e409c8e6a1fa7654e6fae52d919d44 Mon Sep 17 00:00:00 2001 From: Daimolean <92239625+wuzihao051119@users.noreply.github.com> Date: Thu, 29 May 2025 21:48:44 +0800 Subject: [PATCH] fix: missing permissions and optional update (#18735) * fix: missing permissions * fix: test --- .../openapi/lib/model/api_key_update_dto.dart | Bin 3104 -> 3511 bytes open-api/immich-openapi-specs.json | 4 ---- open-api/typescript-sdk/src/fetch-client.ts | 4 ++-- server/src/dtos/api-key.dto.ts | 6 ++++-- web/src/lib/modals/ApiKeyModal.svelte | 8 +++++++- 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/mobile/openapi/lib/model/api_key_update_dto.dart b/mobile/openapi/lib/model/api_key_update_dto.dart index 60ac168fdbd60a1c6af2bbb84765a26fe04f9674..7f32c9511878b6b4c8444ed5edb6be1ee4e7be96 100644 GIT binary patch delta 516 zcmZ{hu}%U(5QcLSDXz94F(yA00tt$Z4M-?#El9947R%inx4P_--8~E;gxK2h0zQHX zh0kDZXW;|b_y9KU-l3H?TkL%E?LV`RmFNAZ`(XVLoUYpKb_lo=13}CXq_Wh(Wy%ev zT1`pYIZUcD5hGd2sRQ_#gNO0U{ivbQp6J;G0T-i!Ub*Ru_EKuaHz;) z0z*s*%T~f-#zaPFWQNOeZmH!ZVLP?o2+bB!bw@MOtsEJXB+V?vTfb46b{Qh&)RW9u zBuog5Sab`kd~ok(_{j`ApVG1G_4DIgNyB5(U~ybtH<w`>=(x`saWfqvVyYd$xX!0`BJ3<>sUG8EoEmtL5^t8!p4}8~m}WS^xk5 delta 90 zcmdlky+C3^BO^yqYGG++QEJNM21YZs;F6-uy!6dd%w~*}Q&=uf4q;W?yo~h~BctNx q3G9k&stO9~d5O8H>N;EsK%icbT9lhvT%4JoR}2=awdShj;sO9pSsRD| diff --git a/open-api/immich-openapi-specs.json b/open-api/immich-openapi-specs.json index dee027f83..410840388 100644 --- a/open-api/immich-openapi-specs.json +++ b/open-api/immich-openapi-specs.json @@ -8335,10 +8335,6 @@ "type": "array" } }, - "required": [ - "name", - "permissions" - ], "type": "object" }, "ActivityCreateDto": { diff --git a/open-api/typescript-sdk/src/fetch-client.ts b/open-api/typescript-sdk/src/fetch-client.ts index 0c0ffd979..2b0e2849d 100644 --- a/open-api/typescript-sdk/src/fetch-client.ts +++ b/open-api/typescript-sdk/src/fetch-client.ts @@ -415,8 +415,8 @@ export type ApiKeyCreateResponseDto = { secret: string; }; export type ApiKeyUpdateDto = { - name: string; - permissions: Permission[]; + name?: string; + permissions?: Permission[]; }; export type AssetBulkDeleteDto = { force?: boolean; diff --git a/server/src/dtos/api-key.dto.ts b/server/src/dtos/api-key.dto.ts index ac6dd25bc..c790ea613 100644 --- a/server/src/dtos/api-key.dto.ts +++ b/server/src/dtos/api-key.dto.ts @@ -15,14 +15,16 @@ export class APIKeyCreateDto { } export class APIKeyUpdateDto { + @Optional() @IsString() @IsNotEmpty() - name!: string; + name?: string; + @Optional() @IsEnum(Permission, { each: true }) @ApiProperty({ enum: Permission, enumName: 'Permission', isArray: true }) @ArrayMinSize(1) - permissions!: Permission[]; + permissions?: Permission[]; } export class APIKeyCreateResponseDto { diff --git a/web/src/lib/modals/ApiKeyModal.svelte b/web/src/lib/modals/ApiKeyModal.svelte index 4a1df0f98..a0f8d5719 100644 --- a/web/src/lib/modals/ApiKeyModal.svelte +++ b/web/src/lib/modals/ApiKeyModal.svelte @@ -110,7 +110,13 @@ Permission.PersonReassign, ]); - permissions.set('session', [Permission.SessionRead, Permission.SessionUpdate, Permission.SessionDelete]); + permissions.set('session', [ + Permission.SessionCreate, + Permission.SessionRead, + Permission.SessionUpdate, + Permission.SessionDelete, + Permission.SessionLock, + ]); permissions.set('sharedLink', [ Permission.SharedLinkCreate,