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" }