From 2a8f32cbb9ee3924771d1df34c9535d33a33e342 Mon Sep 17 00:00:00 2001 From: Admin Date: Wed, 29 Apr 2026 17:33:54 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=9F=E4=B8=80=E8=A7=92=E8=89=B2=E4=BD=93?= =?UTF-8?q?=E7=B3=BB=E4=B8=BAadmin/agent/user=EF=BC=8C=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E4=BB=A3=E7=90=86=E6=9F=A5=E8=AF=A2=E8=A7=92=E8=89=B2=E9=94=99?= =?UTF-8?q?=E8=AF=AF=EF=BC=8C=E6=B7=BB=E5=8A=A0=E8=AF=AD=E8=A8=80=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E5=92=8C=E6=98=8E=E6=9A=97=E5=88=87=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/internal/database/database.go | 6 +- backend/internal/middleware/middleware.go | 6 +- backend/internal/model/models.go | 2 +- .../internal/router/developer/agent_apps.go | 8 +- backend/internal/router/developer/agents.go | 20 +-- backend/internal/router/developer/cloud.go | 10 +- backend/internal/router/frontend/frontend.go | 4 +- backend/internal/service/auth.go | 4 +- database/schema.sql | 2 +- .../components/developer-sidebar/index.vue | 8 +- .../marketing-layout/the-header.vue | 135 +----------------- frontend/src/layouts/agent.vue | 6 +- frontend/src/layouts/developer.vue | 4 + .../src/pages/admin/cloud-variables/[id].vue | 12 +- .../pages/admin/cloud-variables/create.vue | 10 +- frontend/src/pages/auth/login.vue | 4 +- .../pages/developer/cloud-variables/[id].vue | 12 +- .../developer/cloud-variables/create.vue | 10 +- frontend/src/pages/profile/index.vue | 3 +- frontend/src/router/guard/index.ts | 6 +- frontend/src/router/routes.ts | 2 +- 21 files changed, 78 insertions(+), 196 deletions(-) diff --git a/backend/internal/database/database.go b/backend/internal/database/database.go index 96a0f8f..9ad9555 100644 --- a/backend/internal/database/database.go +++ b/backend/internal/database/database.go @@ -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) diff --git a/backend/internal/middleware/middleware.go b/backend/internal/middleware/middleware.go index d99c49c..fb5c062 100644 --- a/backend/internal/middleware/middleware.go +++ b/backend/internal/middleware/middleware.go @@ -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 } diff --git a/backend/internal/model/models.go b/backend/internal/model/models.go index fdcde6c..867c815 100644 --- a/backend/internal/model/models.go +++ b/backend/internal/model/models.go @@ -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"` diff --git a/backend/internal/router/developer/agent_apps.go b/backend/internal/router/developer/agent_apps.go index 7ef8bbd..88180b3 100644 --- a/backend/internal/router/developer/agent_apps.go +++ b/backend/internal/router/developer/agent_apps.go @@ -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 } diff --git a/backend/internal/router/developer/agents.go b/backend/internal/router/developer/agents.go index 7db43a6..c8c78fd 100644 --- a/backend/internal/router/developer/agents.go +++ b/backend/internal/router/developer/agents.go @@ -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 } diff --git a/backend/internal/router/developer/cloud.go b/backend/internal/router/developer/cloud.go index 775429f..2bc94d8 100644 --- a/backend/internal/router/developer/cloud.go +++ b/backend/internal/router/developer/cloud.go @@ -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 diff --git a/backend/internal/router/frontend/frontend.go b/backend/internal/router/frontend/frontend.go index ed10ed1..33ac13e 100644 --- a/backend/internal/router/frontend/frontend.go +++ b/backend/internal/router/frontend/frontend.go @@ -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{ diff --git a/backend/internal/service/auth.go b/backend/internal/service/auth.go index b238133..6ccc4da 100644 --- a/backend/internal/service/auth.go +++ b/backend/internal/service/auth.go @@ -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{ diff --git a/database/schema.sql b/database/schema.sql index 24f668b..e5ae468 100644 --- a/database/schema.sql +++ b/database/schema.sql @@ -14,7 +14,7 @@ CREATE TABLE IF NOT EXISTS users ( signature VARCHAR(255) DEFAULT NULL COMMENT '个性签名', points INT DEFAULT 0 COMMENT '积分', level INT DEFAULT 1 COMMENT '等级', - role ENUM('user', 'developer', 'agent', 'admin') DEFAULT 'user' COMMENT '角色', + role ENUM('user', 'agent', 'admin') DEFAULT 'user' COMMENT '角色', status ENUM('active', 'inactive', 'banned') DEFAULT 'active' COMMENT '状态', agent_id BIGINT UNSIGNED DEFAULT NULL COMMENT '所属代理ID', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', diff --git a/frontend/src/components/developer-sidebar/index.vue b/frontend/src/components/developer-sidebar/index.vue index 902f0ba..8af11ca 100644 --- a/frontend/src/components/developer-sidebar/index.vue +++ b/frontend/src/components/developer-sidebar/index.vue @@ -7,10 +7,10 @@ import TeamSwitcher from '@/components/app-sidebar/team-switcher.vue' import NavFooter from '@/components/developer-sidebar/nav-footer.vue' const user = reactive({ - name: '开发者', - email: 'developer@example.com', - avatar: '/avatars/developer.jpg', - role: 'developer', + name: '管理员', + email: 'admin@example.com', + avatar: '/avatars/admin.jpg', + role: 'admin', }) onMounted(() => { diff --git a/frontend/src/components/marketing-layout/the-header.vue b/frontend/src/components/marketing-layout/the-header.vue index 43f3df0..ea2d91d 100644 --- a/frontend/src/components/marketing-layout/the-header.vue +++ b/frontend/src/components/marketing-layout/the-header.vue @@ -228,7 +228,7 @@ watch(route, () => { {{ t('nav.pricing') }} -