Authenticating User Accounts with Hypi's low code APIs

Authentication involves verifying the identification of a user. It is a typical use case in any data-driven application to create User Accounts and provide login to access the features of the application. Hypi’s low code APIs facilitate authentication of user accounts.

Stay with us to know the process of authentication with Hypi’s low code platform!

About Page

Let’s take the example of the Social Media platform. We want to build up an About page of the user and provide login to the User Account.

There is an inbuilt Account data type provided by Hypi’s low code platform. It has all the fields necessary to create a user account. Account is the data type provided by the Core system app of Hypi.

type Account {
  hypi: Hypi
  verified: Boolean
  enabled: Boolean
  username: String!
  password: Password!
  owner: Person
  emails: [Email!]
  phones: [Phone!]
  roles: [Role!]
 }

Let’s create a user account with the createAccount function. Username, password are essential fields to login. A user may log in using a Username or Email. Personal information of the user like name, date of birth, gender, address, the phone number can be stored in the account data type.

The Person data type holds personal information o the user. You may check all the Core data types here. Or you may check the fields of any system data type on the user interface. They are listed under Dependencies as core tables.

mutation {
   createAccount(
     value: {
       username: "test-hypi@hypi.io"
       password: { value: "test-hypi@hypi.io" }
       emails: [{ value: "test-hypi@hypi.io" }]
       owner: {
         dob: "1980-12-3"
         gender: MALE
         names: [{ title: "Mr", firstName: "Hypi", lastName: "Low Code" }]
         addresses: [
           {
             door: "1"
             street: "17"
             town: "Pasir Ris"
             city: "Singapore"
             country: { name: "Singapore" }
             postCode: "123456"
           }
         ]
       }
       phones: [{ number: "1234567", code: "+65" }]
     }
   ) {
     id
     created
     createdBy
   }
 }

#Result

{
   "data": {
     "createAccount": {
       "id": "01F6HPFM9M8HDHT1CFHY3RDXHV",
       "created": "2021-05-25T12:02:40Z",
       "createdBy": "01F6HPFM9M8HDHT1CFHY3RDXHV"
     }
   }
 }

The function returns the hypi.id of the Account object. It stamps the date of creation of the Account in the created field. createdBy also stores the hypi.id of the account.

The Account object also keeps the information whether the user has been authenticated using the Boolean fields verified and enabled.

{
   find(type: Account, arcql: "hypi.id = '01F6HPFM9M8HDHT1CFHY3RDXHV'") {
     edges {
       node {
         … on Account {
           username
           verified
           enabled
         }
       }
       cursor
     }
   }
 }

 #Result
 {
   "data": {
     "find": {
       "edges": [
         {
           "node": {
             "username": "test-hypi@hypi.io",
             "verified": false,
             "enabled": true
           },
           "cursor": "01F6HPFM9M8HDHT1CFHY3RDXHV"
         }
       ]
     }
   }
 }

By default, the account gets enabled. Before verification, the verified field has false status. After verification of the user details, you may change the status to true by updating the Account object using the upsert function.

Login

The user may log in to the account using a username and password. Successful login generates session token. The user has to use the session token to perform various actions like CRUD operations. This function also returns the session expiry time.

{
     login(
         username: "test-hypi@hypi.io", 
         password: "test-hypi@hypi.io"
     ) {
         sessionToken
         sessionExpires
         errorCode
         errorMsg
     }
 }

#Result

{
      "data": {
      "login": {
          "sessionToken": "",
          "sessionExpires": 1618305724,
          "errorCode": null,
          "errorMsg": null
      }
    }
 }

Users may also log in using the loginByEmail function. This function takes email-id and password as inputs. It also returns SessionToken and SessionExpiry.

{
     loginByEmail(email: "test-hypi@hypi.io", password: "test-hypi@hypi.io") {
         sessionToken
         sessionExpires
         errorCode
         errorMsg
     }
 }

#Result

{
      "data": {
      "loginByEmail": {
          "sessionToken": "test.login-token",
          "sessionExpires": 1618306063,
          "errorCode": null,
          "errorMsg": null
      }
    }
 }

If there is an error with the login, the Error code and Error messages are returned.

{
     loginByEmail(email: "test-hypi@hypi.io", password: "teast-hypi@hypi.io") {
         sessionToken
         sessionExpires
         errorCode
         errorMsg
     }
}

#Result

 {
   "data": {
     "loginByEmail": {
       "sessionToken": null,
       "sessionExpires": null,
       "errorCode": "unauthorised",
       "errorMsg": "Check the credentials provided, if they're correct ensure this account has permission to access this instance."
     }
   }
 }

Concluding Note

Provide authentication functionality in your application with ease!

Hypi’s low code platform makes the authentication process simpler.