Commit graph

62 commits

Author SHA1 Message Date
d5854cc2c4 feat: user and org defaults
All checks were successful
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
All checks were successful
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
All checks were successful
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
All checks were successful
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)
All checks were successful
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
All checks were successful
ci / lint_and_test (push) Successful in 13s
2026-06-10 16:16:56 +01:00
0b521414b3 feat: add group user by id restriction
All checks were successful
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
All checks were successful
ci / lint_and_test (push) Successful in 14s
Issue: #23
2026-06-10 13:48:59 +01:00
939abaefe9 feat: improved caor request model
All checks were successful
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
All checks were successful
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
Some checks failed
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