Prevent Login in SCA Website After Registration

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;
                        }

                    }
                    
                    },
                })

Leave a comment

Your email address will not be published. Required fields are marked *