462bc21ec3
fix(migration): use INSERT..SELECT for system user role_id in CI
...
continuous-integration/drone/push Build is passing
Avoid nil/empty-string UUID when repo().one lags after role insert.
2026-01-27 17:47:05 +01:00
92ee7fcc63
fix(seeds): use :update_internal for system user admin-role
...
continuous-integration/drone/push Build is failing
:update is blocked for system-actor user; use :update_internal in bootstrap.
2026-01-27 17:39:04 +01:00
a10c770ca7
chore(migration): ensure_system_actor_user_exists
...
Use admin_role_id, consistent UUID and timestamps.
2026-01-27 17:39:04 +01:00
acb33b9f3b
Ensure system actor user exists via migration
...
Creates user system@mila.local with Admin role if missing. Idempotent;
guarantees system actor in production without relying on seeds.
2026-01-27 17:39:04 +01:00
e92c98b559
refactor: fix review issues - member_count aggregate, migration down, docs, actor handling
continuous-integration/drone/push Build is passing
2026-01-27 17:09:07 +01:00
6db64bf996
feat: add groups resource #371
continuous-integration/drone/push Build is failing
2026-01-27 16:03:21 +01:00
2d446f63ea
Add NOT NULL constraint to users.role_id and optimize default_role_id
...
continuous-integration/drone/push Build is passing
- Add database-level NOT NULL constraint for users.role_id
- Update SystemActor tests to verify NOT NULL constraint enforcement
- Add process dictionary caching for default_role_id/0 to reduce DB queries
2026-01-25 17:04:48 +01:00
a9b1d794d2
fix: bind role_name variable before using in Ash.Query.filter
...
Avoid macro pinning issues by binding role_data.name to role_name
before using it in the filter query.
2026-01-25 13:42:28 +01:00
e982271880
fix: improve migration to create 'Mitglied' role if missing
...
Make migration more robust by creating the 'Mitglied' role if it doesn't
exist, ensuring it works regardless of seed execution order.
2026-01-25 13:42:19 +01:00
9557d8ae6b
Update seeds to create all 5 authorization roles
2026-01-24 19:16:35 +01:00
c7e0181e02
Add migration to assign 'Mitglied' role to existing users
2026-01-24 19:14:51 +01:00
079d270768
Fix authorization bypass in seeds and validations
...
continuous-integration/drone/push Build is passing
- Add authorize?: false to all bootstrap operations in seeds.exs
- Fix user-linking validation to respect authorize? context flag
- Prevents authorization errors during initial setup when no actor exists yet
2026-01-23 02:08:11 +01:00
ea399612be
Make system actor email configurable via SYSTEM_ACTOR_EMAIL
...
Allow system user email to be configured via environment variable
with fallback to default 'system@mila.local'
2026-01-21 08:02:35 +01:00
d993bd3913
Create system user in seeds
...
Add system@mila.local user with admin role for systemic operations.
This user is used by SystemActor helper for mandatory side effects.
2026-01-20 22:09:17 +01:00
d9b659e5ea
fix: linting + tests
2026-01-19 14:09:19 +01:00
bc4bcd0089
fix: change creation of admin user
2026-01-19 13:40:28 +01:00
145a76348c
Pass actor parameter in seeds and update test setup
...
Ensure cycle generation in seeds uses admin actor and update test
to use global admin_user from ConnCase setup.
2026-01-13 15:17:05 +01:00
4fffeeaaa0
Fix: Seeds use admin actor instead of NoActor bypass
...
This ensures seeds work correctly with the new fail-closed NoActor
policy in production, using proper authorization instead of bypass.
2026-01-13 15:01:55 +01:00
922f9f93d0
Merge branch 'main' into feature/223_memberfields_settings
continuous-integration/drone/push Build is passing
2026-01-12 13:15:40 +01:00
2f03f7c00c
feat: assign admin role to admin user in seeds
...
- Create Admin role if it doesn't exist
- Assign Admin role to admin@mv.local user
- Remove separate create_admin_role script (integrated into seeds)
2026-01-08 16:16:54 +01:00
36776f8e28
fix tests and linting
2026-01-07 18:11:36 +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
29a953c038
fix: prevent migration rollback failure when NULL values exist
2026-01-07 09:52:40 +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
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
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
7188315577
tests: fixes tests
2026-01-02 16:20:39 +01:00
17540c6b1d
feat: removes phoen number as member field and makes name optional
2026-01-02 16:19:06 +01:00
a8ea121800
Refactor cycle generator and update translations
...
continuous-integration/drone/push Build is passing
Extract error handling into separate functions to reduce nesting depth.
2025-12-26 21:01:17 +01:00
a03056e6ae
Make seed script deterministic and idempotent for fee type assignments
...
Fix update action name from :update to :update_member for Member resource
2025-12-22 16:56:12 +01:00
239d784f3c
Update seeds: member without fee type, cycles with various statuses
...
Add member without membership fee type. Generate cycles for members
with fee types and set different statuses: all paid, all unpaid, and
mixed (paid/unpaid/suspended). Update tests accordingly.
2025-12-18 15:11:03 +01:00
f25e198b0e
Update cycle button styling and text
...
Make cycle button match PaymentFilterComponent and Columns button style.
Show 'Current Cycle Payment Status' or 'Last Cycle Payment Status'
based on active state. Button shows active state when current cycle
is selected.
2025-12-18 15:11:03 +01:00
effb710741
Assign membership fee types to all seed members
...
Ensure all members created in seeds are assigned to a membership fee type
using round-robin distribution. Add tests to verify all members have fee
types and each fee type has at least one member.
2025-12-18 15:11:03 +01:00
098b3b0a2a
Remove paid field from members
...
Remove paid field from Member resource, database migration,
tests, seeds, and UI. This field is no longer needed as payment
status is now tracked via membership fee cycles.
2025-12-18 15:11:02 +01:00
d75e2b7a46
feat: add 4 example membership fee types to seed script
continuous-integration/drone/push Build is passing
2025-12-18 11:54:23 +01:00
25cc41b02e
feat: implement automatic cycle generation for members
...
- Add CycleGenerator module with advisory lock mechanism
- Add SetMembershipFeeStartDate change for auto-calculation
- Extend Settings with include_joining_cycle and default_membership_fee_type_id
- Add scheduled job skeleton for future Oban integration
2025-12-16 16:40:11 +01:00
8bfa5b7d1d
chore: remove immutable from custom fields
2025-12-16 14:35:00 +01:00
ebbf347e42
fix(membership-fees): add DB constraints for enum and decimal precision
continuous-integration/drone/push Build is passing
2025-12-11 18:46:48 +01:00
4d1b33357e
feat(membership-fees): add database schema and Ash domain structure
2025-12-11 18:46:48 +01:00
265e976d94
fix: simplify JSONB extraction - remove redundant operators
...
- Replace 4 LIKE checks with 2 in build_custom_field_filter
- Simplify CASE blocks in migration trigger functions
- ->> operator always returns text, no need for -> + ::text fallback
- Performance improvement: 50% fewer LIKE operations
2025-12-11 13:49:05 +01:00
c2302c5861
chore: adds migration for ts vector custom field
2025-12-11 13:44:30 +01:00
c8968636a8
feat: remove birth_date field from Member resource
...
continuous-integration/drone/push Build is passing
Users who need birthday data can use custom fields instead.
Closes #161
2025-12-02 14:58:50 +01:00
d10f2ecc90
chore: adds migration for member field visibility
2025-12-02 14:16:02 +01:00
f9ff6d3d2d
fix: remove unused branch in seeds and fixed translations
continuous-integration/drone/push Build is passing
2025-12-01 10:54:12 +01:00
37553d8d6c
feat: adds settings live view and updated seeds
2025-12-01 10:42:10 +01:00
193618eace
chore: adds settings ressource and migration
2025-12-01 10:42:10 +01:00
b509dc4ea3
chore: add migration for show in overview flag
2025-12-01 08:50:06 +01:00
2af23f4042
feat: custom field deletion
2025-11-20 15:04:08 +01:00
edf8b2b79e
feat: add custom field slug
2025-11-20 14:23:25 +01:00
7f77eb7023
feat: Add German translations and extended seeds for custom fields
2025-11-13 18:52:24 +01:00