UNPKG

@openinc/parse-server-opendash

Version:
90 lines (89 loc) 3.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.init = init; const config_1 = require("../features/config"); const transformLogin_1 = require("../helper/transformLogin"); const types_1 = require("../types"); async function init(name) { Parse.Cloud.define(name, async function (request) { const params = request.params; const username = (0, transformLogin_1.transformLogin)(params.username); const name = params.name; const tenant = params.tenant; const email = (0, transformLogin_1.transformLogin)(params.email); const password = params.password; const setupToken = params.setupToken; let tenantRef = undefined; if (tenant) { if (setupToken) { tenantRef = new types_1.Tenant({ label: tenant }); tenantRef.save(null, { useMasterKey: true }); } else { tenantRef = await new Parse.Query(types_1.Tenant).get(tenant, { useMasterKey: true, }); } } const user = new Parse.User(); user.setEmail(email); user.setPassword(password); user.set("name", name); user.set("tenant", tenantRef); if (username && config_1.ConfigInstance.getInstance().getBoolean("AUTH_ALLOW_USERNAME")) { user.setUsername(username); } else { user.setUsername(email); } if (setupToken) { user.set("emailVerified", true); if (tenantRef) { user.set("tenantVerified", true); user.set("tenantAdmin", true); } } await user.save(null, { useMasterKey: true }); return { success: true, }; }, { requireUser: false, fields: { username: { required: false, type: String, }, tenant: { required: config_1.ConfigInstance.getInstance().getBoolean("AUTH_SIGNUP_REQUIRE_TENANT"), type: String, }, email: { required: true, type: String, }, password: { required: true, type: String, options: (value) => { const minLength = config_1.ConfigInstance.getInstance().getNumber("AUTH_PASSWORD_MIN_LENGTH"); return value.length >= minLength; }, }, name: { required: true, type: String, }, setupToken: { required: false, type: String, }, tosAccepted: { required: !!config_1.ConfigInstance.getInstance().get("APP_TOS_URL"), type: Boolean, options: (value) => value === true, }, }, }); }