Files
boc/backend/middleware/tenant.go
T

44 lines
1.0 KiB
Go
Raw Normal View History

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
}