feat(server): granular permissions for api keys (#11824)
feat(server): api auth permissions
This commit is contained in:
@@ -7135,8 +7135,17 @@
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"permissions": {
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/Permission"
|
||||
},
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"permissions"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"APIKeyCreateResponseDto": {
|
||||
@@ -7166,6 +7175,12 @@
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"permissions": {
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/Permission"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"updatedAt": {
|
||||
"format": "date-time",
|
||||
"type": "string"
|
||||
@@ -7175,6 +7190,7 @@
|
||||
"createdAt",
|
||||
"id",
|
||||
"name",
|
||||
"permissions",
|
||||
"updatedAt"
|
||||
],
|
||||
"type": "object"
|
||||
@@ -9729,6 +9745,82 @@
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"Permission": {
|
||||
"enum": [
|
||||
"all",
|
||||
"activity.create",
|
||||
"activity.read",
|
||||
"activity.update",
|
||||
"activity.delete",
|
||||
"activity.statistics",
|
||||
"apiKey.create",
|
||||
"apiKey.read",
|
||||
"apiKey.update",
|
||||
"apiKey.delete",
|
||||
"asset.read",
|
||||
"asset.update",
|
||||
"asset.delete",
|
||||
"asset.restore",
|
||||
"asset.share",
|
||||
"asset.view",
|
||||
"asset.download",
|
||||
"asset.upload",
|
||||
"album.create",
|
||||
"album.read",
|
||||
"album.update",
|
||||
"album.delete",
|
||||
"album.statistics",
|
||||
"album.addAsset",
|
||||
"album.removeAsset",
|
||||
"album.share",
|
||||
"album.download",
|
||||
"authDevice.delete",
|
||||
"archive.read",
|
||||
"face.create",
|
||||
"face.read",
|
||||
"face.update",
|
||||
"face.delete",
|
||||
"library.create",
|
||||
"library.read",
|
||||
"library.update",
|
||||
"library.delete",
|
||||
"library.statistics",
|
||||
"timeline.read",
|
||||
"timeline.download",
|
||||
"memory.create",
|
||||
"memory.read",
|
||||
"memory.update",
|
||||
"memory.delete",
|
||||
"partner.create",
|
||||
"partner.read",
|
||||
"partner.update",
|
||||
"partner.delete",
|
||||
"person.create",
|
||||
"person.read",
|
||||
"person.update",
|
||||
"person.delete",
|
||||
"person.statistics",
|
||||
"person.merge",
|
||||
"person.reassign",
|
||||
"sharedLink.create",
|
||||
"sharedLink.read",
|
||||
"sharedLink.update",
|
||||
"sharedLink.delete",
|
||||
"systemConfig.read",
|
||||
"systemConfig.update",
|
||||
"systemMetadata.read",
|
||||
"systemMetadata.update",
|
||||
"tag.create",
|
||||
"tag.read",
|
||||
"tag.update",
|
||||
"tag.delete",
|
||||
"admin.user.create",
|
||||
"admin.user.read",
|
||||
"admin.user.update",
|
||||
"admin.user.delete"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"PersonCreateDto": {
|
||||
"properties": {
|
||||
"birthDate": {
|
||||
|
||||
@@ -299,10 +299,12 @@ export type ApiKeyResponseDto = {
|
||||
createdAt: string;
|
||||
id: string;
|
||||
name: string;
|
||||
permissions: Permission[];
|
||||
updatedAt: string;
|
||||
};
|
||||
export type ApiKeyCreateDto = {
|
||||
name?: string;
|
||||
permissions: Permission[];
|
||||
};
|
||||
export type ApiKeyCreateResponseDto = {
|
||||
apiKey: ApiKeyResponseDto;
|
||||
@@ -3125,6 +3127,79 @@ export enum Error {
|
||||
NotFound = "not_found",
|
||||
Unknown = "unknown"
|
||||
}
|
||||
export enum Permission {
|
||||
All = "all",
|
||||
ActivityCreate = "activity.create",
|
||||
ActivityRead = "activity.read",
|
||||
ActivityUpdate = "activity.update",
|
||||
ActivityDelete = "activity.delete",
|
||||
ActivityStatistics = "activity.statistics",
|
||||
ApiKeyCreate = "apiKey.create",
|
||||
ApiKeyRead = "apiKey.read",
|
||||
ApiKeyUpdate = "apiKey.update",
|
||||
ApiKeyDelete = "apiKey.delete",
|
||||
AssetRead = "asset.read",
|
||||
AssetUpdate = "asset.update",
|
||||
AssetDelete = "asset.delete",
|
||||
AssetRestore = "asset.restore",
|
||||
AssetShare = "asset.share",
|
||||
AssetView = "asset.view",
|
||||
AssetDownload = "asset.download",
|
||||
AssetUpload = "asset.upload",
|
||||
AlbumCreate = "album.create",
|
||||
AlbumRead = "album.read",
|
||||
AlbumUpdate = "album.update",
|
||||
AlbumDelete = "album.delete",
|
||||
AlbumStatistics = "album.statistics",
|
||||
AlbumAddAsset = "album.addAsset",
|
||||
AlbumRemoveAsset = "album.removeAsset",
|
||||
AlbumShare = "album.share",
|
||||
AlbumDownload = "album.download",
|
||||
AuthDeviceDelete = "authDevice.delete",
|
||||
ArchiveRead = "archive.read",
|
||||
FaceCreate = "face.create",
|
||||
FaceRead = "face.read",
|
||||
FaceUpdate = "face.update",
|
||||
FaceDelete = "face.delete",
|
||||
LibraryCreate = "library.create",
|
||||
LibraryRead = "library.read",
|
||||
LibraryUpdate = "library.update",
|
||||
LibraryDelete = "library.delete",
|
||||
LibraryStatistics = "library.statistics",
|
||||
TimelineRead = "timeline.read",
|
||||
TimelineDownload = "timeline.download",
|
||||
MemoryCreate = "memory.create",
|
||||
MemoryRead = "memory.read",
|
||||
MemoryUpdate = "memory.update",
|
||||
MemoryDelete = "memory.delete",
|
||||
PartnerCreate = "partner.create",
|
||||
PartnerRead = "partner.read",
|
||||
PartnerUpdate = "partner.update",
|
||||
PartnerDelete = "partner.delete",
|
||||
PersonCreate = "person.create",
|
||||
PersonRead = "person.read",
|
||||
PersonUpdate = "person.update",
|
||||
PersonDelete = "person.delete",
|
||||
PersonStatistics = "person.statistics",
|
||||
PersonMerge = "person.merge",
|
||||
PersonReassign = "person.reassign",
|
||||
SharedLinkCreate = "sharedLink.create",
|
||||
SharedLinkRead = "sharedLink.read",
|
||||
SharedLinkUpdate = "sharedLink.update",
|
||||
SharedLinkDelete = "sharedLink.delete",
|
||||
SystemConfigRead = "systemConfig.read",
|
||||
SystemConfigUpdate = "systemConfig.update",
|
||||
SystemMetadataRead = "systemMetadata.read",
|
||||
SystemMetadataUpdate = "systemMetadata.update",
|
||||
TagCreate = "tag.create",
|
||||
TagRead = "tag.read",
|
||||
TagUpdate = "tag.update",
|
||||
TagDelete = "tag.delete",
|
||||
AdminUserCreate = "admin.user.create",
|
||||
AdminUserRead = "admin.user.read",
|
||||
AdminUserUpdate = "admin.user.update",
|
||||
AdminUserDelete = "admin.user.delete"
|
||||
}
|
||||
export enum AssetMediaStatus {
|
||||
Created = "created",
|
||||
Replaced = "replaced",
|
||||
|
||||
Reference in New Issue
Block a user