Auto Login

Auto Login

How it works?


AutoLogin is a free HostBill plugin (included in all versions since 2016-05-06) that allows you to log-in your customers from external application/website with customer email address.

The power of AutoLogin feature is that you are not forced to redirect user anywhere after log-in into your application, all actions are taken in the background, between your application's server and HostBill's.
Additionally you can auto-logout customers once they log-out of your application.

Connecting your application and auto-login should work with this flow:

  1. Client logs-in into your application
  2. Your application generates access hash from user email + secret from module configuration
  3. Your application HTTP POST this hash to Auto-Login module
  4. Module authenticates customer, and returns url that you should link your application from. I.e.: via "Access billing portal" link 
  5. Once customer visits this link he/she will be automatically logged in.
  6. [Optional] When customer logs out of your application, it POST request to log-out customer from HostBill too
  7. [Optional] You can use 'redirect' parameter to generate URL that redirects clients to a specific resource. 

Configuring module


This module is by default included in all new HostBill downloadable packages. 

Visit Settings → Modules → Plugins, find and activate "Client Auto Login" module. If module is not on your list, make sure to update to latest HostBill version first.

You need to enter:

  • your secret code that will be used to create access hash in your application code,
  • set rate limit attempts
  •  hash verification method (this will impact your code)


Important info about code samples

Atlassian tends to replace & char with & in code below, after copy please replace & with & in your code and set $hashMethod

Code sample: Login customer


Code sample below is in PHP using cURL.

Sample log-in code
<?php

//Set hash method: 'md5' or 'hmac_sha256'
$hashMethod = 'md5';

// Get cURL resource
$ch = curl_init();
// Set AutoLogin url
curl_setopt($ch, CURLOPT_URL, 'http://yourhostbillurl.com/index.php?cmd=autologin&action=login');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// Data to post:
$email= "user@email.com"; //Client's email address
$duration = "160"; //Time in seconds for how long user login link will work
$secret = "SECRET_CODE"; //Secret code set in module configuration (in previous step)

$hashData = $email.$secret.$duration;
if($hashMethod && $hashMethod === 'hmac_sha256') {
	$hash = hash_hmac('sha256', $hashData, $secret); //Verification string
} else {
	$hash = md5($hashData); //Verification string
}

$body = http_build_query([
	'email'=>$email,
	'duration'=>$duration,
	'hash'=>$hash,
    'redirect' => 'http://yourhostbillurl.com/index.php?cmd=clientarea&action=invoices', //optional
]); //data to post

// Set POST data
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);

// Send the request & save response to $resp
$resp = curl_exec($ch);

if(!$resp) {
  die('Error: "' . curl_error($ch) . '" - Code: ' . curl_errno($ch));
} else {
   $array = json_decode($resp,true);
   if($array['success']) {
 		$login_url = $array['login_url'];  //url to link customer to HostBill
		$token = $array['token']; //token we can use to log user out
   } else {
	die('Error: "' . $array['error'] .'"');
   }
}

curl_close($ch);


Code sample: Logout customer


Code sample below is in PHP using cURL.

Sample log-out code
<?php

// Get cURL resource
$ch = curl_init();
// Set AutoLogin url
curl_setopt($ch, CURLOPT_URL, 'http://yourhostbillurl.com/index.php?cmd=autologin&action=autologout');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// Data to post:
$token = ""; //Login token returned upon user auto-login (previous step)

$body = http_build_query([
	'token'=>$token
]); //data to post

// Set POST data
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);

// Send the request
$resp = curl_exec($ch);
curl_close($ch);