mirror of
https://github.com/pierre42100/ComunicWeb
synced 2025-03-28 05:50:44 +00:00
211 lines
5.8 KiB
JavaScript
211 lines
5.8 KiB
JavaScript
/**
|
|
* Manage user login
|
|
*
|
|
* @author Pierre HUBERT
|
|
*/
|
|
|
|
ComunicWeb.user.userLogin = {
|
|
|
|
/**
|
|
* @var {Boolean} Store user login state (true by default)
|
|
*/
|
|
__userLogin: true,
|
|
|
|
/**
|
|
* @var {Integer} Store the current user ID
|
|
*/
|
|
__userID: 0,
|
|
|
|
|
|
/**
|
|
* Tell if user is logged in or not
|
|
*
|
|
* @return {Boolean} Depend of the result
|
|
*/
|
|
getUserLoginState: function(){
|
|
//Return login state
|
|
return this.__userLogin;
|
|
},
|
|
|
|
/**
|
|
* Get user ID (if logged in)
|
|
*
|
|
* @return {String.Boolean} User ID or false if not logged in
|
|
*/
|
|
getUserID: function(){
|
|
//If user is logged in
|
|
if(this.getUserLoginState() === true){
|
|
//Return user ID
|
|
return this.__userID;
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Try to get and store current user ID
|
|
*
|
|
* @param {function} afterGetCurrentUserID What to do next
|
|
* @return {Integer} 0 if it fails
|
|
*/
|
|
getCurrentUserId: function(afterGetCurrentUserID){
|
|
//Prepare and make an API request
|
|
var apiURI = "user/getCurrentUserID";
|
|
var params = {};
|
|
var requireLoginTokens = true;
|
|
|
|
//What to do after the request is completed
|
|
var afterAPIrequest = function(result){
|
|
//Check if we got any error
|
|
if(result.error){
|
|
//Set user ID to 0 (security purpose)
|
|
ComunicWeb.user.userLogin.__userID = 0;
|
|
|
|
//If error is 404, make user as logged out
|
|
if(result.error.code == 401){
|
|
ComunicWeb.user.userLogin.__userLogin = false;
|
|
ComunicWeb.user.loginTokens.deleteLoginTokens();
|
|
|
|
//Refresh the page
|
|
location.href = document.location;
|
|
}
|
|
|
|
//Perform next action
|
|
afterGetCurrentUserID(0);
|
|
}
|
|
else{
|
|
//Update user ID
|
|
ComunicWeb.user.userLogin.__userID = result.userID;
|
|
|
|
//Perform next action
|
|
afterGetCurrentUserID(result.userID)
|
|
}
|
|
|
|
};
|
|
|
|
//Perform request
|
|
ComunicWeb.common.api.makeAPIrequest(apiURI, params, requireLoginTokens, afterAPIrequest);
|
|
},
|
|
|
|
/**
|
|
* Refresh the user login state
|
|
*
|
|
* @param {Function} afterRefresh Optionnal, what to do after refreshing login
|
|
*/
|
|
refreshLoginState: function(afterRefresh){
|
|
//First, check if we have login tokens
|
|
if(ComunicWeb.user.loginTokens.checkLoginTokens() !== true){
|
|
//Specify the user isn't logged in
|
|
this.__userLogin = false;
|
|
this.__userID = 0;
|
|
|
|
//If there is a next action, do it (even if user isn't logged in)
|
|
if(afterRefresh){
|
|
afterRefresh();
|
|
}
|
|
|
|
//User not logged in
|
|
return false;
|
|
}
|
|
|
|
//Try to use tokens to get user infos
|
|
var nextStep = function(userID){
|
|
//We check received data
|
|
if(userID == 0){
|
|
//We consider user is not logged in
|
|
ComunicWeb.user.userLogin.__userLogin = false;
|
|
}
|
|
|
|
//If there is a next action, do it
|
|
if(afterRefresh){
|
|
afterRefresh();
|
|
}
|
|
};
|
|
this.getCurrentUserId(nextStep);
|
|
},
|
|
|
|
/**
|
|
* Try to login user
|
|
*
|
|
* @param {String} usermail The mail of user
|
|
* @param {String} userpassword The password of the user
|
|
* @param {Boolean} permanentLogin Specify wether the login is permanent or not
|
|
* @param {function} afterLogin What to do next
|
|
*/
|
|
loginUser: function(usermail, userpassword, permanentLogin, afterLogin){
|
|
//Prepare and make an API request
|
|
var apiURI = "user/connectUSER";
|
|
var params = {
|
|
userMail: usermail,
|
|
userPassword: userpassword,
|
|
};
|
|
|
|
//What to do after the request is completed
|
|
var afterAPIrequest = function(result){
|
|
//Prepare data return
|
|
var loginstate = false;
|
|
|
|
//Check if there is a success message
|
|
if(result.success){
|
|
loginstate = true;
|
|
|
|
//Log
|
|
ComunicWeb.debug.logMessage("User login " + usermail + " successful !");
|
|
|
|
//Indicates user is logged in
|
|
ComunicWeb.user.userLogin.__userLogin = true;
|
|
|
|
//Store tokens
|
|
if(permanentLogin){
|
|
var storageType = "local";
|
|
}
|
|
else {
|
|
storageType = "session";
|
|
}
|
|
ComunicWeb.user.loginTokens.setUserTokens(result.tokens, storageType);
|
|
}
|
|
|
|
//Perform next action
|
|
afterLogin(loginstate);
|
|
|
|
};
|
|
|
|
//Perform request
|
|
ComunicWeb.common.api.makeAPIrequest(apiURI, params, false, afterAPIrequest);
|
|
},
|
|
|
|
/**
|
|
* Logout user
|
|
*
|
|
* @param {Function} afterLogout What to do once user is logged out
|
|
*/
|
|
logoutUser: function(afterLogout){
|
|
//Prepare and make an API request
|
|
var apiURI = "user/disconnectUSER";
|
|
var params = {};
|
|
|
|
//What to do after the request is completed
|
|
var afterAPIrequest = function(result){
|
|
|
|
//Log
|
|
ComunicWeb.debug.logMessage("Logout request on server terminated.");
|
|
|
|
//Perform next action (if specified)
|
|
if(afterLogout){
|
|
afterLogout();
|
|
}
|
|
|
|
};
|
|
|
|
//Perform request
|
|
ComunicWeb.common.api.makeAPIrequest(apiURI, params, true, afterAPIrequest);
|
|
|
|
//Destroy login tokens
|
|
ComunicWeb.user.loginTokens.deleteLoginTokens();
|
|
|
|
//Specify user is logged out
|
|
this.__userID = 0;
|
|
this.__userLogin = false;
|
|
|
|
//Done !
|
|
return 0;
|
|
},
|
|
} |