package models

// 权限码（与前端、路由 meta.permission 一致）
const (
	PermSiteManage      = "site:manage"
	PermHomepageEdit    = "homepage:edit"
	PermPageManage      = "page:manage"
	PermModuleUpload    = "module:upload"
	PermUserManage      = "user:manage"
	PermWorkspaceManage = "workspace:manage"
	PermConversationManage = "conversation:manage"
	PermSMSConfig       = "sms_config"
	PermPaymentConfig   = "payment_config"
	PermRolePermission  = "role:permission" // 角色权限管理
	PermYuhengCloudManage = "yuheng_cloud:manage" // 宇恒云账号（云端注册留痕）
)

// PermissionItem 单条权限定义（JSON 须用小写 key/name，供前端展示与勾选）
type PermissionItem struct {
	Key  string `json:"key"`
	Name string `json:"name"`
}

// AllPermissions 所有可配置权限（用于角色权限管理页）
var AllPermissions = []PermissionItem{
	{Key: PermSiteManage, Name: "站点管理"},
	{Key: PermHomepageEdit, Name: "首页编辑"},
	{Key: PermPageManage, Name: "网页管理"},
	{Key: PermModuleUpload, Name: "功能模块上传"},
	{Key: PermUserManage, Name: "用户管理"},
	{Key: PermWorkspaceManage, Name: "工作空间"},
	{Key: PermConversationManage, Name: "对话管理"},
	{Key: PermSMSConfig, Name: "短信配置"},
	{Key: PermPaymentConfig, Name: "支付配置"},
	{Key: PermRolePermission, Name: "角色权限管理"},
	{Key: PermYuhengCloudManage, Name: "宇恒云账号管理"},
}

// RolePermissionsDoc MongoDB 文档：角色 ID -> 名称与权限列表（支持自定义角色）
type RolePermissionsDoc struct {
	RoleID      int      `bson:"role_id" json:"role_id"`
	RoleName    string   `bson:"role_name,omitempty" json:"role_name"`
	Permissions []string `bson:"permissions" json:"permissions"`
}

// 预定义角色 ID 的默认名称（未在 DB 中存 role_name 时使用）
var DefaultRoleNames = map[int]string{
	RoleIDSuperAdmin: "超级管理员",
	RoleIDSuperUser:  "超级用户",
	RoleIDUser:       "普通用户",
}
