Files
EdgeAPI/internal/rpc/services/service_base.go

80 lines
1.9 KiB
Go
Raw Normal View History

2020-09-16 20:29:18 +08:00
package services
2020-11-24 15:02:44 +08:00
import (
"context"
"github.com/TeaOSLab/EdgeAPI/internal/errors"
rpcutils "github.com/TeaOSLab/EdgeAPI/internal/rpc/utils"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
)
2020-09-16 20:29:18 +08:00
type BaseService struct {
}
2020-11-24 15:02:44 +08:00
// 校验管理员
func (this *BaseService) ValidateAdmin(ctx context.Context, reqAdminId int64) (adminId int64, err error) {
_, reqUserId, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
if err != nil {
return
}
if reqAdminId > 0 && reqUserId != reqAdminId {
return 0, this.PermissionError()
}
return reqUserId, nil
}
2020-11-24 15:02:44 +08:00
// 校验管理员和用户
func (this *BaseService) ValidateAdminAndUser(ctx context.Context, reqUserId int64) (adminId int64, userId int64, err error) {
2020-11-24 15:02:44 +08:00
reqUserType, reqUserId, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin, rpcutils.UserTypeUser)
if err != nil {
return
}
adminId = int64(0)
userId = int64(0)
switch reqUserType {
case rpcutils.UserTypeAdmin:
adminId = reqUserId
if adminId <= 0 {
err = errors.New("invalid 'adminId'")
return
}
2020-11-24 15:02:44 +08:00
case rpcutils.UserTypeUser:
userId = reqUserId
if userId <= 0 {
err = errors.New("invalid 'userId'")
return
}
// 校验权限
if reqUserId > 0 && reqUserId != userId {
err = this.PermissionError()
return
}
default:
err = errors.New("invalid user type")
2020-11-24 15:02:44 +08:00
}
2020-11-24 15:02:44 +08:00
return
}
// 校验节点
func (this *BaseService) ValidateNode(ctx context.Context) (nodeId int64, err error) {
_, nodeId, err = rpcutils.ValidateRequest(ctx, rpcutils.UserTypeNode)
return
}
2020-11-24 15:02:44 +08:00
// 返回成功
func (this *BaseService) Success() (*pb.RPCSuccess, error) {
2020-11-24 17:36:47 +08:00
return &pb.RPCSuccess{}, nil
2020-11-24 15:02:44 +08:00
}
// 返回数字
2020-11-24 17:36:47 +08:00
func (this *BaseService) SuccessCount(count int64) (*pb.RPCCountResponse, error) {
2020-11-24 15:02:44 +08:00
return &pb.RPCCountResponse{Count: count}, nil
}
// 返回权限错误
func (this *BaseService) PermissionError() error {
return errors.New("Permission Denied")
}