Authing 知识库
🛠 开发资源🥂 集成案例🔭 常见问题🖥 控制台
3.0.0
3.0.0
  • 欢迎
  • Authing 概述
  • 快速开始
    • 注册 Authing 开发者账号
    • 第一个应用
    • 基础概念
    • 实现单点登录
    • 控制台概览
    • 部署模型和价格
    • 最佳开发实践
    • 我该如何选择 Authing 的技术
  • 进阶指南
    • 理解认证和授权
      • 用户名 - 密码认证
      • 邮箱 - 密码认证
      • 手机 - 验证码认证
      • JWT Token 释义及使用
    • 验证 Token
    • 配置用户权限
    • 迁移老数据进 Authing
    • 错误代码
  • 认证
    • 接入 OAuth 2.0
      • 创建 OAuth 应用
      • 使用 OAuth 授权
    • 接入 OpenID Connect
      • 创建 OIDC 应用
      • 使用 OIDC 授权
      • 理解 OIDC 流程
      • OIDC 常见问题
    • 接入 SAML
      • 创建 SAML Identity Provider 应用
      • 创建 SAML Service Provider 应用
      • 理解 SAML 流程
      • 同时使用 Authing 作为 SP 和 IdP
      • 使用 SAML Identity Provider
        • 在阿里云访问管理中使用
        • 在腾讯云访问管理中使用
        • 在 Auth0 中使用
      • 使用 SAML Service Provider
        • 与 Auth0 SAML IdP 对接
        • 与 SSOCircle SAML IdP 对接
    • 接入 LDAP
      • 配置 LDAP 服务
      • 使用 Authing 的 LDAP 用户目录
    • 接入 Active Directory
  • 社会化登录
    • 接入 Web 端社会化登录
      • GitHub 登录
      • 微信 PC 扫码登录
      • 微信 APP 内网页登录
      • 企业微信(第三方应用)网页授权登录
      • 企业微信(第三方应用)扫码登录
      • 企业微信(企业内部)扫码登录
      • 新浪微博登录
      • 钉钉登录
      • QQ 登录
      • 配置登录授权 Scope
    • 接入移动端社会化登录
      • 微信登录
      • 支付宝登录
    • 接入小程序登录
      • 小程序登录
        • 用户登录凭证(code)最佳实践
      • APP 拉起小程序登录
    • 打通微信账号体系
  • 扫码登录
    • 小程序扫码登录
      • 接入私有化小程序
    • APP 扫码登录
      • 快速接入
      • Web 端 SDK
      • 完整接口列表
      • 自定义配置项
      • 扫码登录原理
  • 移动应用登录
    • 移动应用 SSO
      • 自动检测登录
      • 唤起 App 登录
    • 移动应用身份提供商
  • 授权
    • Authorization 基础概念
      • 什么是基于角色的管理(RBAC)
      • 什么是基于属性的管理(ABAC)
      • 什么是零信任网络
    • Authorization at Authing
    • 接入 RBAC
    • 接入 ABAC
    • 接入组织机构管理
  • 扩展能力
    • 自定义认证流程(Pipeline)
      • 创建你的第一个 Pipeline 函数
      • Pipeline 函数开发指南
      • 应用场景
      • user 对象
      • context 对象
      • 使用环境变量
      • 可用的 Node Modules
      • 如何调试
      • Node SDK
      • GraphQL API
      • 常见问题
      • 私有化部署
    • 使用 Webhook
    • 自定义用户字段
  • 开发资源
    • 开发资源
    • API(GraphQL)
    • Guard for Web
      • 自定义 Guard 的 UI 样式
    • Guard for Mobile
      • Guard for React Native
    • Guard VS 自定义 UI
    • SDK for 单点登录
    • SDK for JavaScript
      • 查询用户权限
      • 绑定社会化登录
      • 自定义用户字段
      • 管理 MFA 口令
      • 自定义请求链接
    • SDK for Node.js
      • 权限控制
      • 查询用户权限
      • 组织机构管理
      • 老版权限控制(deprecated)
      • Pipeline 函数
      • 自定义用户字段
      • 绑定社会化登录
      • 管理 MFA 口令
      • 自定义请求连接
    • SDK for React Native
    • SDK for 微信小程序
    • SDK for Java
    • SDK for Objective-C
    • SDK for Python
    • SDK for Go
    • SDK for PHP
    • 函数计算(FaaS)
  • 通信
    • 邮件
    • SMS
  • MFA
    • 配置 MFA 安全口令
      • 使用 Microsoft Authenticator 添加 MFA 令牌
    • 接入 MFA
  • 安全
    • 配置 Web 安全域
    • 配置用户池密码强度
    • 配置密码加密函数
  • 其他
    • 常见问题
    • 集成案例
      • Authing 与 AWS 集成案例
      • 函数计算与 AaaS 集成案例
      • Odoo 集成案例
      • 社会化登录集成案例
    • 社交互联数据
    • 为 Authing 贡献 SDK
      • 了解 Authing 的模块
Powered by GitBook
On this page
  • 开始前请阅读
  • 初始化
  • 创建组织机构
  • 添加节点
  • 删除节点
  • 删除组织机构
  • 查询组织机构 - 通过 ID
  • 查询用户池所有组织机构
  • 判断某节点是否为根节点
  • 查询某组织机构的根节点
  • 查询某节点的子节点列表
  • 搜索节点下的用户

Was this helpful?

  1. 开发资源
  2. SDK for Node.js

组织机构管理

Previous查询用户权限Next老版权限控制(deprecated)

Last updated 4 years ago

Was this helpful?

开始前请阅读

初始化

使用以下接口时,请先完成初始化工作,请参考:

创建组织机构

在 Authing 中,组织机构树中的每个节点对应一个 Group。如在创建组织机构时,需要指定根节点对应 Group 的 ID,即需要先创建 Group 再创建节点。

Authing.org.createOrg(input)

  • 参数:

    • input: <Object>

      • rootGroupId:<string> 必填,根节点 Group ID(每个节点对应一个 Group)。

  • 使用方法

const root = await authing.authz.createGroup({
    name: "非凡科技有限公司",
    description: "非凡科技有限公司"
})
const org = await authing.org.createOrg({
    rootGroupId: root._id
})
  • 返回数据

    • _id: 组织结构 ID

    • nodes: 组织机构节点列表

      • _id: Group ID

      • children: Array<String> 子节点 Group ID

      • root: <boolean> 是否为根节点

    • tree: 组织结构树状结构

      • _id: Group ID

 {
    _id: '5e355dd1af15ce8b5cc39386',
    nodes: [
      {
        _id: '5e355dd1af15ce8b5cc39385',
        children: [],
        createdAt: '2020-02-01T19:15:29+08:00',
        description: '描述信息',
        name: '分组58kb1ly6je3',
        root: true,
        updatedAt: '2020-02-01T19:15:29+08:00',
      },
    ],
    tree: {
      _id: '5e355dd1af15ce8b5cc39385',
      children: [],
      createdAt: '2020-02-01T19:15:29+08:00',
      description: '描述信息',
      name: '分组58kb1ly6je3',
      root: true,
      updatedAt: '2020-02-01T19:15:29+08:00',
    },
  }

添加节点

一个组织机构是一棵树,其每个节点对应一个 Group。

Authing.org.addNode(input)

  • 参数

    • input <Object>

      • orgId: 必填,组织机构 ID

      • groupId: 必填,该节点对应 Group ID

      • parentGroupId: 必填,父节点对应 Group ID

  • 使用方法

const org = await authing.org.addNode({
  orgId: "组织机构 ID",
  parentGroupId: "父节点对应 Group ID",
  groupId: "该节点对应 Group ID"
})
  • 返回数据:同创建组织机构接口。

删除节点

Authing.org.removeNode(input)

  • 参数

    • input <Object>

      • orgId: 必填,组织机构 ID

      • groupId: 必填,节点对应的 group ID

  • 使用方法

let org = await authing.org.removeNode({
    orgId: "xxx",
    groupId: "xxxx"
})
  • 返回参数:同创建组织机构接口。

删除组织机构

Authing.org.dropById(_id)

  • 参数

    • _id: 组织结构ID

  • 使用方法

const res = await authing.org.dropById(org._id)
  • 返回数据

{
    code: 200,
    message: "操作成功!"
}

查询组织机构 - 通过 ID

Authing.org.findById(_id)

  • 参数

    • _id: 组织机构 ID

  • 使用方法

const org = await authing.org.findById(org._id)
  • 返回参数:同创建组织机构接口。

查询用户池所有组织机构

Authing.org.all()

  • 参数:无

  • 使用方法

const { totalCount, list: orgs } = await authing.org.all()
  • 返回数据

    • totalCount: 组织机构总数。

    • list: 组织机构列表,其中的元素为一个组织结构,具体见创建组织机构方法。

判断某节点是否为根节点

Authing.org.isRootNode(input)

  • 参数

    • input: <Object>

      • orgId: 组织机构 ID

      • groupId: Group ID

  • 使用方法

 const isRoot = await authing.org.isRootNode({
  groupId: "xxx",
  orgId: "xxx"
 })
  • 返回数据:布尔值。

查询某组织机构的根节点

Authing.org.rootNode(_id)

  • 参数

    • _id: 组织机构 ID

  • 使用方法

const group = await authing.org.rootNode(org._id)
  • 返回数据:根节点对应的 Group

{
    _id: '5e356424004e528e9c834f8a',
    createdAt: '2020-02-01T19:42:28+08:00',
    description: '非凡技术有限公司',
    name: '非凡技术有限公司',
    updatedAt: '2020-02-01T19:42:28+08:00',
 }

查询某节点的子节点列表

Authing.org.childrenNodes(input)

  • 参数

    • input: <Object>

      • orgId: 组织机构 ID

      • groupId: Group ID

  • 使用方法

const children = await authing.org.childrenNodes({
    orgId: "xxx",
    groupId: "xxx"
})
  • 返回数据, 列表元素含义:

    • depth: 距该节点的深度,1 表示为直接子节点。

    • group: 子节点对应的 Group

 [
    {
      depth: 1,
      group: {
        _id: '5e356242af15ce8b5cc393bd',
        createdAt: '2020-02-01T19:34:26+08:00',
        description: '描述信息',
        name: '分组sxvtd3unrxe',
        updatedAt: '2020-02-01T19:34:26+08:00',
      },
    },
    {
      depth: 1,
      group: {
        _id: '5e356243af15ce8b5cc393c0',
        createdAt: '2020-02-01T19:34:27+08:00',
        description: '描述信息',
        name: '分组04h9vdiee0vd',
        updatedAt: '2020-02-01T19:34:27+08:00',
      },
    },
  ]

搜索节点下的用户

Authing.org.searchUser(input)

  • 参数

    • input: <Object>

      • orgId: 组织机构 ID

      • nodeId: 节点 ID

      • query: 查询字符串

      • includeChildrenNodes: 布尔值,是否一起搜索子部门的用户,默认为 false

  • 使用方法

    const users = await authing.org.searchUser({
        orgId: "xxx",
        groupId: "xxx",
        query: "王",
        includeChildrenNodes: true
    })
  • 返回数据

{
  totalCount: 222,
  list: [
    {
      "_id": "59e5ff4935eebf1913cfe8a1",
      "email": "86700229ww6ss@163.com",
      "emailVerified": false,
      "username": "86700229ww6ss@163.com",
      "nickname": "",
      "company": "",
      "photo": "http://www.xiaohehe.net/uploads/allimg/150305/304-1503051H136.png",
      "browser": "",
      "token": null,
      "tokenExpiredAt": null,
      "loginsCount": 0,
      "lastLogin": "Tue Oct 17 2017 21:02:01 GMT+0800 (CST)",
      "lastIP": null,
      "signedUp": "Tue Oct 17 2017 21:02:01 GMT+0800 (CST)",
      "blocked": false,
      "isDeleted": false,
      "group": {
        "_id": "59e374332023830871913ebd",
        "name": "default",
        "descriptions": "default",
        "createdAt": "Sun Oct 15 2017 22:44:03 GMT+0800 (CST)"
      }
   },
          ...
  ]
}

接入组织机构管理
SDK for Node.js