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

39 lines
1.8 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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