2025-02-24 01:04:06 +00:00
|
|
|
|
package entity
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/permission"
|
|
|
|
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
|
|
|
)
|
|
|
|
|
|
2025-02-26 08:45:27 +00:00
|
|
|
|
//
|
|
|
|
|
//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
|
2025-02-24 01:04:06 +00:00
|
|
|
|
type Role struct {
|
|
|
|
|
ID primitive.ObjectID `bson:"_id,omitempty"`
|
2025-02-26 08:45:27 +00:00
|
|
|
|
Name string `bson:"name"` // 角色名稱
|
|
|
|
|
UID string `bson:"uid"`
|
|
|
|
|
ClientID string `bson:"client_id"`
|
2025-02-24 01:04:06 +00:00
|
|
|
|
Status permission.Status `bson:"status"` // 例如 1: 啟用, 0: 停用
|
|
|
|
|
CreateAt int64 `bson:"create_at"`
|
|
|
|
|
UpdateAt int64 `bson:"update_at"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (c *Role) Collection() string {
|
|
|
|
|
return "role"
|
|
|
|
|
}
|