统一角色体系为admin/agent/user,修复代理查询角色错误,添加语言切换和明暗切换
This commit is contained in:
@@ -308,7 +308,7 @@ func initData() {
|
||||
Username: "dev",
|
||||
Email: &devEmail,
|
||||
Password: string(hashedPassword),
|
||||
Role: "developer",
|
||||
Role: "admin",
|
||||
Status: "active",
|
||||
}
|
||||
DB.Create(&devUser)
|
||||
@@ -324,7 +324,7 @@ func initData() {
|
||||
Username: "agent",
|
||||
Email: &agentEmail,
|
||||
Password: string(hashedPassword),
|
||||
Role: "developer",
|
||||
Role: "agent",
|
||||
Status: "active",
|
||||
}
|
||||
DB.Create(&agentUser)
|
||||
@@ -678,7 +678,7 @@ func initTicketData() {
|
||||
Username: "dev",
|
||||
Email: &devEmail,
|
||||
Password: string(hashedPassword),
|
||||
Role: "developer",
|
||||
Role: "admin",
|
||||
Status: "active",
|
||||
}
|
||||
DB.Create(&devUser)
|
||||
|
||||
@@ -114,7 +114,7 @@ func AdminAuth() gin.HandlerFunc {
|
||||
}
|
||||
}
|
||||
|
||||
// DeveloperAuth 开发者权限中间件
|
||||
// DeveloperAuth 开发者权限中间件(管理员即开发者)
|
||||
func DeveloperAuth() gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
role, exists := c.Get("role")
|
||||
@@ -124,8 +124,8 @@ func DeveloperAuth() gin.HandlerFunc {
|
||||
return
|
||||
}
|
||||
|
||||
if role != "developer" && role != "admin" {
|
||||
response.Error(c, http.StatusForbidden, "Developer access required")
|
||||
if role != "admin" {
|
||||
response.Error(c, http.StatusForbidden, "Admin access required")
|
||||
c.Abort()
|
||||
return
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ import (
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
// User 平台用户模型(开发者、管理员)
|
||||
// User 平台用户模型(管理员、代理商)
|
||||
type User struct {
|
||||
ID uint `gorm:"primaryKey" json:"id"`
|
||||
Username string `gorm:"uniqueIndex;size:50" json:"username"`
|
||||
|
||||
@@ -362,8 +362,8 @@ func handleInviteAgent(c *gin.Context) {
|
||||
response.Error(c, 404, "开发者不存在")
|
||||
return
|
||||
}
|
||||
if agent.Role != "developer" {
|
||||
response.Error(c, 400, "该用户不是开发者")
|
||||
if agent.Role != "agent" {
|
||||
response.Error(c, 400, "该用户不是代理商")
|
||||
return
|
||||
}
|
||||
|
||||
@@ -421,8 +421,8 @@ func handleRequestAuthorization(c *gin.Context) {
|
||||
response.Error(c, 404, "开发者不存在")
|
||||
return
|
||||
}
|
||||
if developer.Role != "developer" {
|
||||
response.Error(c, 400, "该用户不是开发者")
|
||||
if developer.Role != "admin" {
|
||||
response.Error(c, 400, "该用户不是管理员")
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ type AgentTreeNode struct {
|
||||
|
||||
func handleGetAgents(c *gin.Context) {
|
||||
var users []model.User
|
||||
if err := database.DB.Where("role = ?", "admin").
|
||||
if err := database.DB.Where("role = ?", "agent").
|
||||
Preload("ParentAgent").
|
||||
Order("created_at DESC").
|
||||
Find(&users).Error; err != nil {
|
||||
@@ -123,7 +123,7 @@ func handleGetAgents(c *gin.Context) {
|
||||
|
||||
func handleGetAgentsTree(c *gin.Context) {
|
||||
var users []model.User
|
||||
if err := database.DB.Where("role = ?", "admin").
|
||||
if err := database.DB.Where("role = ?", "agent").
|
||||
Preload("ParentAgent").
|
||||
Order("created_at DESC").
|
||||
Find(&users).Error; err != nil {
|
||||
@@ -239,7 +239,7 @@ func handleCreateAgent(c *gin.Context) {
|
||||
|
||||
if req.ParentAgentID != nil {
|
||||
var parentAgent model.User
|
||||
if err := database.DB.Where("id = ? AND role = ?", *req.ParentAgentID, "admin").First(&parentAgent).Error; err != nil {
|
||||
if err := database.DB.Where("id = ? AND role = ?", *req.ParentAgentID, "agent").First(&parentAgent).Error; err != nil {
|
||||
response.Error(c, 404, "上级代理不存在")
|
||||
return
|
||||
}
|
||||
@@ -283,7 +283,7 @@ func handleGetAgentDetail(c *gin.Context) {
|
||||
agentID := c.Param("id")
|
||||
|
||||
var user model.User
|
||||
if err := database.DB.Where("id = ? AND role = ?", agentID, "admin").
|
||||
if err := database.DB.Where("id = ? AND role = ?", agentID, "agent").
|
||||
Preload("ParentAgent").
|
||||
First(&user).Error; err != nil {
|
||||
response.Error(c, 404, "代理不存在")
|
||||
@@ -378,7 +378,7 @@ func handleUpdateAgent(c *gin.Context) {
|
||||
agentID := c.Param("id")
|
||||
|
||||
var user model.User
|
||||
if err := database.DB.Where("id = ? AND role = ?", agentID, "admin").First(&user).Error; err != nil {
|
||||
if err := database.DB.Where("id = ? AND role = ?", agentID, "agent").First(&user).Error; err != nil {
|
||||
response.Error(c, 404, "代理不存在")
|
||||
return
|
||||
}
|
||||
@@ -402,7 +402,7 @@ func handleUpdateAgent(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
var parentAgent model.User
|
||||
if err := database.DB.Where("id = ? AND role = ?", *req.ParentAgentID, "admin").First(&parentAgent).Error; err != nil {
|
||||
if err := database.DB.Where("id = ? AND role = ?", *req.ParentAgentID, "agent").First(&parentAgent).Error; err != nil {
|
||||
response.Error(c, 404, "上级代理不存在")
|
||||
return
|
||||
}
|
||||
@@ -446,7 +446,7 @@ func handleUpdateAgentStatus(c *gin.Context) {
|
||||
agentID := c.Param("id")
|
||||
|
||||
var user model.User
|
||||
if err := database.DB.Where("id = ? AND role = ?", agentID, "admin").First(&user).Error; err != nil {
|
||||
if err := database.DB.Where("id = ? AND role = ?", agentID, "agent").First(&user).Error; err != nil {
|
||||
response.Error(c, 404, "代理不存在")
|
||||
return
|
||||
}
|
||||
@@ -477,7 +477,7 @@ func handleDeleteAgent(c *gin.Context) {
|
||||
agentID := c.Param("id")
|
||||
|
||||
var user model.User
|
||||
if err := database.DB.Where("id = ? AND role = ?", agentID, "developer").First(&user).Error; err != nil {
|
||||
if err := database.DB.Where("id = ? AND role = ?", agentID, "agent").First(&user).Error; err != nil {
|
||||
response.Error(c, 404, "代理不存在")
|
||||
return
|
||||
}
|
||||
@@ -500,7 +500,7 @@ func handleGetAgentCards(c *gin.Context) {
|
||||
agentID := c.Param("id")
|
||||
|
||||
var user model.User
|
||||
if err := database.DB.Where("id = ? AND role = ?", agentID, "developer").First(&user).Error; err != nil {
|
||||
if err := database.DB.Where("id = ? AND role = ?", agentID, "agent").First(&user).Error; err != nil {
|
||||
response.Error(c, 404, "代理不存在")
|
||||
return
|
||||
}
|
||||
@@ -557,7 +557,7 @@ func handleUpdateAgentCards(c *gin.Context) {
|
||||
agentID := c.Param("id")
|
||||
|
||||
var user model.User
|
||||
if err := database.DB.Where("id = ? AND role = ?", agentID, "developer").First(&user).Error; err != nil {
|
||||
if err := database.DB.Where("id = ? AND role = ?", agentID, "agent").First(&user).Error; err != nil {
|
||||
response.Error(c, 404, "代理不存在")
|
||||
return
|
||||
}
|
||||
|
||||
@@ -419,8 +419,8 @@ func handleCreateCloudVariable(c *gin.Context) {
|
||||
req.Scope = "app"
|
||||
}
|
||||
|
||||
if req.WritePermission != "developer" && req.WritePermission != "user" && req.WritePermission != "app_user" {
|
||||
req.WritePermission = "developer"
|
||||
if req.WritePermission != "admin" && req.WritePermission != "user" && req.WritePermission != "app_user" {
|
||||
req.WritePermission = "admin"
|
||||
}
|
||||
|
||||
if req.Status != "active" && req.Status != "inactive" {
|
||||
@@ -489,7 +489,7 @@ func handleUpdateCloudVariable(c *gin.Context) {
|
||||
variable.DataType = req.DataType
|
||||
}
|
||||
variable.MaxRecords = req.MaxRecords
|
||||
if req.WritePermission == "developer" || req.WritePermission == "user" || req.WritePermission == "app_user" {
|
||||
if req.WritePermission == "admin" || req.WritePermission == "user" || req.WritePermission == "app_user" {
|
||||
variable.WritePermission = req.WritePermission
|
||||
}
|
||||
variable.Description = req.Description
|
||||
@@ -571,8 +571,8 @@ func handleUploadCloudVariable(c *gin.Context) {
|
||||
scope = "app"
|
||||
}
|
||||
|
||||
if writePermission != "developer" && writePermission != "user" {
|
||||
writePermission = "developer"
|
||||
if writePermission != "admin" && writePermission != "user" {
|
||||
writePermission = "admin"
|
||||
}
|
||||
|
||||
var user model.User
|
||||
|
||||
@@ -130,7 +130,7 @@ func handleRegister(c *gin.Context) {
|
||||
req.Username, req.Email, req.Phone, req.Role, req.Type)
|
||||
|
||||
if req.Role == "" {
|
||||
req.Role = "developer"
|
||||
req.Role = "admin"
|
||||
}
|
||||
|
||||
username := req.Username
|
||||
@@ -794,7 +794,7 @@ func handleGetPublicStats(c *gin.Context) {
|
||||
var totalApps, totalUsers, totalVerifications int64
|
||||
|
||||
database.DB.Model(&model.Application{}).Count(&totalApps)
|
||||
database.DB.Model(&model.User{}).Where("role = ?", "developer").Count(&totalUsers)
|
||||
database.DB.Model(&model.User{}).Where("role = ?", "admin").Count(&totalUsers)
|
||||
database.DB.Model(&model.Card{}).Where("status = ?", "used").Count(&totalVerifications)
|
||||
|
||||
response.Success(c, gin.H{
|
||||
|
||||
@@ -70,7 +70,7 @@ func (s *AuthService) Login(username, password, agentPath string) (map[string]in
|
||||
|
||||
// Register 用户注册
|
||||
func (s *AuthService) Register(username, email, password string) error {
|
||||
return s.RegisterWithRole(username, email, "", password, "developer")
|
||||
return s.RegisterWithRole(username, email, "", password, "admin")
|
||||
}
|
||||
|
||||
// RegisterWithRole 用户注册(带角色)
|
||||
@@ -115,7 +115,7 @@ func (s *AuthService) RegisterWithRole(username, email, phone, password, role st
|
||||
}
|
||||
|
||||
if role == "" {
|
||||
role = "developer"
|
||||
role = "admin"
|
||||
}
|
||||
|
||||
user := model.User{
|
||||
|
||||
Reference in New Issue
Block a user