/*
* Copyright (c) 2016 CA, Inc. All rights reserved.
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*
*/
var MASPluginUser = function(masPluginUser) {
///------------------------------------------------------------------------------------------------------------------
/// @name Properties
///------------------------------------------------------------------------------------------------------------------
//console.log(JSON.stringify(masPluginUser));
/**
* The username of the user
* @member {string}
*/
this.userName = masPluginUser.userName;
/**
* The family name of the user
* @member {string}
*/
this.familyName = masPluginUser.familyName;
/**
* The given name of the user
* @member {string}
*/
this.givenName = masPluginUser.givenName;
/**
* The formatted name of the user
* @member {string}
*/
this.formattedName = masPluginUser.formattedName;
/**
* Lists of the email addresses of the user
* @member {array}
*/
this.emailAddresses = masPluginUser.emailAddresses;
/**
* Lists of the phone numbers of the user
* @member {array}
*/
this.phoneNumbers = masPluginUser.phoneNumbers;
/**
* Lists of the addresses of the user
* @member {array}
*/
this.addresses = masPluginUser.addresses;
/**
* Returns the base64 string of the user's photo
* @member {string}
*/
this.photos = masPluginUser.photos;
/**
* List of the groups the user is a part of
* @member {array}
*/
this.groups = masPluginUser.groups;
/**
* Checks if the user is active
* @member {bool}
*/
this.active = masPluginUser.active;
/**
* Boolean indicator that specifies whether the MASPluginUser object is the current user.
* @param {function} successHandler user defined success callback
* @param {function} errorHandler user defined error callback
*/
this.isCurrentUser = function(successHandler, errorHandler) {
return Cordova.exec(successHandler, errorHandler, "MASPluginUser", "isCurrentUser", []);
};
/**
* Boolean indicator that specifies whether the MASPluginUser object is authenticated
* @param {function} successHandler user defined success callback
* @param {function} errorHandler user defined error callback
*/
this.isAuthenticated = function(successHandler, errorHandler) {
return Cordova.exec(successHandler, errorHandler, "MASPluginUser", "isAuthenticated", []);
};
/**
* Boolean indicator that specifies whether the currently authenticated MASPluginUser object is locked
* @param {function} successHandler user defined success callback
* @param {function} errorHandler user defined error callback
*/
this.isSessionLocked = function(successHandler, errorHandler) {
return Cordova.exec(successHandler, errorHandler, "MASPluginUser", "isSessionLocked", []);
};
///------------------------------------------------------------------------------------------------------------------
/// @name Current User - Lock/Unlock Session
///------------------------------------------------------------------------------------------------------------------
/**
* Locks the current session
* @param {function} successHandler user defined success callback
* @param {function} errorHandler user defined error callback
*/
this.lockSession = function(successHandler, errorHandler) {
return Cordova.exec(successHandler, errorHandler, "MASPluginUser", "lockSession", []);
}
/**
* Unlocks the current session
* @param {function} successHandler user defined success callback
* @param {function} errorHandler user defined error callback
*/
this.unlockSession = function(successHandler, errorHandler) {
return Cordova.exec(successHandler, errorHandler, "MASPluginUser", "unlockSession", []);
}
/**
* Unlocks the current session with a message to the user
* @param {function} successHandler user defined success callback
* @param {function} errorHandler user defined error callback
* @param {string} message message to the user
*/
this.unlockSessionWithMessage = function(successHandler, errorHandler, message) {
return Cordova.exec(successHandler, errorHandler, "MASPluginUser", "unlockSessionWithMessage", [message]);
}
/**
* Removes the session lock
* @param {function} successHandler user defined success callback
* @param {function} errorHandler user defined error callback
*/
this.removeSessionLock = function(successHandler, errorHandler) {
return Cordova.exec(successHandler, errorHandler, "MASPluginUser", "removeSessionLock", []);
}
/**
Logs off the user.
*/
this.logout = function(successHandler, errorHandler) {
return Cordova.exec(function(result) {
delete MASPluginUser.sharedCurrUser;
successHandler(result);
}, errorHandler, "MASPluginUser", "logoutUser", []);
};
}
///------------------------------------------------------------------------------------------------------------------
/// @name Current User
///------------------------------------------------------------------------------------------------------------------
MASPluginUser.sharedCurrUser;
/**
* The authenticated user for the application, if any. nil returned if none
* This is a singleton object.
* @param {function} successHandler user defined success callback
* @param {function} errorHandler user defined error callback
* @return Returns a singleton 'MASPluginUser' object.
*/
MASPluginUser.currentUser = function(successHandler, errorHandler) {
Cordova.exec(function(masPluginUser) {
if (typeof(MASPluginUser.sharedCurrUser === 'undefined')){
MASPluginUser.sharedCurrUser = new MASPluginUser(masPluginUser);
}else {
delete MASPluginUser.sharedCurrUser;
MASPluginUser.sharedCurrUser = new MASPluginUser(masPluginUser);
}
successHandler(MASPluginUser.sharedCurrUser);
}, errorHandler, "MASPluginUser", "currentUser");
};
//------------------------------------------------------------------------------------------------------------------
/// @name Authentication
///-----------------------------------------------------------------------------------------------------------------
/**
Authenticates the user using the username and password
* @param {function} successHandler user defined success callback
* @param {function} errorHandler user defined error callback
* @param {string} userName username of the user
* @param {string} password password of the user
*/
MASPluginUser.loginWithUsernameAndPassword = function(successHandler, errorHandler, username, password) {
return Cordova.exec(function(result) {
if (result && typeof(MASPluginUser.sharedCurrUser !== 'undefined')){
MASPluginUser.currentUser(function(){}, function(){});
}
successHandler(result);
}, errorHandler, "MASPluginUser", "loginWithUsernameAndPassword", [username, password]);
};
module.exports = MASPluginUser;