@ultipa-graph/ultipa-driver
Version:
NodeJS SDK for ultipa-server 5.2
273 lines • 10.4 kB
JavaScript
;
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