@openinc/parse-server-opendash
Version:
Parse Server Cloud Code for open.INC Stack.
90 lines (89 loc) • 3.01 kB
JavaScript
;
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,
},
},
});
}