@openinc/parse-server-opendash
Version:
Parse Server Cloud Code for open.INC Stack.
72 lines (71 loc) • 2.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.init = init;
const transformLogin_1 = require("../helper/transformLogin");
const openinc_auth_common_1 = require("./openinc-auth.common");
async function init(name) {
Parse.Cloud.define(name, async function (request) {
const params = request.params;
if (!params.userId && !params.email && !params.username) {
throw new Parse.Error(Parse.Error.VALIDATION_ERROR, "Missing either userId, email or username.");
}
async function getUser() {
try {
if (params.userId) {
return await new Parse.Query(Parse.User).get(params.userId, {
useMasterKey: true,
});
}
if (params.email) {
const email = (0, transformLogin_1.transformLogin)(params.email);
return await new Parse.Query(Parse.User)
.equalTo("email", (0, transformLogin_1.transformLogin)(email))
.first({
useMasterKey: true,
});
}
if (params.username) {
const username = (0, transformLogin_1.transformLogin)(params.username);
return await new Parse.Query(Parse.User)
.equalTo("username", username)
.first({
useMasterKey: true,
});
}
return undefined;
}
catch (error) {
return undefined;
}
}
const user = await getUser();
if (!user) {
throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, "User not found.");
}
const sessionToken = await (0, openinc_auth_common_1.createSessionToken)(user, request.installationId, {
action: "login",
provider: "openinc-auth-login-admin",
by: request.user?.id,
});
return {
sessionToken,
};
}, {
requireUser: true,
requireAnyUserRoles: ["od-admin"],
fields: {
userId: {
required: false,
type: String,
},
email: {
required: false,
type: String,
},
username: {
required: false,
type: String,
},
},
});
}