2026-06-15 19:17:09 +08:00

39 lines
1.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package host
import (
"context"
"strings"
"hyapp/pkg/xerr"
)
const (
CapabilityManagerCenter = "manager_center"
CapabilityManagerResourceGrant = "manager_resource_grant"
)
// CheckBusinessCapability 是 App/H5 业务入口的服务端身份边界。
// 经理中心只认 manager_profiles 中的 active 经理身份不把客户端自报角色、Agency owner 或普通 BD 当作授权依据。
func (s *Service) CheckBusinessCapability(ctx context.Context, actorUserID int64, capability string) (bool, string, error) {
if s.repository == nil {
return false, "", xerr.New(xerr.Unavailable, "host repository is not configured")
}
if actorUserID <= 0 {
return false, "", xerr.New(xerr.InvalidArgument, "actor_user_id is required")
}
capability = strings.ToLower(strings.TrimSpace(capability))
switch capability {
case CapabilityManagerCenter, CapabilityManagerResourceGrant:
ok, err := s.repository.HasActiveManagerProfile(ctx, actorUserID)
if err != nil {
return false, "", err
}
if !ok {
return false, "active_manager_required", nil
}
return true, "", nil
default:
return false, "", xerr.New(xerr.InvalidArgument, "business capability is invalid")
}
}