39 lines
1.2 KiB
Go
39 lines
1.2 KiB
Go
package host
|
||
|
||
import (
|
||
"context"
|
||
"strings"
|
||
|
||
"hyapp/pkg/xerr"
|
||
)
|
||
|
||
const (
|
||
CapabilityManagerCenter = "manager_center"
|
||
CapabilityManagerResourceGrant = "manager_resource_grant"
|
||
)
|
||
|
||
// CheckBusinessCapability 是 App/H5 业务入口的服务端身份边界。
|
||
// 首版经理中心只认 active Agency owner,不把客户端自报角色或普通 Agency 成员当作授权依据。
|
||
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.HasActiveAgencyOwner(ctx, actorUserID)
|
||
if err != nil {
|
||
return false, "", err
|
||
}
|
||
if !ok {
|
||
return false, "active_agency_owner_required", nil
|
||
}
|
||
return true, "", nil
|
||
default:
|
||
return false, "", xerr.New(xerr.InvalidArgument, "business capability is invalid")
|
||
}
|
||
}
|