61 lines
1.6 KiB
Go
61 lines
1.6 KiB
Go
|
|
package entity
|
||
|
|
|
||
|
|
import (
|
||
|
|
"backend/pkg/permission/domain/permission"
|
||
|
|
"go.mongodb.org/mongo-driver/v2/bson"
|
||
|
|
)
|
||
|
|
|
||
|
|
// Role 角色實體 (MongoDB)
|
||
|
|
type Role struct {
|
||
|
|
ID bson.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 permission.RecordState `bson:"status" json:"status"`
|
||
|
|
Permissions permission.Permissions `bson:"-" json:"permissions,omitempty"` // 關聯權限 (不存資料庫)
|
||
|
|
permission.TimeStamp `bson:",inline"`
|
||
|
|
}
|
||
|
|
|
||
|
|
// CollectionName 集合名稱
|
||
|
|
func (r *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
|
||
|
|
//}
|