d5854cc2c4
feat: user and org defaults
...
ci / lint_and_test (push) Successful in 15s
Root and User defaults made more generic and merged.
Root user group assignment merged with org default perm assignment.
Root user granted all default org permissions at org creation.
2026-06-17 10:49:58 +01:00
d6c14655c0
feat: batch add perm to org
ci / lint_and_test (push) Successful in 16s
2026-06-16 16:48:32 +01:00
327f857190
feat: service-permission orm relationship
2026-06-16 16:10:08 +01:00
154870acb1
feat: service key dependency generic
...
Dependency to verify service API key accepts the service_name from a RN generic, allowing for endpoints without a full RN to use it.
2026-06-16 16:09:17 +01:00
f96cb2112c
minor: rename search endpoint function
2026-06-16 16:05:17 +01:00
662b9c8e26
feat: permission permissions
...
ci / lint_and_test (push) Successful in 16s
Orgs can only grant permissions to groups that they themselves have been granted access to.
Super admin bypasses not added, flagged as todos.
2026-06-16 13:51:31 +01:00
0a867c9c90
minor: relationship key definitions to strings
...
Using the objects directly was causing type checking issues. Strings are equivalent so no functional change.
2026-06-16 11:19:22 +01:00
3e4f68dd9b
fix: unique violations
...
Directly using Psycopg error instead of the error code.
Also, raise all other IntegrityErrors instead of silently dropping them.
2026-06-15 14:38:14 +01:00
09d2fbafdc
feat: default iam groups on org create
...
Root user is given the `Default Users` and `Root User` permission groups on org creation.
2026-06-15 11:26:22 +01:00
dad23733e8
feat: group name unique per org
...
Instead of group names being wholly unique (enforced by the db), group names are unique within the org (enforced by endpoint logic).
2026-06-15 11:10:02 +01:00
da6bd22199
minor: typo
2026-06-12 16:44:45 +01:00
8b89595531
feat: group invitation response model
ci / lint_and_test (push) Successful in 14s
2026-06-12 10:02:35 +01:00
1a29da73c2
feat: use of service model dependency
2026-06-12 09:37:55 +01:00
f06b19340c
feat: remove group permission check if exists
2026-06-12 09:30:34 +01:00
2b923becf0
feat: perm search ignores empty strings
2026-06-11 16:23:02 +01:00
1a6a6ad97d
fix: remove trailing slash and plurals in paths
2026-06-11 16:14:22 +01:00
c74e895bf1
feat: return org summary when creating group
2026-06-11 16:07:31 +01:00
5d122a7690
feat: fully defined response code descriptions
...
Only done on three endpoints. This is a lot of repeated text.
2026-06-11 16:02:51 +01:00
c2e035dede
feat: more accurate status codes
...
403 Forbidden replacing many 401 Unauthorized usages.
2026-06-11 14:58:05 +01:00
dd0478d5e7
docs: iam router
...
Issue: #13
2026-06-11 09:36:51 +01:00
61e186a727
docs: iam router (incomplete)
...
ci / lint_and_test (push) Successful in 13s
Issue: #13
2026-06-10 16:49:37 +01:00
ec41d1ed05
feat: caor docs and response model
ci / lint_and_test (push) Successful in 13s
2026-06-10 16:16:56 +01:00
0b521414b3
feat: add group user by id restriction
...
ci / lint_and_test (push) Successful in 14s
Adding by ID can only be done for existing org members
2026-06-10 14:48:22 +01:00
ec572aa4c1
feat: sua expiry handling
2026-06-10 14:14:22 +01:00
294baadcb7
feat: more ids returned on endpoints
...
ci / lint_and_test (push) Successful in 14s
Issue: #23
2026-06-10 13:48:59 +01:00
939abaefe9
feat: improved caor request model
...
ci / lint_and_test (push) Successful in 14s
Issue: #23
2026-06-10 09:32:02 +01:00
768a3881ef
feat: sua added to group invitations
...
ci / lint_and_test (push) Successful in 13s
Issue: #23
2026-06-09 16:52:22 +01:00
a215d11df9
feat: id returned with permission details
2026-06-09 14:04:21 +01:00
4ff9edf6d1
feat: schema mixins moved to project level
...
Resolves circular dependency issues.
2026-06-09 13:17:31 +01:00
c452c6c0d5
feat: delete endpoint queries
...
ci / lint_and_test (push) Failing after 5s
Delete endpoints do not fully support bodies. Queries used instead.
Tests added.
Resolves #20
2026-06-09 09:29:14 +01:00
e9b272811f
feat: all unique constraints tested
2026-06-08 16:05:20 +01:00
c689ac1e10
minor: ruff formatter
...
All changes are either:
- Correcting tabs
- Adding/removing line breaks
- Adding trailing commas
2026-06-08 15:31:37 +01:00
b2e5dd2ebb
feat: sqlite integrity error handle
2026-06-08 15:24:42 +01:00
903b24d17d
ruff: config and initial run
2026-06-08 10:45:38 +01:00
f600664789
tests: improved coverage
2026-06-05 09:10:55 +01:00
c8024daa97
minor: renames and error messages
2026-06-04 14:53:35 +01:00
c9cd75a7ad
fix: missing src in imports
2026-06-03 09:15:25 +01:00
65a9514be6
fix: drop superfluous column in usergroups
...
Group org is assigned in the Group table. Also assigning it in the UserGroups table complicated relationship creation and it was never used.
2026-06-02 16:11:52 +01:00
b8b5b6dbd3
fix: permission search typing
2026-06-02 15:55:50 +01:00
ae0181c3ff
fix: create permission endpoint
...
Verifies service exists before attaching permission.
Response built manually because calculated properties are not handled by .__dict()__
Request model uses Service ID mixin.
Service ID mixin verifies ID > 0
2026-06-02 15:36:05 +01:00
5d1606aa9d
fix: permission search changed to post
...
Get requests cannot have bodies.
2026-06-02 15:13:00 +01:00
511480dffe
fix: wrong org dependency in get perms
2026-06-02 14:44:30 +01:00
3052565258
fix: userschema config
...
Required for Pydantic to map a SQLAlchemy model to it.
2026-06-02 14:37:07 +01:00
2f4b7b8733
fix: missing org id in req
2026-06-02 14:21:05 +01:00
5ec1f2272a
minor: >0 perm & group id in bodies
2026-06-02 14:18:04 +01:00
c6542f48c1
fix: multiple inverted conditionals
2026-06-02 13:52:52 +01:00
5104257a50
fix: missing org id in req body
2026-06-02 13:50:13 +01:00
3ea782d68f
minor: min length on group name post
2026-06-02 13:37:42 +01:00
7d109f0f73
fix: inverted conditional in get group users
2026-06-02 12:22:36 +01:00
da5099e172
minor: global exception names
2026-05-29 09:50:09 +01:00