kuzzle-sdk
Version:
Official Javascript SDK for Kuzzle
413 lines • 14.4 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.SecurityController = void 0;
const Base_1 = require("./Base");
const Role_1 = require("../core/security/Role");
const Role_2 = require("../core/searchResult/Role");
const Profile_1 = require("../core/security/Profile");
const Profile_2 = require("../core/searchResult/Profile");
const User_1 = require("../core/security/User");
const User_2 = require("../core/searchResult/User");
class SecurityController extends Base_1.BaseController {
/**
* @param {Kuzzle} kuzzle
*/
constructor(kuzzle) {
super(kuzzle, "security");
}
/**
* Creates a new API key for a user.
*
* @param {String} userId - User kuid
* @param {String} description - API key description
* @param {Object} [options] - { _id, expiresIn, refresh }
*
* @returns {Promise.<Object>} ApiKey { _id, _source }
*/
createApiKey(userId, description, options = {}) {
const request = {
_id: options._id,
action: "createApiKey",
body: {
description,
},
expiresIn: options.expiresIn,
refresh: options.refresh,
userId,
};
return this.query(request, options).then((response) => response.result);
}
/**
* Checks if an API action can be executed by a user
*
* @param {String} kuid - User kuid
* @param {Object} requestPayload - Request to check
*/
checkRights(kuid, requestPayload, options = {}) {
const request = {
action: "checkRights",
body: requestPayload,
userId: kuid,
};
return this.query(request, options).then((response) => response.result.allowed);
}
/**
* Deletes an user API key.
*
* @param {String} userId - User kuid
* @param {String} id - API key ID
* @param {Object} [options] - { refresh }
*
* @returns {Promise}
*/
deleteApiKey(userId, id, options = {}) {
const request = {
_id: id,
action: "deleteApiKey",
refresh: options.refresh,
userId,
};
return this.query(request, options);
}
/**
* Searches for a user API key.
*
* @param {String} userId - User kuid
* @param {Object} [query] - Search query
* @param {Object} [options] - { from, size }
*
* @returns {Promise.<object[]>} - { hits, total }
*/
searchApiKeys(userId, query = {}, options = {}) {
const request = {
action: "searchApiKeys",
body: query,
from: options.from,
lang: options.lang,
size: options.size,
userId,
};
return this.query(request, options).then((response) => response.result);
}
createCredentials(strategy, _id, body, options = {}) {
return this.query({
_id,
action: "createCredentials",
body,
strategy,
}, options).then((response) => response.result);
}
createFirstAdmin(_id, body, options = {}) {
const request = {
_id,
action: "createFirstAdmin",
body,
reset: options.reset,
};
return this.query(request, options).then((response) => new User_1.User(this.kuzzle, response.result._id, response.result._source));
}
createOrReplaceProfile(_id, body, options = {}) {
const request = {
_id,
action: "createOrReplaceProfile",
body,
};
return this.query(request, options).then((response) => new Profile_1.Profile(this.kuzzle, response.result._id, response.result._source));
}
createOrReplaceRole(_id, body, options = {}) {
const request = {
_id,
action: "createOrReplaceRole",
body,
force: options.force ? true : null,
};
return this.query(request, options).then((response) => new Role_1.Role(this.kuzzle, response.result._id, response.result._source.controllers));
}
createProfile(_id, body, options = {}) {
const request = {
_id,
action: "createProfile",
body,
};
return this.query(request, options).then((response) => new Profile_1.Profile(this.kuzzle, response.result._id, response.result._source));
}
createRestrictedUser(body, _id = null, options = {}) {
if (!body.content) {
body.content = {};
}
const request = {
_id,
action: "createRestrictedUser",
body,
};
return this.query(request, options).then((response) => new User_1.User(this.kuzzle, response.result._id, response.result._source));
}
createRole(_id, body, options = {}) {
const request = {
_id,
action: "createRole",
body,
force: options.force ? true : null,
};
return this.query(request, options).then((response) => new Role_1.Role(this.kuzzle, response.result._id, response.result._source.controllers));
}
createUser(_id, body, options = {}) {
const request = {
_id,
action: "createUser",
body,
};
return this.query(request, options).then((response) => new User_1.User(this.kuzzle, response.result._id, response.result._source));
}
deleteCredentials(strategy, _id, options = {}) {
const request = {
_id,
action: "deleteCredentials",
strategy,
};
return this.query(request, options).then((response) => response.result);
}
deleteProfile(_id, options = {}) {
const request = {
_id,
action: "deleteProfile",
};
return this.query(request, options).then((response) => response.result);
}
deleteRole(_id, options = {}) {
const request = {
_id,
action: "deleteRole",
};
return this.query(request, options).then((response) => response.result);
}
deleteUser(_id, options = {}) {
const request = {
_id,
action: "deleteUser",
};
return this.query(request, options).then((response) => response.result);
}
getAllCredentialFields(options = {}) {
return this.query({
action: "getAllCredentialFields",
}, options).then((response) => response.result);
}
getCredentialFields(strategy, options = {}) {
return this.query({
action: "getCredentialFields",
strategy,
}, options).then((response) => response.result);
}
getCredentials(strategy, _id, options = {}) {
return this.query({
_id,
action: "getCredentials",
strategy,
}, options).then((response) => response.result);
}
getCredentialsById(strategy, _id, options = {}) {
return this.query({
_id,
action: "getCredentialsById",
strategy,
}, options).then((response) => response.result);
}
getProfile(_id, options = {}) {
return this.query({ _id, action: "getProfile" }, options).then((response) => new Profile_1.Profile(this.kuzzle, response.result._id, response.result._source));
}
getProfileMapping(options = {}) {
return this.query({
action: "getProfileMapping",
}, options).then((response) => response.result);
}
getProfileRights(_id, options = {}) {
return this.query({
_id,
action: "getProfileRights",
}, options).then((response) => response.result.hits);
}
getRole(_id, options = {}) {
return this.query({
_id,
action: "getRole",
}, options).then((response) => new Role_1.Role(this.kuzzle, response.result._id, response.result._source.controllers));
}
getRoleMapping(options = {}) {
return this.query({
action: "getRoleMapping",
}, options).then((response) => response.result);
}
getUser(_id, options = {}) {
return this.query({
_id,
action: "getUser",
}, options).then((response) => new User_1.User(this.kuzzle, response.result._id, response.result._source));
}
getUserMapping(options = {}) {
return this.query({
action: "getUserMapping",
}, options).then((response) => response.result);
}
getUserRights(_id, options = {}) {
return this.query({
_id,
action: "getUserRights",
}, options).then((response) => response.result.hits);
}
getUserStrategies(_id, options = {}) {
return this.query({
_id,
action: "getUserStrategies",
}, options).then((response) => response.result.strategies);
}
hasCredentials(strategy, _id, options = {}) {
return this.query({
_id,
action: "hasCredentials",
strategy,
}, options).then((response) => response.result);
}
mDeleteProfiles(ids, options = {}) {
const request = {
action: "mDeleteProfiles",
body: { ids },
};
return this.query(request, options).then((response) => response.result);
}
mDeleteRoles(ids, options = {}) {
const request = {
action: "mDeleteRoles",
body: { ids },
};
return this.query(request, options).then((response) => response.result);
}
mDeleteUsers(ids, options = {}) {
const request = {
action: "mDeleteUsers",
body: { ids },
};
return this.query(request, options).then((response) => response.result);
}
mGetProfiles(ids, options = {}) {
return this.query({ action: "mGetProfiles", body: { ids } }, options).then((response) => response.result.hits.map((hit) => new Profile_1.Profile(this.kuzzle, hit._id, hit._source)));
}
mGetUsers(ids, options = {}) {
const request = {
action: "mGetUsers",
body: { ids },
};
return this.query(request, options).then((response) => response.result.hits.map((hit) => new User_1.User(this.kuzzle, hit._id, hit._source)));
}
mGetRoles(ids, options = {}) {
return this.query({
action: "mGetRoles",
body: { ids },
}, options).then((response) => response.result.hits.map((hit) => new Role_1.Role(this.kuzzle, hit._id, hit._source.controllers)));
}
refresh(collection, options = {}) {
return this.query({
action: "refresh",
collection,
}, options);
}
replaceUser(_id, body, options = {}) {
const request = {
_id,
action: "replaceUser",
body,
};
return this.query(request, options).then((response) => new User_1.User(this.kuzzle, response.result._id, response.result._source));
}
searchProfiles(body, options = {}) {
const request = {
action: "searchProfiles",
body,
};
for (const [key, value] of Object.entries(options)) {
request[key] = value;
}
return this.query(request, options).then((response) => new Profile_2.ProfileSearchResult(this.kuzzle, request, options, response.result));
}
searchRoles(body, options = {}) {
const request = {
action: "searchRoles",
body,
};
for (const [key, value] of Object.entries(options)) {
request[key] = value;
}
return this.query(request, options).then((response) => new Role_2.RoleSearchResult(this.kuzzle, request, options, response.result));
}
searchUsers(body, options = {}) {
const request = {
action: "searchUsers",
body,
};
for (const opt of ["from", "size", "scroll", "lang"]) {
request[opt] = options[opt];
}
return this.query(request, options).then((response) => new User_2.UserSearchResult(this.kuzzle, request, options, response.result));
}
updateCredentials(strategy, _id, body, options = {}) {
return this.query({
_id,
action: "updateCredentials",
body,
strategy,
}, options).then((response) => response.result);
}
updateProfile(_id, body, options = {}) {
const request = {
_id,
action: "updateProfile",
body,
};
return this.query(request, options).then((response) => new Profile_1.Profile(this.kuzzle, response.result._id, response.result._source));
}
updateProfileMapping(body, options = {}) {
return this.query({
action: "updateProfileMapping",
body,
}, options).then((response) => response.result);
}
updateRole(_id, body, options = {}) {
const request = {
_id,
action: "updateRole",
body,
force: options.force ? true : null,
};
return this.query(request, options).then((response) => new Role_1.Role(this.kuzzle, response.result._id, response.result._source.controllers));
}
updateRoleMapping(body, options = {}) {
return this.query({
action: "updateRoleMapping",
body,
}, options).then((response) => response.result);
}
updateUser(_id, body, options = {}) {
const request = {
_id,
action: "updateUser",
body,
};
return this.query(request, options).then((response) => new User_1.User(this.kuzzle, response.result._id, response.result._source));
}
updateUserMapping(body, options = {}) {
return this.query({
action: "updateUserMapping",
body,
}, options).then((response) => response.result);
}
validateCredentials(strategy, _id, body, options = {}) {
return this.query({
_id,
action: "validateCredentials",
body,
strategy,
}, options).then((response) => response.result);
}
}
exports.SecurityController = SecurityController;
//# sourceMappingURL=Security.js.map
;