UNPKG

@ultipa-graph/ultipa-driver

Version:

NodeJS SDK for ultipa-server 5.2

273 lines 10.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PrivilegeExtra = exports.UserExtra = void 0; const connection_base_1 = require("./connection.base"); const types_1 = require("../../types"); const utils_1 = require("../../utils"); const ultipa_pb_1 = require("../../proto/ultipa_pb"); const { CommandList } = utils_1.UQLMAKER; const JSONSTRING_KEYS = ["graphPrivileges", "systemPrivileges", "policies", "policy", "graph_privileges", "system_privileges"]; const GRPATH_PRIVILEGES_DATA_FORMAT = (obj) => { if (obj.graphPrivileges) { obj.graph_privileges = obj.graphPrivileges; delete obj.graphPrivileges; } if (obj.systemPrivileges) { obj.system_privileges = obj.systemPrivileges; delete obj.systemPrivileges; } return obj; }; class UserExtra extends connection_base_1.ConnectionBase { /** * 用户列表 */ async listUser(commonReq) { let command = CommandList.listUser; let uqlMaker = new utils_1.UQLMAKER(command, commonReq); return connection_base_1.ConnectionBase.UqlListSimple(this, uqlMaker, { jsonKeys: JSONSTRING_KEYS, dataFormat: GRPATH_PRIVILEGES_DATA_FORMAT, }); } /** * 用户详细信息 */ async getUser(req, commonReq) { let command = CommandList.getUser; let uqlMaker = new utils_1.UQLMAKER(command, commonReq, req.username); let res = await connection_base_1.ConnectionBase.UqlGetSimple(this, uqlMaker, { jsonKeys: JSONSTRING_KEYS, dataFormat: GRPATH_PRIVILEGES_DATA_FORMAT, }); return res; } /** * 获取当前用户的信息 */ async getSelfInfo(commonReq) { let command = CommandList.getSelfInfo; let uqlMaker = new utils_1.UQLMAKER(command, commonReq); let res = await connection_base_1.ConnectionBase.UqlGetSimple(this, uqlMaker, { jsonKeys: JSONSTRING_KEYS, dataFormat: GRPATH_PRIVILEGES_DATA_FORMAT, }); return res; } /** * 创建用户 */ async createUser(req, commonReq) { let command = CommandList.createUser; if (!req.system_privileges) { req.system_privileges = []; } if (!req.graph_privileges) { req.graph_privileges = {}; } if (!req.policies) { req.policies = []; } let params = [req.username, req.password, req.graph_privileges, req.system_privileges, req.policies]; let uqlMaker = new utils_1.UQLMAKER(command, commonReq, params); return connection_base_1.ConnectionBase.UqlUpdateSimple(this, uqlMaker); } /** * 删除用户 */ async deleteUser(req, commonReq) { let command = CommandList.deleteUser; let uqlMaker = new utils_1.UQLMAKER(command, commonReq, req.username); return connection_base_1.ConnectionBase.UqlUpdateSimple(this, uqlMaker); } /** * 跟新用户 */ async updateUser(req, commonReq) { let command = CommandList.updateUser; let uqlMaker = new utils_1.UQLMAKER(command, commonReq, req.username); let set = {}; if (req.password) { set.password = req.password; } if (req.system_privileges) { set.system_privileges = req.system_privileges; } if (req.graph_privileges) { set.graph_privileges = req.graph_privileges; } if (req.policies) { set.policies = req.policies; } uqlMaker.addParam("set", set); return connection_base_1.ConnectionBase.UqlUpdateSimple(this, uqlMaker); } async getUserSetting(req, commonReq) { let request = new ultipa_pb_1.UserSettingRequest(); request.setOpt(ultipa_pb_1.UserSettingRequest.OPTION.OPT_GET); request.setUserName(req.username); if (req.type) { request.setType(req.type); } return await new Promise(async (resolve, reject) => { let clientInfo = await this.getClientInfo({ type: types_1.ULTIPA.ClientType.Leader, graphSetName: commonReq?.graphSetName, clusterId: commonReq?.clusterId, isGlobal: true, timeZone: commonReq?.timeZone, timeZoneOffset: commonReq?.timeZoneOffset, }); clientInfo.client.controlsClient.userSetting(request, clientInfo.metadata, (err, resp) => { let response = new types_1.ULTIPA.Response(); if (err) { response = utils_1.FormatResponse.unknownError(err, response); resolve(response); return; } resolve({ status: utils_1.FormatType.status(resp.getStatus()), data: resp.getData() }); }); }); } async setUserSetting(req, commonReq) { let request = new ultipa_pb_1.UserSettingRequest(); request.setOpt(ultipa_pb_1.UserSettingRequest.OPTION.OPT_SET); request.setUserName(req.username); request.setType(req.type); request.setData(req.data); return await new Promise(async (resolve, reject) => { let clientInfo = await this.getClientInfo({ graphSetName: commonReq?.graphSetName, clusterId: commonReq?.clusterId, isGlobal: true, type: types_1.ULTIPA.ClientType.Leader, timeZone: commonReq?.timeZone, timeZoneOffset: commonReq?.timeZoneOffset, }); clientInfo.client.controlsClient.userSetting(request, clientInfo.metadata, (err, resp) => { let response = new types_1.ULTIPA.Response(); if (err) { response = utils_1.FormatResponse.unknownError(err, response); resolve(response); return; } resolve({ status: utils_1.FormatType.status(resp.getStatus()), }); }); }); } } exports.UserExtra = UserExtra; class PrivilegeExtra extends connection_base_1.ConnectionBase { /** * 获取权限列表 */ async listPrivilege(commonReq) { let command = CommandList.listPrivilege; let uqlMaker = new utils_1.UQLMAKER(command, commonReq); return connection_base_1.ConnectionBase.UqlListSimple(this, uqlMaker, { jsonKeys: JSONSTRING_KEYS }); } /** * 获取策略列表 */ async listPolicy(commonReq) { let command = CommandList.listPolicy; let uqlMaker = new utils_1.UQLMAKER(command, commonReq); return connection_base_1.ConnectionBase.UqlListSimple(this, uqlMaker, { jsonKeys: JSONSTRING_KEYS, dataFormat: GRPATH_PRIVILEGES_DATA_FORMAT, }); } /** * 获取策略详细 */ async getPolicy(req, commonReq) { let command = CommandList.getPolicy; let uqlMaker = new utils_1.UQLMAKER(command, commonReq, req.name); return connection_base_1.ConnectionBase.UqlGetSimple(this, uqlMaker, { jsonKeys: JSONSTRING_KEYS, dataFormat: GRPATH_PRIVILEGES_DATA_FORMAT, }); } /** * 创建策略 */ async createPolicy(req, commonReq) { let command = CommandList.createPolicy; let uqlMaker = new utils_1.UQLMAKER(command, commonReq, [req.name, req.graph_privileges || {}, req.system_privileges || [], req.policies || []]); return connection_base_1.ConnectionBase.UqlUpdateSimple(this, uqlMaker); } /** * 更新策略 */ async updatePolicy(req, commonReq) { let command = CommandList.updatePolicy; let uqlMaker = new utils_1.UQLMAKER(command, commonReq, req.name); let set = {}; if (req.graph_privileges) { set.graph_privileges = req.graph_privileges; } if (req.system_privileges) { set.system_privileges = req.system_privileges; } if (req.policies) { set.policies = req.policies; } uqlMaker.addParam("set", set); return connection_base_1.ConnectionBase.UqlUpdateSimple(this, uqlMaker); } /** * 删除策略 */ async deletePolicy(req, commonReq) { let command = CommandList.deletePolicy; let uqlMaker = new utils_1.UQLMAKER(command, commonReq, req.name); return connection_base_1.ConnectionBase.UqlUpdateSimple(this, uqlMaker); } /** * 赋予用户权限或策略 */ async grantPolicy(req, commonReq) { let command = CommandList.grant; let uqlMaker = new utils_1.UQLMAKER(command, commonReq, req.username); let set = {}; if (req.graph_privileges) { set.graph_privileges = req.graph_privileges; } if (req.system_privileges) { set.system_privileges = req.system_privileges; } if (req.policies) { set.policies = req.policies; } uqlMaker.addParam("params", set); return connection_base_1.ConnectionBase.UqlUpdateSimple(this, uqlMaker); } /** * 移除用户权限或策略 */ async revokePolicy(req, commonReq) { let command = CommandList.revoke; let uqlMaker = new utils_1.UQLMAKER(command, commonReq, req.username); let set = {}; if (req.graph_privileges) { set.graph_privileges = req.graph_privileges; } if (req.system_privileges) { set.system_privileges = req.system_privileges; } if (req.policies) { set.policies = req.policies; } uqlMaker.addParam("params", set); return connection_base_1.ConnectionBase.UqlUpdateSimple(this, uqlMaker); } } exports.PrivilegeExtra = PrivilegeExtra; //# sourceMappingURL=user.privilege.extra.js.map