39 lines
1.8 KiB
Go
39 lines
1.8 KiB
Go
package entity
|
||
|
||
import (
|
||
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/permission"
|
||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||
)
|
||
|
||
// 1. UID (使用者ID)
|
||
//
|
||
// 這個欄位通常代表創建這個角色的使用者,可能的用途:
|
||
// • 追蹤角色的建立者:確保知道誰創建了這個角色。
|
||
// • 限定角色的管理範圍:例如,只有 UID 對應的使用者可以修改或刪除這個角色。
|
||
// • 支援多租戶 (Multi-Tenancy):如果一個 UID 只能看到自己創建的角色,那這個系統可能是多租戶架構的一部分。
|
||
//
|
||
// 2. ClientID (客戶端ID)
|
||
//
|
||
// 這個欄位通常代表該角色所屬的應用程式或客戶端,可能的用途:
|
||
// • 多租戶架構 (Multi-Tenancy):不同 ClientID 的角色可能互相隔離,確保不同組織不會影響彼此的角色權限。
|
||
// • 對應 OAuth 2.0 或 OpenID Connect:
|
||
// • 在 OAuth2 / OIDC 的架構下,每個應用程式 (client_id) 可能有不同的角色和權限。
|
||
// • 例如,client_id 為 web-app-1 的角色與 client_id 為 mobile-app-1 的角色可能完全不同。
|
||
// • API 權限控制:
|
||
// • ClientID 可能是用來限制某些角色只能在特定應用程式中被使用,例如 Web 端和行動端的角色不同。
|
||
|
||
// Role 是這樣,如果有綁定某個 UID
|
||
type Role struct {
|
||
ID primitive.ObjectID `bson:"_id,omitempty"`
|
||
Name string `bson:"name"` // 角色名稱
|
||
UID string `bson:"uid"` // 限定角色的管理範圍:例如,只有 UID 對應的使用者可以修改或刪除這個角色。
|
||
ClientID string `bson:"client_id"`
|
||
Status permission.Status `bson:"status"` // 例如 1: 啟用, 0: 停用
|
||
CreateAt int64 `bson:"create_at"`
|
||
UpdateAt int64 `bson:"update_at"`
|
||
}
|
||
|
||
func (c *Role) Collection() string {
|
||
return "role"
|
||
}
|