Files
telecom-platform/apps/carrier-connector/internal/services/tenant_user.go
T
nutcas3 17e31d7977 refactor: Refactor tenant and rate plan services with improved code organization and currency integration updates
- Update RatePlanCurrencyIntegrator to use billingService.ConvertAmount with CurrencyConversionRequest struct instead of exchangeService
- Remove calculateOverageCost method from rateplan_methods.go (moved or deprecated)
- Rename tenant variable to newTenant in CreateTenant to avoid shadowing
- Extract tenant user methods from tenant_user.go to new tenant_user_methods.go file
2026-05-02 03:18:45 +03:00

65 lines
1.8 KiB
Go

package services
import (
"context"
"errors"
"github.com/nutcas3/telecom-platform/apps/carrier-connector/internal/tenant"
)
// HasPermission checks if user has permission
func (s *TenantServiceImpl) HasPermission(ctx context.Context, tenantID, userID, permission string) (bool, error) {
// Get tenant user
user, err := s.repository.GetTenantUser(ctx, tenantID, userID)
if err != nil {
return false, err
}
// Simple permission check based on role
switch user.Role {
case tenant.TenantRoleOwner, tenant.TenantRoleAdmin:
return true, nil
case tenant.TenantRoleManager:
return permission != "delete", nil
case tenant.TenantRoleUser:
return permission == "read", nil
default:
return false, nil
}
}
func (s *TenantServiceImpl) validateCreateTenantUserRequest(req *tenant.CreateTenantUserRequest) error {
if req.TenantID == "" {
return errors.New("tenant ID is required")
}
if req.UserID == "" {
return errors.New("user ID is required")
}
if req.Email == "" {
return errors.New("email is required")
}
if req.Role == "" {
return errors.New("role is required")
}
return nil
}
func (s *TenantServiceImpl) convertTenantSettings(settings *tenant.TenantSettings) *tenant.TenantSettings {
if settings == nil {
return &tenant.TenantSettings{}
}
return &tenant.TenantSettings{
DefaultCurrency: settings.DefaultCurrency,
SupportedCurrencies: settings.SupportedCurrencies,
EnableMultiCurrency: settings.EnableMultiCurrency,
EnableAdvancedAnalytics: settings.EnableAdvancedAnalytics,
EnableAPIAccess: settings.EnableAPIAccess,
EnableWebhooks: settings.EnableWebhooks,
Require2FA: settings.Require2FA,
SessionTimeout: settings.SessionTimeout,
DataRetentionDays: settings.DataRetentionDays,
ComplianceRegions: settings.ComplianceRegions,
}
}