app-cloudep-permission-server/pkg/domain/entity/role.go

40 lines
1.7 KiB
Go
Raw Normal View History

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"
)
//
//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"`
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"
}