账号

MOI SDK 的账号接口面向 MOI Catalog Service 当前用户。它可以读取和更新当前用户资料、 修改密码,以及读取或刷新当前用户的 API Key。这里的用户不等同于统一账户中心中的注册 账号,也不等同于 MatrixOne 数据库用户。

可用方法

操作

Python RawClient

Go RawClient

读取当前用户与有效权限

get_my_info()

GetMyInfo(ctx)

更新电话、邮箱和描述

update_my_info(request)

UpdateMyInfo(ctx, req)

修改当前用户密码

update_my_password(request)

UpdateMyPassword(ctx, req)

读取当前用户 API Key

get_my_api_key()

GetMyAPIKey(ctx)

刷新当前用户 API Key

refresh_my_api_key()

RefreshMyAPIKey(ctx)

get_my_info / GetMyInfo 返回用户资料、全局权限码列表和对象级权限列表。Python RawClient 返回解码后的字典;Go 使用 UserMeInfoResponse,其中包含 UserInfoAuthorityCodeListObjAuthorityCodeList

读取当前用户

import os

from moi import RawClient

client = RawClient(
    base_url=os.environ["MOI_BASE_URL"],
    api_key=os.environ["MOI_API_KEY"],
)

me = client.get_my_info()
user = me["user_info"]

print(user["id"], user["name"], user["status"])
print("global privileges:", me["authority_code_list"])
package main

import (
	"context"
	"fmt"
	"log"
	"os"

	sdk "github.com/matrixorigin/moi-go-sdk"
)

func main() {
	client, err := sdk.NewRawClient(
		os.Getenv("MOI_BASE_URL"),
		os.Getenv("MOI_API_KEY"),
	)
	if err != nil {
		log.Fatal(err)
	}

	me, err := client.GetMyInfo(context.Background())
	if err != nil {
		log.Fatal(err)
	}

	fmt.Println(me.UserInfo.ID, me.UserInfo.Name, me.UserInfo.Status)
	fmt.Println("global privileges:", me.AuthorityCodeList)
}

在访问 UserInfo 前,生产代码还应检查它是否为空。应用需要授权判断时,应使用服务端 返回的权限码,而不是根据用户名或页面入口推测权限。

更新资料

自助资料接口只公开电话、邮箱和描述字段:

client.update_my_info(
    {
        "phone": "13800000000",
        "email": "developer@example.com",
        "description": "Data platform integration",
    }
)

空请求不是有效调用:Python 会对 None 抛出 ErrNilRequest;Go 方法要求非空请求指针。 字段格式和可否留空仍由服务端校验,调用后可再次执行 get_my_info() 确认结果。

API Key 安全

RawClient 构造时要求 Base URL 和 API Key,并自动将 Key 放入 moi-key 请求头。不要 自行把 Genesis 的 Authorization: Bearer 规则套用到该客户端。

刷新 API Key 属于密钥轮换操作。官方 SDK 暴露了刷新方法,但返回类型不包含新 Key; 不同部署的旧 Key 失效时点和新 Key 交付流程应以目标环境为准。生产环境执行前应准备 回滚和安全交付方案,不要在日志中打印 get_my_api_key() 的完整响应。

管理员管理其他 Catalog Service 用户见成员,权限数据结构见 权限审计。SDK 源码与最新签名见 Python SDKGo SDK