feat: initial setup of permissions on keys (#1068)

* feat: initial setup of permissions on keys

* fix: remove API keys

* test: update me resolver, findByIdWithSecret, findByKey and saveApiKey tests

* test: update and fix the rest of the failing api key tests

* fix: add reflect-metadata to test setup in vite config

* fix: revert myservers.cfg to original

* fix: update User type on me resolver

* fix: make permissions nullable and rerun codegen

* fix: update import syntax in me resolver

* refactor: move create-local-connect-api-key to api key service and handle in onModuleInit

* test: add tests for createLocalApiKeyForConnectIfNecessary

* refactor: add validation to me resolver

* refactor: address code rabbit suggestions

* refactor: update me resolver tests and fix hasOwnProperty error

* refactor: remove console log

* test: add additional coverage for me resolver tests

* test: fix failing test

* refactor: address review comments, add new api-key service test, and remove deprecated keys

* refactor: address review comments

---------

Co-authored-by: mdatelle <mike@datelle.net>
This commit is contained in:
Eli Bosley
2025-01-23 15:37:15 -05:00
committed by GitHub
parent 3acc0dc9c0
commit a554bde5c2
35 changed files with 613 additions and 947 deletions

View File

@@ -1,191 +0,0 @@
{
"admin": {
"extends": "user",
"permissions": [
{
"resource": "apikey",
"action": "read:any",
"attributes": "*"
},
{
"resource": "array",
"action": "read:any",
"attributes": "*"
},
{
"resource": "cpu",
"action": "read:any",
"attributes": "*"
},
{
"resource": "device",
"action": "read:any",
"attributes": "*"
},
{
"resource": "device/unassigned",
"action": "read:any",
"attributes": "*"
},
{
"resource": "disk",
"action": "read:any",
"attributes": "*"
},
{
"resource": "disk/settings",
"action": "read:any",
"attributes": "*"
},
{
"resource": "display",
"action": "read:any",
"attributes": "*"
},
{
"resource": "docker/container",
"action": "read:any",
"attributes": "*"
},
{
"resource": "docker/network",
"action": "read:any",
"attributes": "*"
},
{
"resource": "info",
"action": "read:any",
"attributes": "*"
},
{
"resource": "license-key",
"action": "read:any",
"attributes": "*"
},
{
"resource": "machine-id",
"action": "read:any",
"attributes": "*"
},
{
"resource": "memory",
"action": "read:any",
"attributes": "*"
},
{
"resource": "notifications",
"action": "read:any",
"attributes": "*"
},
{
"resource": "online",
"action": "read:any",
"attributes": "*"
},
{
"resource": "os",
"action": "read:any",
"attributes": "*"
},
{
"resource": "parity-history",
"action": "read:any",
"attributes": "*"
},
{
"resource": "permission",
"action": "read:any",
"attributes": "*"
},
{
"resource": "servers",
"action": "read:any",
"attributes": "*"
},
{
"resource": "service",
"action": "read:any",
"attributes": "*"
},
{
"resource": "service/emhttpd",
"action": "read:any",
"attributes": "*"
},
{
"resource": "service/unraid-api",
"action": "read:any",
"attributes": "*"
},
{
"resource": "services",
"action": "read:any",
"attributes": "*"
},
{
"resource": "share",
"action": "read:any",
"attributes": "*"
},
{
"resource": "software-versions",
"action": "read:any",
"attributes": "*"
},
{
"resource": "unraid-version",
"action": "read:any",
"attributes": "*"
},
{
"resource": "user",
"action": "read:any",
"attributes": "*"
},
{
"resource": "var",
"action": "read:any",
"attributes": "*"
},
{
"resource": "vars",
"action": "read:any",
"attributes": "*"
},
{
"resource": "vm/domain",
"action": "read:any",
"attributes": "*"
},
{
"resource": "vm/network",
"action": "read:any",
"attributes": "*"
}
]
},
"user": {
"extends": "guest",
"permissions": [
{
"resource": "apikey",
"action": "read:own",
"attributes": "*"
},
{
"resource": "permission",
"action": "read:any",
"attributes": "*"
}
]
},
"guest": {
"permissions": [
{
"resource": "welcome",
"action": "read:any",
"attributes": "*"
}
]
}
}

View File

@@ -1,8 +0,0 @@
{
"id": "10f356da-1e9e-43b8-9028-a26a645539a6",
"key": "73717ca0-8c15-40b9-bcca-8d85656d1438",
"name": "Test API Key",
"description": "Testing API key creation",
"roles": ["guest", "connect"],
"createdAt": "2024-10-29T19:59:12.569Z"
}

View File

@@ -1,10 +0,0 @@
{
"createdAt": "2024-12-20T15:05:55.336Z",
"description": "API key for Connect user",
"id": "d166bf8b-3615-444a-8932-c460b2132ba3",
"key": "_______________________LOCAL_API_KEY_HERE_________________________",
"name": "Connect",
"roles": [
"connect"
]
}