We are preventing the login on the SCA website when the customer is a dentist. also set a static password and send an email to the customer.
// JJ.registerpage.customer.js
// Load all your starter dependencies in backend for your extension here
// ----------------
define('JJ.registerpage.customer'
, [
'JJ.registerpage.customer.ServiceController',
'Account.Model',
'SC.Model',
'Application',
'SC.Models.Init',
'Profile.Model',
'LiveOrder.Model',
'Address.Model',
'CreditCard.Model',
'SiteSettings.Model',
'underscore',
'Utils'
]
, function (
customerServiceController,
AccountModel,
SCModel,
Application,
ModelsInit,
Profile,
LiveOrder,
Address,
CreditCard,
SiteSettings,
_,
Utils
) {
'use strict';
_.extend(AccountModel, {
//validateEmail: validateEmail
register: function (user_data) {
try {
var customfields = {};
for (var property in user_data) {
if (property.substring(0, 10) == 'custentity') {
customfields[property] = user_data[property];
}
}
if (ModelsInit.customer.isGuest()) {
var guest_data = ModelsInit.customer.getFieldValues();
ModelsInit.customer.setLoginCredentials({
internalid: guest_data.internalid,
email: user_data.email,
password: user_data.password
});
ModelsInit.session.login({
email: user_data.email,
password: user_data.password
});
if (Object.keys(customfields).length) {
ModelsInit.customer.updateProfile({
internalid: guest_data.internalid,
firstname: user_data.firstname,
lastname: user_data.lastname,
companyname: user_data.company,
emailsubscribe:
user_data.emailsubscribe && user_data.emailsubscribe !== 'F'
? 'T'
: 'F',
customfields: customfields
});
} else {
ModelsInit.customer.updateProfile({
internalid: guest_data.internalid,
firstname: user_data.firstname,
lastname: user_data.lastname,
companyname: user_data.company,
emailsubscribe:
user_data.emailsubscribe && user_data.emailsubscribe !== 'F' ? 'T' : 'F'
});
}
}
else if (user_data.isdentist == "true") {
var suiteletReturn = null;
var retVal = null;
user_data.redirect = 'false';
suiteletReturn = validateEmail(user_data.email);
if (suiteletReturn.status == true) {
user_data.emailsubscribe =
user_data.emailsubscribe && user_data.emailsubscribe !== 'F' ? 'T' : 'F';
var result = ModelsInit.session.registerCustomer({
firstname: user_data.firstname,
lastname: user_data.lastname,
companyname: user_data.custentity40,
email: user_data.email,
password: '%shb?zjdOtv%n&r;.40LB3n!!=>5BC5F',
password2: '%shb?zjdOtv%n&r;.40LB3n!!=>5BC5F',
emailsubscribe: user_data.emailsubscribe && user_data.emasilsubscribe !== 'F' ? 'T' : 'F'
});
try {
ModelsInit.customer.updateProfile({
internalid: result.customerid,
customfields: {
custentity_town: user_data.custentity46,
custentity_gdcnumber: user_data.custentity_cust_gdc,
custentity_job_title_from_website_form: user_data.custentity41,
custentity_pm_reception_name: user_data.custentity43,
custentity_addr1: user_data.custentity44,
custentity_addr2: user_data.custentity45,
custentity_county: user_data.county,
custentity_postcode: user_data.custentity_postcode,
custentity_firstname: user_data.firstname,
custentity_lastname: user_data.lastname,
custentity19: user_data.custentity42,
custentity_isdentist: 'T',
category: '1',
isperson: 'F',
redirect: 'false'
}
});
ModelsInit.customer.addAddress({
addressee: user_data.firstname,
addr1: user_data.custentity44,
addr2: user_data.custentity45,
city: user_data.custentity46,
zip: user_data.custentity_postcode,
country: 'GB',
state: user_data.county,
phone: user_data.custentityphonenumber,
defaultshipping: 'T',
defaultbilling: 'T'
});
} catch (e) {
console.log('registererror', e)
}
try {
if (Object.keys(customfields).length && result.customerid) {
ModelsInit.customer.updateProfile({
internalid: result.customerid,
customfields: customfields
});
}
} catch (e) {
console.log('registererror2', e)
}
} else {
message = suiteletReturn.message;
retVal = {
status: 500
, code: "ERR_NO_SITE_ACCESS"
, message: message
};
return retVal;
}
}
else {
user_data.emailsubscribe =
user_data.emailsubscribe && user_data.emailsubscribe !== 'F' ? 'T' : 'F';
var result = ModelsInit.session.registerCustomer({
firstname: user_data.firstname,
lastname: user_data.lastname,
companyname: user_data.company,
email: user_data.email,
password: '%shb?zjdOtv%n&r;.40LB3n!!=>5BC5F',
password2: '%shb?zjdOtv%n&r;.40LB3n!!=>5BC5F',
emailsubscribe:
user_data.emailsubscribe && user_data.emasilsubscribe !== 'F' ? 'T' : 'F'
});
try {
ModelsInit.customer.updateProfile({
internalid: result.customerid,
customfields: {
custentity_town: user_data.custentity46,
custentity_cust_gdc: user_data.custentity_cust_gdc,
companyname: user_data.custentity40,
custentity_job_title_from_website_form: user_data.custentity41,
custentity_pm_reception_name: user_data.custentity43,
custentity_addr1: user_data.custentity44,
custentity_addr2: user_data.custentity45,
custentity_leadcountry: user_data.custentity_leadcountry,
custentity_postcode: user_data.custentity_postcode,
custentity19: user_data.custentity42
}
});
} catch (e) {
}
if (Object.keys(customfields).length && result.customerid) {
ModelsInit.customer.updateProfile({
internalid: result.customerid,
customfields: customfields
});
}
}
var user = Profile.get();
user.isLoggedIn = ModelsInit.session.isLoggedIn2() ? 'T' : 'F';
user.isRecognized = ModelsInit.session.isRecognized() ? 'T' : 'F';
// return {
// touchpoints: ModelsInit.session.getSiteSettings(['touchpoints']).touchpoints,
// user: user,
// cart: LiveOrder.get(),
// address: Address.list(),
// creditcard: CreditCard.list()
// };
} catch (e) {
}
ModelsInit.session.logout();
return {
touchpoints: ModelsInit.session.getSiteSettings(['touchpoints']).touchpoints,
};
}
});
});
Need to extend the View LoginRegisterRegisterView and handle redirection page View.
_.extend(LoginRegisterRegisterView.prototype, {
, redirect: function (context, response) {
const self = this;
if (response.status == 500) {
var message = "An account with this email already exists"
self.showErrorByLineId(message);
}
else {
jQuery(".login-register-wrapper-div").addClass("custom-class-register");
jQuery(".login-register-title-register").css("display", "none");
jQuery(".login-register-register-description").css("display", "none");
jQuery('#register-view')
.html('<p class="confirmation-register">Thanks for signing up!<br><span class="confirm-contact">We are just validating your GDC number and setting up your account. Please look out for our next email.</span> </p> ');
jQuery("#step-2-text").css("display", "none");
jQuery("#step-2-img-div").css("display", "");
SC.ENVIRONMENT.siteSettings.touchpoints.logout;
}
}
},
})