package middleware import ( "context" "net/http" "boc/auth" ) // TenantContextKey är nyckeln för tenant_id i context type TenantContextKey struct{} // GetTenantID hämtar tenant_id från användarens claims func GetTenantID(ctx context.Context) string { claims, ok := auth.FromContext(ctx) if !ok { return "" } return claims.OrgID } // TenantIsolation middleware lägger till tenant_id i context func TenantIsolation(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { tenantID := GetTenantID(r.Context()) if tenantID == "" { // Om ingen tenant finns, använd default tenantID = "11111111-1111-1111-1111-111111111111" } ctx := context.WithValue(r.Context(), TenantContextKey{}, tenantID) next.ServeHTTP(w, r.WithContext(ctx)) }) } // GetTenantFromContext hämtar tenant_id från context func GetTenantFromContext(ctx context.Context) string { tenantID, ok := ctx.Value(TenantContextKey{}).(string) if !ok { return "" } return tenantID }