mirror of
https://github.com/pierre42100/ComunicWeb
synced 2025-06-19 12:25:16 +00:00
Update login page
This commit is contained in:
@ -4,7 +4,7 @@
|
||||
* @author Pierre HUBERT
|
||||
*/
|
||||
|
||||
ComunicWeb.user.userLogin = {
|
||||
const UserLogin = {
|
||||
|
||||
/**
|
||||
* @var {Boolean} Store user login state (true by default)
|
||||
@ -28,8 +28,7 @@ ComunicWeb.user.userLogin = {
|
||||
*
|
||||
* @return {Boolean} Depend of the result
|
||||
*/
|
||||
getUserLoginState: function(){
|
||||
//Return login state
|
||||
getUserLoginState: function() {
|
||||
return this.__userLogin;
|
||||
},
|
||||
|
||||
@ -38,100 +37,66 @@ ComunicWeb.user.userLogin = {
|
||||
*
|
||||
* @return {String.Boolean} User ID or false if not logged in
|
||||
*/
|
||||
getUserID: function(){
|
||||
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;
|
||||
async getCurrentUserId(){
|
||||
try {
|
||||
const result = await api("account/id", {}, 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;
|
||||
// Update user ID
|
||||
ComunicWeb.user.userLogin.__userID = result.userID;
|
||||
|
||||
//If error is 412, make user as logged out
|
||||
if(result.error.code == 412){
|
||||
ComunicWeb.user.userLogin.__userLogin = false;
|
||||
ComunicWeb.user.loginTokens.deleteLoginTokens();
|
||||
|
||||
//Restart the application
|
||||
ComunicWeb.common.system.restart();
|
||||
}
|
||||
//Notify about the event
|
||||
SendEvent("got_user_id", {
|
||||
userID: result.userID
|
||||
});
|
||||
|
||||
//Perform next action
|
||||
afterGetCurrentUserID(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
//Update user ID
|
||||
ComunicWeb.user.userLogin.__userID = result.userID;
|
||||
} catch(e) {
|
||||
|
||||
//Perform next action
|
||||
afterGetCurrentUserID(result.userID);
|
||||
//Set user ID to 0 (security purpose)
|
||||
ComunicWeb.user.userLogin.__userID = 0;
|
||||
|
||||
//Notify about the event
|
||||
SendEvent("got_user_id", {
|
||||
userID: result.userID
|
||||
});
|
||||
//If error is 412, make user as logged out
|
||||
if(result.error.code == 412) {
|
||||
ComunicWeb.user.userLogin.__userLogin = false;
|
||||
ComunicWeb.user.loginTokens.deleteLoginTokens();
|
||||
|
||||
//Restart the application
|
||||
ComunicWeb.common.system.restart();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
//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){
|
||||
refreshLoginState: async function() {
|
||||
// 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;
|
||||
return;
|
||||
}
|
||||
|
||||
//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;
|
||||
}
|
||||
// Try to use tokens to get user infos
|
||||
await UserLogin.getCurrentUserId();
|
||||
|
||||
//If there is a next action, do it
|
||||
if(afterRefresh){
|
||||
afterRefresh();
|
||||
}
|
||||
};
|
||||
this.getCurrentUserId(nextStep);
|
||||
//We check received data
|
||||
if(this.__userID == 0){
|
||||
// We consider user is not logged in
|
||||
ComunicWeb.user.userLogin.__userLogin = false;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
@ -142,74 +107,52 @@ ComunicWeb.user.userLogin = {
|
||||
* @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,
|
||||
};
|
||||
loginUser: async function(usermail, userpassword, permanentLogin, afterLogin) {
|
||||
try {
|
||||
const result = await api("account/login", {
|
||||
mail: usermail,
|
||||
password: userpassword,
|
||||
})
|
||||
|
||||
//What to do after the request is completed
|
||||
const afterAPIrequest = async function(result){
|
||||
//Prepare data return
|
||||
var loginstate = false;
|
||||
//Log
|
||||
ComunicWeb.debug.logMessage("User login " + usermail + " successful !");
|
||||
|
||||
//Indicates user is logged in
|
||||
ComunicWeb.user.userLogin.__userLogin = true;
|
||||
|
||||
//Check if there is a success message
|
||||
if(result.success){
|
||||
loginstate = true;
|
||||
//Store tokens
|
||||
if(permanentLogin){
|
||||
var storageType = "local";
|
||||
}
|
||||
else {
|
||||
storageType = "session";
|
||||
}
|
||||
ComunicWeb.user.loginTokens.setUserTokens(result.tokens, storageType);
|
||||
|
||||
//Log
|
||||
ComunicWeb.debug.logMessage("User login " + usermail + " successful !");
|
||||
// Save email address
|
||||
ComunicWeb.components.mailCaching.set(usermail);
|
||||
|
||||
//Indicates user is logged in
|
||||
ComunicWeb.user.userLogin.__userLogin = true;
|
||||
// Initialize websocket
|
||||
await UserWebSocket.Connect();
|
||||
await UserWebSocket.WaitForConnected();
|
||||
|
||||
// Else refresh login state to get user ID
|
||||
await this.refreshLoginState();
|
||||
|
||||
//Then get and apply user language settings
|
||||
ComunicWeb.components.settings.interface.getLanguage(function(lang){
|
||||
|
||||
if(!lang.error)
|
||||
ComunicWeb.common.langs.setLang(lang.lang);
|
||||
|
||||
//Store tokens
|
||||
if(permanentLogin){
|
||||
var storageType = "local";
|
||||
}
|
||||
else {
|
||||
storageType = "session";
|
||||
}
|
||||
ComunicWeb.user.loginTokens.setUserTokens(result.tokens, storageType);
|
||||
|
||||
//Save email address
|
||||
ComunicWeb.components.mailCaching.set(usermail);
|
||||
|
||||
// Initialize websocket
|
||||
await UserWebSocket.Connect();
|
||||
await UserWebSocket.WaitForConnected();
|
||||
}
|
||||
|
||||
//Perform next action if login failed
|
||||
if(!loginstate) {
|
||||
ComunicWeb.user.userLogin._last_attempt_response_code = result.error.code;
|
||||
afterLogin(loginstate);
|
||||
return false;
|
||||
}
|
||||
|
||||
//Else refresh login state to get user ID
|
||||
ComunicWeb.user.userLogin.refreshLoginState(function(){
|
||||
|
||||
//Then get and apply user language settings
|
||||
ComunicWeb.components.settings.interface.getLanguage(function(lang){
|
||||
|
||||
if(!lang.error)
|
||||
ComunicWeb.common.langs.setLang(lang.lang);
|
||||
|
||||
//And then we'll be able to perform next action
|
||||
afterLogin(true);
|
||||
|
||||
});
|
||||
|
||||
afterLogin(true);
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
//Perform request
|
||||
ComunicWeb.common.api.makeAPIrequest(apiURI, params, false, afterAPIrequest);
|
||||
} catch(e) {
|
||||
UserLogin._last_attempt_response_code = e.code;
|
||||
afterLogin(false);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
@ -258,4 +201,6 @@ ComunicWeb.user.userLogin = {
|
||||
get_last_attempt_response_code: function(){
|
||||
return this._last_attempt_response_code;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ComunicWeb.user.userLogin = UserLogin;
|
Reference in New Issue
Block a user