feat(auth): use Wayne native role APIs

This commit is contained in:
mac
2026-07-21 17:05:48 +08:00
parent 981e9557fe
commit c324e2ec59
15 changed files with 685 additions and 315 deletions
+27 -1
View File
@@ -2,6 +2,7 @@ package handler
import (
"net/http"
"strconv"
"github.com/1024XEngineer/xinfra/server/internal/model"
@@ -32,8 +33,33 @@ func (h *UserHandler) Me(c *gin.Context) {
}
func (h *UserHandler) List(c *gin.Context) {
claims, ok := CurrentClaims(c)
if !ok {
c.JSON(http.StatusUnauthorized, gin.H{"error": "missing current user"})
return
}
query := h.db.Model(&model.User{}).Where("users.deleted_at IS NULL")
if businessLineID := c.Query("business_line_id"); businessLineID != "" {
if !claims.IsAdmin {
id, err := strconv.ParseUint(businessLineID, 10, 64)
if err != nil || id == 0 {
c.JSON(http.StatusBadRequest, gin.H{"error": "invalid business line id"})
return
}
var binding model.BusinessLineUser
if err := h.db.Where("business_line_id = ? AND user_id = ?", id, claims.UserID).First(&binding).Error; err != nil {
c.JSON(http.StatusForbidden, gin.H{"error": "current user is not in business line"})
return
}
}
query = query.
Joins("JOIN business_line_users ON business_line_users.user_id = users.id").
Where("business_line_users.business_line_id = ?", businessLineID)
}
var users []model.User
if err := h.db.Where("deleted_at IS NULL").Order("id ASC").Find(&users).Error; err != nil {
if err := query.Order("users.id ASC").Find(&users).Error; err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}