public/login.js

/**
 * Login
 * @method login
 * @memberof Elvis.prototype
 * @param params {Object} - An object contains login parameters
 * @param [params.username] {String} - Either username and password or cred is required
 * @param [params.password] {String} - Either username and password or cred is required
 * @param [params.cred] {String} - A base64 string. Either username and password or cred is required
 * @param [params.nextUrl] {String} - Url for next page
 * @param [params.failUrl] {String} - Url for fail page
 * @param [params.locale] {String} - language_COUNTRY
 * @param [params.timezoneOffset] {Number} - Timezone offset in milliseconds
 * @param [params.clientType] {string} - Client type
 * @param [params.returnProfile] {Boolean} - Returns profile info if given `true`
 * @param isSticky {Boolean} - Sticky session flag; set it true to use one assigned cluster node, false or omit for load balancing
 * @returns {Promise}
 */
module.exports = function login(params, isSticky) {
  return new Promise((resolve, reject) => {
    this.__request({
      url: this.__getRemoteURL('/services/login'),
      params: params,
      failure: reject,
      success: (data, response) => {
        if (data.loginSuccess) {
          this.__setCookieHeader(response, isSticky)
          resolve(data)
        } else {
          reject(data)
        }
      }
    })
  })
}