ff9c8d2d64
feat: add UI-level authorization helpers
...
Implement MvWeb.Authorization module with can?/3 and can_access_page?/2
functions for conditional rendering in LiveView templates.
- can?/3 supports both resource atoms and record structs with scope checking
- can_access_page?/2 checks page access permissions
- All functions use PermissionSets module for consistency with backend
- Graceful handling of nil users and invalid permission sets
- Comprehensive test coverage with 17 test cases
2026-01-08 16:16:53 +01:00
6311eebb0c
fix linting
continuous-integration/drone/push Build is passing
2026-01-08 11:41:24 +01:00
b0623b20ed
style: remove navbar fixed width
2026-01-08 11:40:22 +01:00
47c46eaebf
i18n: update translations
2026-01-08 11:40:04 +01:00
0ccb1c7d79
fix: add label for membership fee type
2026-01-08 11:39:16 +01:00
e565d1748e
test: add tests for atomic member field visibility updates
2026-01-08 11:38:41 +01:00
b139d85791
fix: add missing event handler for member field visibility updates
2026-01-08 11:37:39 +01:00
30c43271ea
refactor: remove code duplication using helper modules
2026-01-08 11:37:07 +01:00
4a1042ab1a
feat: add atomic update for single member field visibility
2026-01-08 11:28:27 +01:00
9af7381843
refactor: extract helper modules to remove code duplication
2026-01-08 11:22:44 +01:00
36776f8e28
fix tests and linting
2026-01-07 18:11:36 +01:00
4a6e7cf51a
feat: show only edit or list view in settings
2026-01-07 18:11:07 +01:00
38d106a69e
fix: exit date as default hidden column
2026-01-07 12:14:41 +01:00
cbe05c5ca8
fix: cath all rauthy errors
2026-01-07 12:03:58 +01:00
df8c6a1854
Merge branch 'main' into feature/223_memberfields_settings
continuous-integration/drone/push Build is failing
2026-01-07 11:42:54 +01:00
ea29fbb58b
Merge pull request 'Reduce member fields closes #273 ' ( #319 ) from feature/273_member_fields into main
...
continuous-integration/drone/push Build is passing
Reviewed-on: #319
2026-01-07 11:11:38 +01:00
909d4af2a2
Merge branch 'main' into feature/223_memberfields_settings
2026-01-07 11:11:02 +01:00
d461f75256
Merge branch 'main' into feature/273_member_fields
continuous-integration/drone/push Build is passing
2026-01-07 11:03:05 +01:00
ee3e1745e0
fix linting errors
continuous-integration/drone/push Build is failing
2026-01-07 10:59:20 +01:00
5541cc88d5
Merge pull request 'Adds implementation plan for CSV import closes #287 ' ( #314 ) from feature/287_plan_csv_import into main
...
continuous-integration/drone/push Build is passing
Reviewed-on: #314
Reviewed-by: moritz <moritz@noreply.git.local-it.org>
2026-01-07 10:23:04 +01:00
0c8a255476
Merge branch 'main' into feature/273_member_fields
continuous-integration/drone/push Build is failing
2026-01-07 10:22:18 +01:00
f9da798b00
Merge branch 'main' into feature/287_plan_csv_import
continuous-integration/drone/push Build is passing
2026-01-07 09:58:16 +01:00
a5a1cb7fdd
style: remove display name helper in member overview for UX
continuous-integration/drone/push Build is failing
2026-01-07 09:55:06 +01:00
9f97515d74
chore: movs display name helper to won helper module
2026-01-07 09:54:37 +01:00
29a953c038
fix: prevent migration rollback failure when NULL values exist
2026-01-07 09:52:40 +01:00
e9ee4ce21b
docs: adds higher priority to custom field import
continuous-integration/drone/push Build is passing
2026-01-07 09:35:32 +01:00
e1211fcf0f
fix linting
continuous-integration/drone/push Build is passing
2026-01-07 09:05:51 +01:00
5253286722
Merge pull request 'PermissionSets Elixir Module (Hardcoded Permissions) closes #323 ' ( #324 ) from feature/323_permissionsets into main
...
continuous-integration/drone/push Build is failing
Reviewed-on: #324
2026-01-06 22:20:18 +01:00
18ec4bfd16
fix: add missing /custom_field_values/:id page to read_only and normal_user
...
continuous-integration/drone/push Build is passing
- Add /custom_field_values/:id to read_only pages (users can view list, should also view details)
- Add /custom_field_values/:id to normal_user pages
- Refactor tests to reduce duplication (use for-comprehension for structure tests)
- Add tests for invalid input types in valid_permission_set?/1
- Update @spec for valid_permission_set?/1 to accept any() type
2026-01-06 22:17:33 +01:00
7845117fad
refactor: improve error handling and documentation in PermissionSets
...
continuous-integration/drone/push Build is passing
- Add explicit ArgumentError for invalid permission set names with helpful message
- Soften performance claim in documentation (intended to be constant-time)
- Add tests for error handling
- Improve maintainability with guard clause for invalid inputs
2026-01-06 21:55:52 +01:00
9b0d022767
fix: add missing /profile page to read_only and normal_user permission sets
...
Both permission sets allow User:update :own, so users should be able
to access their profile page. This makes the implementation consistent
with the documentation and the logical permission model.
2026-01-06 21:55:13 +01:00
4bd08e85bb
fix: use Enum.empty? instead of != [] to fix type warning
...
continuous-integration/drone/push Build is passing
Replace comparison with empty list using Enum.empty?/1 to satisfy
type checker and avoid redundant comparison warning
2026-01-06 21:35:59 +01:00
19a20635a7
docs: update documentation to use CustomFieldValue/CustomField instead of Property/PropertyType
2026-01-06 21:34:07 +01:00
3a0fb4e84f
feat: implement PermissionSets module with all 4 permission sets
...
- Add types for scope, action, resource_permission, permission_set
- Implement get_permissions/1 for all 4 sets (own_data, read_only, normal_user, admin)
- Implement valid_permission_set?/1 for string and atom validation
- Implement permission_set_name_to_atom/1 with error handling
2026-01-06 21:33:39 +01:00
634d3bd446
Merge pull request 'Authorization Domain and Role Resource closes #321 ' ( #322 ) from feature/321_authorization_domain into main
...
continuous-integration/drone/push Build is passing
Reviewed-on: #322
2026-01-06 19:22:56 +01:00
3265468bd6
test: update role tests for is_system_role API change
...
continuous-integration/drone/push Build is passing
Use Ash.Changeset.force_change_attribute to set is_system_role in tests
since it's no longer settable via public API. Remove unused nil clause
from error_message helper.
2026-01-06 19:04:05 +01:00
5f13901ca5
security: remove is_system_role from public API
...
Remove is_system_role from accept lists in create_role and update_role
actions. This field should only be set via seeds or internal actions to
prevent users from creating unkillable roles through the public API.
2026-01-06 19:04:03 +01:00
73763b1f58
refactor: improve error_message test helper robustness
...
continuous-integration/drone/push Build is passing
Use Enum.reject for nil field case to explicitly filter errors
without field. Update test to use :is_system_role field since
validation error includes field.
2026-01-06 18:44:04 +01:00
ce1d5790a3
refactor: squash migrations into single authorization domain migration
...
Combine initial authorization migration with UUIDv7 update into
one migration. Migration now creates roles table with UUIDv7
default and explicit on_delete: :restrict FK constraint.
2026-01-06 18:37:39 +01:00
c6a766377a
refactor: improve error_message test helper
...
Add pattern matching for nil field case to handle errors
without specific field (e.g., system role deletion).
2026-01-06 18:37:38 +01:00
deacc43030
docs: document FK constraint behavior for role relationship
...
Add comment explaining on_delete: :restrict behavior for
users.role_id foreign key constraint.
2026-01-06 18:37:37 +01:00
f63405052f
feat: add get_role action to Authorization domain
...
Add get_role action for retrieving single role by ID through
code interface.
2026-01-06 18:37:35 +01:00
557eb4d27d
refactor: simplify system role deletion validation
...
Remove redundant action_type check since validation already
runs only on destroy actions. Add field to error for better
error handling.
2026-01-06 18:37:34 +01:00
9bb0fe5e37
test: add unit tests for Role validations
...
Add tests for permission_set_name validation, system role
deletion protection, and name uniqueness constraints.
2026-01-06 18:14:20 +01:00
12c08cabee
docs: clean up PermissionSets documentation
...
Remove issue number references from moduledoc
2026-01-06 18:14:19 +01:00
402a78dd0a
refactor: update migration for UUIDv7 and explicit FK constraint
...
- Add on_delete: :restrict to users.role_id foreign key
- Update roles.id to use uuid_generate_v7() default
- Regenerate resource snapshots
2026-01-06 18:14:18 +01:00
82ec4e565a
refactor: use UUIDv7 and improve Role validations
...
- Change id from uuid_primary_key to uuid_v7_primary_key
- Replace custom validation with built-in one_of validation
- Add explicit on_delete: :restrict for users foreign key
- Update postgres references configuration
2026-01-06 18:14:16 +01:00
b569612a63
feat: add resource snapshots for roles and users
...
continuous-integration/drone/push Build is passing
Add Ash resource snapshots generated during migration creation.
2026-01-06 17:18:45 +01:00
851d63f626
feat: add authorization domain migration
...
Create roles table and add role_id to users table with indexes
and foreign key constraints.
2026-01-06 17:18:34 +01:00
90c32c2afd
feat: add role relationship to User resource
...
Add belongs_to :role relationship to User resource and register
Authorization domain in config.
2026-01-06 17:18:33 +01:00