mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 16:00:24 +08:00 
			
		
		
		
	增加API令牌相关API
This commit is contained in:
		@@ -120,3 +120,13 @@ func (this *ApiTokenDAO) CreateAPIToken(tx *dbs.Tx, nodeId string, secret string
 | 
			
		||||
	err := this.Save(tx, op)
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// FindAllEnabledAPITokens 读取API令牌
 | 
			
		||||
func (this *ApiTokenDAO) FindAllEnabledAPITokens(tx *dbs.Tx, role string) (result []*ApiToken, err error) {
 | 
			
		||||
	_, err = this.Query(tx).
 | 
			
		||||
		Attr("role", role).
 | 
			
		||||
		State(ApiTokenStateEnabled).
 | 
			
		||||
		Slice(&result).
 | 
			
		||||
		FindAll()
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -13,6 +13,11 @@ import (
 | 
			
		||||
 | 
			
		||||
// 注册服务
 | 
			
		||||
func (this *APINode) registerServices(server *grpc.Server) {
 | 
			
		||||
	{
 | 
			
		||||
		instance := this.serviceInstance(&services.APITokenService{}).(*services.APITokenService)
 | 
			
		||||
		pb.RegisterAPITokenServiceServer(server, instance)
 | 
			
		||||
		this.rest(instance)
 | 
			
		||||
	}
 | 
			
		||||
	{
 | 
			
		||||
		instance := this.serviceInstance(&services.AdminService{}).(*services.AdminService)
 | 
			
		||||
		pb.RegisterAdminServiceServer(server, instance)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										40
									
								
								internal/rpc/services/service_api_token.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								internal/rpc/services/service_api_token.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
			
		||||
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
 | 
			
		||||
 | 
			
		||||
package services
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeAPI/internal/db/models"
 | 
			
		||||
	rpcutils "github.com/TeaOSLab/EdgeAPI/internal/rpc/utils"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// APITokenService API令牌服务
 | 
			
		||||
type APITokenService struct {
 | 
			
		||||
	BaseService
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// FindAllEnabledAPITokens 获取API令牌
 | 
			
		||||
func (this *APITokenService) FindAllEnabledAPITokens(ctx context.Context, req *pb.FindAllEnabledAPITokensRequest) (*pb.FindAllEnabledAPITokensResponse, error) {
 | 
			
		||||
	// 这里为了安全只允许通过API节点信息获取
 | 
			
		||||
	_, _, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAPI)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var tx = this.NullTx()
 | 
			
		||||
	apiTokens, err := models.SharedApiTokenDAO.FindAllEnabledAPITokens(tx, req.Role)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	var pbTokens = []*pb.APIToken{}
 | 
			
		||||
	for _, token := range apiTokens {
 | 
			
		||||
		pbTokens = append(pbTokens, &pb.APIToken{
 | 
			
		||||
			Id:     int64(token.Id),
 | 
			
		||||
			NodeId: token.NodeId,
 | 
			
		||||
			Secret: token.Secret,
 | 
			
		||||
			Role:   token.Role,
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
	return &pb.FindAllEnabledAPITokensResponse{ApiTokens: pbTokens}, nil
 | 
			
		||||
}
 | 
			
		||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
		Reference in New Issue
	
	Block a user