package model import ( "time" ) // PermissionLevel 权限级别 type PermissionLevel int const ( PermissionRead PermissionLevel = iota + 1 PermissionWrite PermissionExecute PermissionAdmin ) // Role 角色 type Role struct { ID string `json:"id" gorm:"primaryKey"` Name string `json:"name" gorm:"uniqueIndex"` Permissions []PermissionLevel `json:"permissions" gorm:"type:int[]"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } // User 用户 type User struct { ID string `json:"id" gorm:"primaryKey"` Username string `json:"username" gorm:"uniqueIndex;size:50;not null"` Password string `json:"-" gorm:"not null"` Email string `json:"email" gorm:"index"` RoleID string `json:"role_id" gorm:"size:50;not null"` Role *Role `json:"role,omitempty" gorm:"foreignKey:RoleID"` IsActive bool `json:"is_active" gorm:"default:true"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } // HasPermission 检查是否有权限 func (u *User) HasPermission(level PermissionLevel) bool { if u.Role == nil { return false } for _, p := range u.Role.Permissions { if p >= level { return true } } return false }