--- title: "Configure the Basic I/O Function" url: https://docs.catalyst.zoho.com/en/tutorials/embedded-auth/nodejs/configure-function/ description: "Create a simple web application using the features of Catalyst Embedded Authentication that provides user sign-up, application login, password reset, and implements sign-in using common identity providers." last_updated: 2025-11-19T15:07:41Z service: All Services type: tutorial related_links: - name: "Basic I/O Functions" url: /en/serverless/help/functions/basic-io/ - name: "Functions Directory Structure" url: /en/cli/v1/project-directory-structure/functions-directory --- # Configure the Basic I/O Function Now, we will begin coding the authorization portal application by configuring the function component. The [function’s directory](https://docs.catalyst.zoho.com/en/cli/v1/project-directory-structure/functions-directory), (`functions/authorization_portal_function`), contains: * The `index.js` main function file * The `catalyst-config.json` configuration file * Node modules * [`package.json`](https://docs.npmjs.com/files/package.json) and [`package-lock.json`](https://docs.npmjs.com/configuring-npm/package-lock-json.html) dependency files You will be adding code in the `index.js` file. The Basic I/O function contains the following functionalities: * The end-user's details will provided as a JSON input to the *Custom User Validation* function. * The function is coded to implement a custom logic based upon which the end-user will either be authenticated or denied. > **Note:** For the purpose of this tutorial, we have coded a logic for the Custom User Validation function where if the user's email provider is anyone other than Zylker Technology (`@zylker.com`) the end-user will not be able to sign up to the application. You can either use the same or code a logic of your preference. Now, let’s begin coding the Basic I/O function. Copy the code given below and paste it in the `index.js` file in the `functions/authorization_portal_function` directory of your project, and save the file. You can use any IDE of your choice to work with the application’s files. > **Note:** Please go through the code in this section to make sure you fully understand it. **index.js** ```javascript const catalyst = require('zcatalyst-sdk-node') module.exports = (context, basicIO) => { const catalystApp = catalyst.initialize(context) const requestDetails = catalystApp.userManagement().getSignupValidationRequest(basicIO) if (requestDetails) { if (requestDetails.user_details.email_id.includes('@zylker.com')) { // The actions that occur in the event of a successful authentication can be customized basicIO.write(JSON.stringify({ status: 'success', user_details: { first_name: requestDetails.user_details.first_name, last_name: requestDetails.user_details.last_name, email_id: requestDetails.user_details.email_id, role_identifier: 'App User', // If you want to override the default role, you can specify the role id/name here. org_id: '' // If you are providing the Org ID, make sure it is copied exactly from the console. } })) } else { // The user has failed authentication basicIO.write(JSON.stringify({ status: 'failure' })) } } context.close() } ``` > **Note:** You can also use this [SDK](https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/authentication/custom-user-validation/) to code your own custom logic instead of the one implemented above. The function directory is now configured. We can now proceed to configuring the client directory.