Custom User Validation
Catalyst offers you the option to validate and authorize end-users to your application using custom functions. This option allows you configure a Catalyst Basic I/O function to contain the logic of the manner you wish to authorize the user with. During user sign up, the credentials of the user will be validated through this Basic I/O function.
Refer the code snippets below a sample Custom User Validation function in Java, Node.js, and Python:
Custom User Validation - Javacopy
public class MainClass implements ZCFunction { private static final Logger LOGGER = Logger.getLogger(MainClass.class.getName()); @Override public void runner(Context context, BasicIO basicIO) throws Exception { try { ZCProject.initProject(); ZCSignupUserValidationRequest requestDetails = ZCSignupUserService.getSignupValidationRequest(basicIO); if (requestDetails != null) { /Validation logic starts / LOGGER.info(“Inside null check”); ZCSignupUserValidationResponse validationResponse = ZCSignupUserValidationResponse.getInstance(); if (requestDetails.getUserDetails().getEmailId().contains("@notallowedmail")) { validationResponse.setStatus(ZCSignupValidationStatus.FAILURE); // The user has failed authentication } else { validationResponse.setStatus(ZCSignupValidationStatus.SUCCESS); // The actions that occur in the event of a successful authentication can be customized ZCSignupResponseUserDetails respUserDetails = ZCSignupResponseUserDetails.getInstance(); respUserDetails.setFirstName("{customFirstName}"); respUserDetails.setLastName("{customLastname}"); respUserDetails.setRoleIdentifier("{customRoleName}"); respUserDetails.setOrgId("{customOrgId}"); validationResponse.setUserDetails(respUserDetails); } basicIO.write(validationResponse); / Validation logic ends/ } } catch (Exception e) { basicIO.write(e); LOGGER.log(Level.SEVERE, “Exception in MainClass”, e); basicIO.setStatus(500); } } }
Custom User Validation - Node.jscopy
const catalyst = require(“zcatalyst-sdk-node”); module.exports = (context, basicIO) => { const catalystApp = catalyst.initialize(context); const userManagement = catalystApp.userManagement(); const requestDetails = userManagement.getSignupValidationRequest(basicIO); if (requestDetails !== undefined) { if (requestDetails.user_details.email_id.includes(“node”)) { basicIO.write( JSON.stringify({ status: “failure”, }) ); } else { basicIO.write( JSON.stringify({ status: “success”, user_details: { first_name: “CustomFirstName”, last_name: “CustomLastName”, role_identifier: “CustomRole”, org_id: “CustomOrgID”, //If you are providing the Org ID, make sure it is copied exactly from the console. }, }) ); } } context.close(); };
Custom User Validation - Pythoncopy
import json import zcatalyst_sdk def handler(context, basicio): app = zcatalyst_sdk.initialize() auth_service = app.authentication() request_details = auth_service.get_signup_validation_request(basicio) if request_details: if “spam.com” in request_details[“user_details”][“email_id”]: basicio.write(json.dumps({“status”: “failure”})) else: basicio.write( json.dumps( { “status”: “success”, “user_details”: { “first_name”: “Amelia”, “last_name”: “Jack”, “role_identifier”: “cx_role”, ‘org_id’: orgId #If you are providing the Org ID, make sure it is copied exactly from the console. }, } ) ) context.close()
Note: These snippets are also available in the Catalyst Java SDK, Node.js SDK, and Python SDK repositories.Last Updated 2024-01-04 12:16:42 +0530 +0530
Yes
No
Send your feedback to us
SkipSubmit