package entity import "go.mongodb.org/mongo-driver/bson/primitive" // Role 角色實體 (MongoDB) type Role struct { ID primitive.ObjectID `bson:"_id,omitempty" json:"id"` ClientID int `bson:"client_id" json:"client_id"` UID string `bson:"uid" json:"uid"` Name string `bson:"name" json:"name"` Status Status `bson:"status" json:"status"` // 關聯權限 (不存資料庫) Permissions Permissions `bson:"-" json:"permissions,omitempty"` TimeStamp `bson:",inline"` } // CollectionName 集合名稱 func (Role) CollectionName() string { return "role" } // IsActive 是否啟用 func (r *Role) IsActive() bool { return r.Status.IsActive() } // IsAdmin 是否為管理員角色 func (r *Role) IsAdmin(adminUID string) bool { return r.UID == adminUID } // Validate 驗證角色資料 func (r *Role) Validate() error { if r.UID == "" { return ErrInvalidData("role uid is required") } if r.Name == "" { return ErrInvalidData("role name is required") } if r.ClientID <= 0 { return ErrInvalidData("role client_id must be positive") } return nil } // ErrInvalidData 無效資料錯誤 func ErrInvalidData(msg string) error { return &ValidationError{Message: msg} } // ValidationError 驗證錯誤 type ValidationError struct { Message string } func (e *ValidationError) Error() string { return e.Message }