48 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package controller
 | 
						|
 | 
						|
import (
 | 
						|
	"errors"
 | 
						|
 | 
						|
	"git.huangwc.com/pig/pig-farm-controller/internal/infra/models"
 | 
						|
	"github.com/gin-gonic/gin"
 | 
						|
)
 | 
						|
 | 
						|
var (
 | 
						|
	// ErrUserNotFoundInContext 表示在 gin.Context 中未找到用户信息。
 | 
						|
	ErrUserNotFoundInContext = errors.New("context中未找到用户信息")
 | 
						|
	// ErrInvalidUserType 表示从 gin.Context 中获取的用户信息类型不正确。
 | 
						|
	ErrInvalidUserType = errors.New("context中用户信息类型不正确")
 | 
						|
)
 | 
						|
 | 
						|
// GetOperatorIDFromContext 从 gin.Context 中提取操作者ID。
 | 
						|
// 假设操作者ID是由 AuthMiddleware 存储到 context 中的 *models.User 对象的 ID 字段。
 | 
						|
func GetOperatorIDFromContext(c *gin.Context) (uint, error) {
 | 
						|
	userVal, exists := c.Get(models.ContextUserKey.String())
 | 
						|
	if !exists {
 | 
						|
		return 0, ErrUserNotFoundInContext
 | 
						|
	}
 | 
						|
 | 
						|
	user, ok := userVal.(*models.User)
 | 
						|
	if !ok {
 | 
						|
		return 0, ErrInvalidUserType
 | 
						|
	}
 | 
						|
 | 
						|
	return user.ID, nil
 | 
						|
}
 | 
						|
 | 
						|
// GetOperatorFromContext 从 gin.Context 中提取操作者。
 | 
						|
// 假设操作者是由 AuthMiddleware 存储到 context 中的 *models.User 对象的  字段。
 | 
						|
func GetOperatorFromContext(c *gin.Context) (*models.User, error) {
 | 
						|
	userVal, exists := c.Get(models.ContextUserKey.String())
 | 
						|
	if !exists {
 | 
						|
		return nil, ErrUserNotFoundInContext
 | 
						|
	}
 | 
						|
 | 
						|
	user, ok := userVal.(*models.User)
 | 
						|
	if !ok {
 | 
						|
		return nil, ErrInvalidUserType
 | 
						|
	}
 | 
						|
 | 
						|
	return user, nil
 | 
						|
}
 |