Documentation
¶
Overview ¶
Package auth 定义控制面认证主体、权限检查和 context 传递协议。
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // ErrUnauthenticated 表示当前 context 没有认证主体。 ErrUnauthenticated = errors.New("principal is not authenticated") // ErrNoWorkspace 表示当前主体未选择工作空间。 ErrNoWorkspace = errors.New("workspace is not selected") // ErrNoPermission 表示当前主体缺少所需权限。 ErrNoPermission = errors.New("permission denied") )
Functions ¶
Types ¶
type ContextPermissionChecker ¶
type ContextPermissionChecker struct{}
ContextPermissionChecker 从 context 中读取 Principal 并完成权限校验。
func NewContextPermissionChecker ¶
func NewContextPermissionChecker() *ContextPermissionChecker
NewContextPermissionChecker 创建 context 权限校验器。
func (*ContextPermissionChecker) Check ¶
func (c *ContextPermissionChecker) Check(ctx context.Context, required ...string) error
Check 校验当前 Principal 是否拥有任一 required 权限。
func (*ContextPermissionChecker) ResolveWorkspace ¶
func (c *ContextPermissionChecker) ResolveWorkspace(ctx context.Context, requested string) (string, error)
ResolveWorkspace 将请求 workspace 约束到当前 Principal 的 workspace。
普通用户省略 workspace 时自动使用当前 workspace,显式请求其他 workspace 时拒绝访问。全局超级管理员可以保留空 workspace 进行跨空间查询。
type PermissionChecker ¶
type PermissionChecker interface {
Check(ctx context.Context, required ...string) error
ResolveWorkspace(ctx context.Context, requested string) (string, error)
}
PermissionChecker 校验当前 context 是否具备指定权限。
type Principal ¶
type Principal struct {
UserID string `json:"userId"`
Username string `json:"username"`
IsSuperAdmin bool `json:"isSuperAdmin"`
Workspace string `json:"workspace"`
Permissions []string `json:"permissions"`
Authenticated bool `json:"authenticated"`
}
Principal 是控制面认证后在 context 中传递的用户身份。
type TokenParser ¶
TokenParser 解析访问令牌为 Principal。
Click to show internal directories.
Click to hide internal directories.