Files
work-club-manager/backend/WorkClub.Api/Endpoints/Clubs/ClubEndpoints.cs
WorkClub Automation 18be0fb183 fix: exempt /api/clubs/me from tenant validation
- Add path exemption in TenantValidationMiddleware for /api/clubs/me
- Change authorization policy from RequireMember to RequireViewer
- Fix KEYCLOAK_CLIENT_ID in docker-compose.yml (workclub-app)
- Resolves frontend chicken-and-egg problem for club discovery

Verified:
- /api/clubs/me returns 200 OK without X-Tenant-Id header
- /api/tasks still requires X-Tenant-Id (400 Bad Request)
- Other endpoints unaffected
2026-03-05 21:32:34 +01:00

38 lines
1.1 KiB
C#

using Microsoft.AspNetCore.Http.HttpResults;
using WorkClub.Api.Services;
using WorkClub.Application.Clubs.DTOs;
namespace WorkClub.Api.Endpoints.Clubs;
public static class ClubEndpoints
{
public static void MapClubEndpoints(this IEndpointRouteBuilder app)
{
var group = app.MapGroup("/api/clubs");
group.MapGet("/me", GetMyClubs)
.RequireAuthorization("RequireViewer")
.WithName("GetMyClubs");
group.MapGet("/current", GetCurrentClub)
.RequireAuthorization("RequireMember")
.WithName("GetCurrentClub");
}
private static async Task<Ok<List<ClubListDto>>> GetMyClubs(ClubService clubService)
{
var result = await clubService.GetMyClubsAsync();
return TypedResults.Ok(result);
}
private static async Task<Results<Ok<ClubDetailDto>, NotFound>> GetCurrentClub(ClubService clubService)
{
var result = await clubService.GetCurrentClubAsync();
if (result == null)
return TypedResults.NotFound();
return TypedResults.Ok(result);
}
}