Why: 方案 r1 U3/KTD2——RDM 成员管理需最小账号目录(owner+有效态+分页);此前无公开能力,下游只能盲加成员字符串。
Evidence: 红(AccountLister 未定义编译红);绿:surface 棘轮 2.11.0 + TestInprocHostListAccounts(排序/游标/limit 钳制/真实 store);go test ./... 全绿。
Impact: 公开面 AccountEntry{Owner,Valid}+AccountLister(游标分页,limit 1-200 缺省 50);inprocHost 实现(users 表,无姓名/联系方式下发);既有 EXT-8b 版本断言放宽为下限。
Refs: 方案 r1 U3/KTD2;Dev#477/#180 identity CLI
This commit is contained in:
@@ -25,12 +25,14 @@ import (
|
||||
// 2.8.0-experimental:EXT-17 新增可选能力接口 SurfaceHost(SurfaceSave/Get/List/
|
||||
// Activation;Generative UI U2)。实现由基座 hostcaps 注入;未装配时类型断言
|
||||
// 不成立即明确拒绝,不给必实现 Host 接口加方法(不破坏既有消费者)。
|
||||
// 2.11.0-experimental:EXT-19 新增可选能力接口 AccountLister(ListAccounts:
|
||||
// 最小账号目录——owner+有效态+游标分页,U3/KTD2;不含姓名/联系方式)。
|
||||
// 2.10.0-experimental:EXT-8b 新增 ResourceAuthzQuery/ResourceAuthorizerV2 与
|
||||
// Registry.RegisterResourceAuthorizerV2(资源级授权,U9 首切片)。
|
||||
// 2.9.0-experimental:Registry.AddAdminZone 与 AdminZoneSpec(WP3-I3/KTD4:编译
|
||||
// 插件向基座管理区声明展示分区;分区入口不做基座级权限判定,数据能力由
|
||||
// 分区组件自身的命令面 fail-closed)。
|
||||
const SurfaceVersion = "2.10.0-experimental"
|
||||
const SurfaceVersion = "2.11.0-experimental"
|
||||
|
||||
// ErrNotLinked 表示进程没有空白导入 link 包,Main 无法启动服务。
|
||||
var ErrNotLinked = errors.New("extension: runner not linked; blank-import agent-system-backend/pkg/extension/link")
|
||||
@@ -80,6 +82,20 @@ type Registry interface {
|
||||
AddAdminZone(spec json.RawMessage) error
|
||||
}
|
||||
|
||||
// AccountEntry 最小账号目录行(U3/KTD2):owner+有效态——授权管理所需的最小
|
||||
// 身份;姓名/邮箱/联系方式一律不下发(隐私边界)。
|
||||
type AccountEntry struct {
|
||||
Owner string `json:"owner"`
|
||||
Valid bool `json:"valid"`
|
||||
}
|
||||
|
||||
// AccountLister EXT-19 可选能力接口(实现由宿主注入):游标分页列举系统账号。
|
||||
// 未实现时下游回落现行行为(成员添加不做账号有效性校验);实现后仅用于
|
||||
// 授权管理读面——不授予任何写权。
|
||||
type AccountLister interface {
|
||||
ListAccounts(cursor string, limit int) (entries []AccountEntry, next string, err error)
|
||||
}
|
||||
|
||||
// AdminZoneSpec 管理区分区声明(WP3-I3):ID 是分区身份(建议形如
|
||||
// <plugin>.<section>,前端按 ID 映射内置分区组件);Title/Icon/Desc 为展示
|
||||
// 元数据(icon 取基座前端 IconName 词表,未知值前端回退通用图标);Order
|
||||
|
||||
@@ -13,8 +13,8 @@ import (
|
||||
)
|
||||
|
||||
func TestResourceAuthzV2SurfacePresent(t *testing.T) {
|
||||
if !strings.HasPrefix(SurfaceVersion, "2.10.0") {
|
||||
t.Fatalf("SurfaceVersion 应升至 2.10.0-experimental(新增导出符号须升版),got %s", SurfaceVersion)
|
||||
if SurfaceVersion < "2.10.0" {
|
||||
t.Fatalf("SurfaceVersion 应 ≥2.10.0-experimental(EXT-8b 起生效),got %s", SurfaceVersion)
|
||||
}
|
||||
var _ ResourceAuthorizerV2 = func(q ResourceAuthzQuery) (bool, error) {
|
||||
return q.Actor != "" && q.Action != "" && q.ResourceType != "" && q.ResourceID != "", nil
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
AccountEntry
|
||||
AccountLister
|
||||
AccountLister.ListAccounts
|
||||
AdminProvider
|
||||
AdminProvider.IsAdmin
|
||||
AdminZoneSpec
|
||||
|
||||
Reference in New Issue
Block a user