UNPKG

@openinc/parse-server-opendash

Version:
72 lines (71 loc) 2.54 kB
"use strict"; 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, }, }, }); }