UNPKG

weaviate-client

Version:
83 lines (82 loc) 4.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const errors_js_1 = require("../errors.js"); const util_js_1 = require("../roles/util.js"); const users = (connection) => { const base = baseUsers(connection); return { getMyUser: () => connection.get('/users/own-info').then(util_js_1.Map.user), getAssignedRoles: (userId) => connection.get(`/authz/users/${userId}/roles`).then(util_js_1.Map.roles), assignRoles: (roleNames, userId) => base.assignRoles(roleNames, userId), revokeRoles: (roleNames, userId) => base.revokeRoles(roleNames, userId), db: db(connection), oidc: oidc(connection), }; }; const db = (connection) => { const ns = namespacedUsers(connection); /** expectCode returns false if the contained WeaviateUnexpectedStatusCodeError * has an known error code and rethrows the error otherwise. */ const expectCode = (code) => { return (error) => { if (error instanceof errors_js_1.WeaviateUnexpectedStatusCodeError && error.code === code) { return false; } throw error; }; }; return { getAssignedRoles: (userId, opts) => ns.getAssignedRoles('db', userId, opts), assignRoles: (roleNames, userId) => ns.assignRoles(roleNames, userId, { userType: 'db' }), revokeRoles: (roleNames, userId) => ns.revokeRoles(roleNames, userId, { userType: 'db' }), create: (userId) => connection.postReturn(`/users/db/${userId}`, null).then((resp) => resp.apikey), delete: (userId) => connection .delete(`/users/db/${userId}`, null) .then(() => true) .catch(() => false), rotateKey: (userId) => connection .postReturn(`/users/db/${userId}/rotate-key`, null) .then((resp) => resp.apikey), activate: (userId) => connection .postEmpty(`/users/db/${userId}/activate`, null) .then(() => true) .catch(expectCode(409)), deactivate: (userId, opts) => connection .postEmpty(`/users/db/${userId}/deactivate`, opts || null) .then(() => true) .catch(expectCode(409)), byName: (userId, opts) => connection .get(`/users/db/${userId}?includeLastUsedTime=${(opts === null || opts === void 0 ? void 0 : opts.includeLastUsedTime) || false}`, true) .then(util_js_1.Map.dbUser), listAll: (opts) => connection .get(`/users/db?includeLastUsedTime=${(opts === null || opts === void 0 ? void 0 : opts.includeLastUsedTime) || false}`, true) .then(util_js_1.Map.dbUsers), }; }; const oidc = (connection) => { const ns = namespacedUsers(connection); return { getAssignedRoles: (userId, opts) => ns.getAssignedRoles('oidc', userId, opts), assignRoles: (roleNames, userId) => ns.assignRoles(roleNames, userId, { userType: 'oidc' }), revokeRoles: (roleNames, userId) => ns.revokeRoles(roleNames, userId, { userType: 'oidc' }), }; }; /** Implementation of the operations common to 'db', 'oidc', and legacy users. */ const baseUsers = (connection) => { const ns = namespacedUsers(connection); return { assignRoles: (roleNames, userId) => ns.assignRoles(roleNames, userId), revokeRoles: (roleNames, userId) => ns.revokeRoles(roleNames, userId), }; }; /** Implementation of the operations common to 'db' and 'oidc' users. */ const namespacedUsers = (connection) => { return { getAssignedRoles: (userType, userId, opts) => connection .get(`/authz/users/${userId}/roles/${userType}?includeFullRoles=${(opts === null || opts === void 0 ? void 0 : opts.includePermissions) || false}`) .then(util_js_1.Map.roles), assignRoles: (roleNames, userId, opts) => connection.postEmpty(`/authz/users/${userId}/assign`, Object.assign(Object.assign({}, opts), { roles: Array.isArray(roleNames) ? roleNames : [roleNames] })), revokeRoles: (roleNames, userId, opts) => connection.postEmpty(`/authz/users/${userId}/revoke`, Object.assign(Object.assign({}, opts), { roles: Array.isArray(roleNames) ? roleNames : [roleNames] })), }; }; exports.default = users;