Files
X-Agents/server/internal/model/user.go

51 lines
1.3 KiB
Go
Raw Normal View History

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
}