diff --git a/e2e/src/specs/server/api/user-admin.e2e-spec.ts b/e2e/src/specs/server/api/user-admin.e2e-spec.ts index 7b9f644a29..f442d4249d 100644 --- a/e2e/src/specs/server/api/user-admin.e2e-spec.ts +++ b/e2e/src/specs/server/api/user-admin.e2e-spec.ts @@ -1,5 +1,6 @@ import { LoginResponseDto, + Permission, QueueName, createStack, deleteUserAdmin, @@ -372,6 +373,15 @@ describe('/admin/users', () => { expect(status).toBe(403); expect(body).toEqual(errorDto.forbidden); }); + + it('should require the AdminUserRead permission', async () => { + const { secret } = await utils.createApiKey(admin.accessToken, [Permission.UserRead]); + const { status, body } = await request(app) + .get(`/admin/users/${nonAdmin.userId}/calendar-heatmap`) + .set('x-api-key', secret); + expect(status).toBe(403); + expect(body).toEqual(errorDto.forbidden); + }); }); describe('POST /admin/users/:id/restore', () => { diff --git a/open-api/immich-openapi-specs.json b/open-api/immich-openapi-specs.json index 2bbe961ccc..dd5d4dce45 100644 --- a/open-api/immich-openapi-specs.json +++ b/open-api/immich-openapi-specs.json @@ -1650,7 +1650,7 @@ "state": "Stable" } ], - "x-immich-permission": "user.read", + "x-immich-permission": "adminUser.read", "x-immich-state": "Stable" } }, diff --git a/server/src/controllers/user-admin.controller.ts b/server/src/controllers/user-admin.controller.ts index 76ac15c0ad..18798c00cb 100644 --- a/server/src/controllers/user-admin.controller.ts +++ b/server/src/controllers/user-admin.controller.ts @@ -102,7 +102,7 @@ export class UserAdminController { } @Get(':id/calendar-heatmap') - @Authenticated({ permission: Permission.UserRead, admin: true }) + @Authenticated({ permission: Permission.AdminUserRead, admin: true }) @Endpoint({ summary: 'Retrieve calendar heatmap activity', description: 'Retrieve activity counts for a specified period, in a calendar heatmap format.',