Files
boc/backend/middleware/tenant.go
T
Bernt 78b57273e2 security: Add proper authentication, RBAC, and tenant isolation
- Add password hashing with bcrypt
- Add AuthService with proper login
- Add password strength validation
- Add RBAC middleware (AdminOnly, ManagerOrAdmin)
- Add tenant isolation middleware
- Update CRM handler with tenant filtering
- Add JWT fallback for development mode
- Add user context helpers
- Build successful
2026-08-10 12:52:48 +00:00

44 lines
1.0 KiB
Go

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
}