Commit Graph

18 Commits

Author SHA1 Message Date
beo3000 32c48d2bc3 fix namespaces
add AccessDenied Page
2025-12-25 18:15:21 +01:00
beo3000 a1bad43d88 Add IEmailService interface + StubEmailService
- IEmailService in Domain/Interfaces for membership notifications
- StubEmailService in Infrastructure/Services logs instead of sending
- TODO comments for future SMTP implementation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-25 17:57:16 +01:00
beo3000 68c6c30a2a Add ClubInvitation entity for invitation links
- ClubInvitation: Token, ExpiresAt, MaxUses, UsedCount
- Unique index on Token
- DbSet + EF Configuration
- Migration applied

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-25 17:49:50 +01:00
beo3000 b70ddcc6ef Add MembershipStatus enum + extend UserProfileClub
- MembershipStatus: Pending, Approved, Rejected
- UserProfileClub: Status, RejectionReason, ApprovedAt/ById, RejectedAt/ById
- Migration for new columns

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-25 17:41:26 +01:00
beo3000 51600596c2 Add Expense Pages (D4) 2025-12-24 17:23:31 +01:00
beo3000 c3839d2363 fix permissions;
Summary of all fixes

  3 files changed:

  1. src/Koogle.Application/Services/UserService.cs:140-171
    - GetByIdentityUserIdAsync now includes .Include(p => p.Clubs) and maps ClubMemberships
  2. src/Koogle.Web/Store/AuthState/AuthEffects.cs:53-73
    - Merges club-specific roles from ClubMemberships into AuthState roles
  3. src/Koogle.Infrastructure/Security/ClubRoleRequirement.cs:17-114
    - Changed ClubRoleHandler to extend AuthorizationHandler<ClubRoleRequirement> (no resource)
    - Reads current_club_id from claims to determine club context
    - Added ClubRoleResourceHandler for resource-based auth (explicit clubId)
  4. src/Koogle.Infrastructure/DependencyInjection.cs:72
    - Registered ClubRoleResourceHandler

  The [Authorize(Policy = "ClubViewer")] attribute now uses current_club_id claim set during login to check club roles.
2025-12-24 15:44:52 +01:00
beo3000 0bc0de2215 edit users 2025-12-23 17:57:16 +01:00
beo3000 b4818efc1a added club relations to datamodel
mod UserService
2025-12-23 15:05:22 +01:00
beo3000 5c6860a4ad mod DI Containers 2025-12-23 11:20:18 +01:00
beo3000 57146a382a add comments 2025-12-22 21:42:25 +01:00
beo3000 9fa6958933 Repository Implementation 2025-12-22 21:30:20 +01:00
beo3000 8a92555ce9 add authorizazion und authentication 2025-12-21 19:31:54 +01:00
beo3000 b8e18a52b3 seed super-admin 2025-12-21 14:58:46 +01:00
beo3000 db0a4b7c00 dev authorization 2025-12-21 14:42:26 +01:00
beo3000 32757a7668 fix db model and create initial db 2025-12-21 12:25:47 +01:00
beo3000 3024ed85d2 fix db model 2025-12-21 12:03:46 +01:00
beo3000 d653225c5f fix datamodel 2025-12-21 11:42:59 +01:00
beo3000 6c43c85cb4 mod project structure
ef migrations
2025-12-21 09:59:40 +01:00