mirror of
				https://github.com/pierre42100/ComunicWeb
				synced 2025-11-04 04:04:20 +00:00 
			
		
		
		
	Update login page
This commit is contained in:
		@@ -365,54 +365,6 @@ var ComunicWeb = {
 | 
				
			|||||||
			deleteLoginTokens: function(){},
 | 
								deleteLoginTokens: function(){},
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		/**
 | 
					 | 
				
			||||||
		 * Manage user login
 | 
					 | 
				
			||||||
		 */
 | 
					 | 
				
			||||||
		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
 | 
					 | 
				
			||||||
			 */
 | 
					 | 
				
			||||||
			getUserLoginState: function(){},
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			/**
 | 
					 | 
				
			||||||
			 * Get user ID (if logged in)
 | 
					 | 
				
			||||||
			 */
 | 
					 | 
				
			||||||
			getUserID: function(){},
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			/**
 | 
					 | 
				
			||||||
			 * Try to get and store current user ID
 | 
					 | 
				
			||||||
			 */
 | 
					 | 
				
			||||||
			getCurrentUserId: function(afterGetCurrentUserID){},
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			/**
 | 
					 | 
				
			||||||
			 * Refresh the user login state
 | 
					 | 
				
			||||||
			 */
 | 
					 | 
				
			||||||
			refreshLoginState: function(afterLogin){},
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			/**
 | 
					 | 
				
			||||||
			 * Try to login user
 | 
					 | 
				
			||||||
			 */
 | 
					 | 
				
			||||||
			loginUser: function(usermail, userpassword, permanentLogin, afterLogin){},
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			/**
 | 
					 | 
				
			||||||
			 * Logout user
 | 
					 | 
				
			||||||
			 */
 | 
					 | 
				
			||||||
			logoutUser: function(afterLogout){},
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			//TODO : implement
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		/**
 | 
							/**
 | 
				
			||||||
		 * Get user infos
 | 
							 * Get user infos
 | 
				
			||||||
		 */
 | 
							 */
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -59,9 +59,9 @@ ComunicWeb.common.system = {
 | 
				
			|||||||
		ComunicWeb.components.darkTheme.refresh();
 | 
							ComunicWeb.components.darkTheme.refresh();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		/**
 | 
							/**
 | 
				
			||||||
		 * What to do after login refresh
 | 
							 * Get login state
 | 
				
			||||||
		 */
 | 
							 */
 | 
				
			||||||
		var afterLoginRefresh = async function(){
 | 
							await UserLogin.refreshLoginState();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// Initialize Websocket if user is connected
 | 
							// Initialize Websocket if user is connected
 | 
				
			||||||
		if(signed_in()) {
 | 
							if(signed_in()) {
 | 
				
			||||||
@@ -82,15 +82,6 @@ ComunicWeb.common.system = {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		//End of init
 | 
							//End of init
 | 
				
			||||||
		ComunicWeb.debug.logMessage("Application is ready !");
 | 
							ComunicWeb.debug.logMessage("Application is ready !");
 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		/**
 | 
					 | 
				
			||||||
		 * Get login state
 | 
					 | 
				
			||||||
		 */
 | 
					 | 
				
			||||||
		ComunicWeb.user.userLogin.refreshLoginState(afterLoginRefresh);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		//Success
 | 
					 | 
				
			||||||
		return true;
 | 
					 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -67,7 +67,6 @@ ComunicWeb.pages.login = {
 | 
				
			|||||||
			var loginButton = loginBody.getElementsByClassName("btn-login")[0];
 | 
								var loginButton = loginBody.getElementsByClassName("btn-login")[0];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			//Make the login action accessible
 | 
								//Make the login action accessible
 | 
				
			||||||
			//loginButton.onclick = ComunicWeb.pages.login.loginSubmit;
 | 
					 | 
				
			||||||
			loginBody.onsubmit = ComunicWeb.pages.login.loginSubmit;
 | 
								loginBody.onsubmit = ComunicWeb.pages.login.loginSubmit;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -103,9 +102,7 @@ ComunicWeb.pages.login = {
 | 
				
			|||||||
		)){
 | 
							)){
 | 
				
			||||||
		   //Error notification
 | 
							   //Error notification
 | 
				
			||||||
		   ComunicWeb.common.notificationSystem.showNotification(lang("_login_page_bad_input"), "error");
 | 
							   ComunicWeb.common.notificationSystem.showNotification(lang("_login_page_bad_input"), "error");
 | 
				
			||||||
 | 
							   return;
 | 
				
			||||||
		   //Stop function execution
 | 
					 | 
				
			||||||
		   return false;
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	   
 | 
						   
 | 
				
			||||||
		//Enable overlay (use .remove() to remove)
 | 
							//Enable overlay (use .remove() to remove)
 | 
				
			||||||
@@ -117,7 +114,7 @@ ComunicWeb.pages.login = {
 | 
				
			|||||||
		var permanentLogin = rememberLoginInput.checked;
 | 
							var permanentLogin = rememberLoginInput.checked;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		//What to do once user is logged in (or not)
 | 
							//What to do once user is logged in (or not)
 | 
				
			||||||
		var afterTryLogin = function(loginResult){
 | 
							var afterTryLogin = (loginResult) => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			//First, remove overlay
 | 
								//First, remove overlay
 | 
				
			||||||
			screenOverlay.remove();
 | 
								screenOverlay.remove();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@
 | 
				
			|||||||
 * @author Pierre HUBERT
 | 
					 * @author Pierre HUBERT
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ComunicWeb.user.userLogin = {
 | 
					const UserLogin = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @var {Boolean} Store user login state (true by default)
 | 
					     * @var {Boolean} Store user login state (true by default)
 | 
				
			||||||
@@ -28,8 +28,7 @@ ComunicWeb.user.userLogin = {
 | 
				
			|||||||
     * 
 | 
					     * 
 | 
				
			||||||
     * @return {Boolean} Depend of the result
 | 
					     * @return {Boolean} Depend of the result
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    getUserLoginState: function(){
 | 
					    getUserLoginState: function() {
 | 
				
			||||||
        //Return login state
 | 
					 | 
				
			||||||
        return this.__userLogin;
 | 
					        return this.__userLogin;
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -38,35 +37,35 @@ ComunicWeb.user.userLogin = {
 | 
				
			|||||||
     * 
 | 
					     * 
 | 
				
			||||||
     * @return {String.Boolean} User ID or false if not logged in
 | 
					     * @return {String.Boolean} User ID or false if not logged in
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    getUserID: function(){
 | 
					    getUserID: function() {
 | 
				
			||||||
        //If user is logged in
 | 
					        //If user is logged in
 | 
				
			||||||
        if(this.getUserLoginState() === true){
 | 
					        if(this.getUserLoginState() === true){
 | 
				
			||||||
            //Return user ID
 | 
					 | 
				
			||||||
            return this.__userID;
 | 
					            return this.__userID;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Try to get and store current user ID
 | 
					     * Try to get and store current user ID
 | 
				
			||||||
     * 
 | 
					 | 
				
			||||||
     * @param {function} afterGetCurrentUserID What to do next
 | 
					 | 
				
			||||||
     * @return {Integer} 0 if it fails
 | 
					 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    getCurrentUserId: function(afterGetCurrentUserID){
 | 
					    async getCurrentUserId(){
 | 
				
			||||||
        //Prepare and make an API request
 | 
					        try {
 | 
				
			||||||
        var apiURI = "user/getCurrentUserID";
 | 
					            const result = await api("account/id", {}, true);
 | 
				
			||||||
        var params = {};
 | 
					
 | 
				
			||||||
        var requireLoginTokens = true;
 | 
					            // Update user ID
 | 
				
			||||||
 | 
					            ComunicWeb.user.userLogin.__userID = result.userID;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            //Notify about the event
 | 
				
			||||||
 | 
					            SendEvent("got_user_id", {
 | 
				
			||||||
 | 
					                userID: result.userID
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        } catch(e) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //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)
 | 
					            //Set user ID to 0 (security purpose)
 | 
				
			||||||
            ComunicWeb.user.userLogin.__userID = 0;
 | 
					            ComunicWeb.user.userLogin.__userID = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //If error is 412, make user as logged out
 | 
					            //If error is 412, make user as logged out
 | 
				
			||||||
                if(result.error.code == 412){
 | 
					            if(result.error.code == 412) {
 | 
				
			||||||
                ComunicWeb.user.userLogin.__userLogin = false;
 | 
					                ComunicWeb.user.userLogin.__userLogin = false;
 | 
				
			||||||
                ComunicWeb.user.loginTokens.deleteLoginTokens();
 | 
					                ComunicWeb.user.loginTokens.deleteLoginTokens();
 | 
				
			||||||
                
 | 
					                
 | 
				
			||||||
@@ -74,64 +73,30 @@ ComunicWeb.user.userLogin = {
 | 
				
			|||||||
                ComunicWeb.common.system.restart();
 | 
					                ComunicWeb.common.system.restart();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                //Perform next action
 | 
					 | 
				
			||||||
                afterGetCurrentUserID(0);
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
            else
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                //Update user ID
 | 
					 | 
				
			||||||
                ComunicWeb.user.userLogin.__userID = result.userID;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                //Perform next action
 | 
					 | 
				
			||||||
                afterGetCurrentUserID(result.userID);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                //Notify about the event
 | 
					 | 
				
			||||||
                SendEvent("got_user_id", {
 | 
					 | 
				
			||||||
                    userID: result.userID
 | 
					 | 
				
			||||||
                });
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        //Perform request
 | 
					 | 
				
			||||||
        ComunicWeb.common.api.makeAPIrequest(apiURI, params, requireLoginTokens, afterAPIrequest);
 | 
					 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Refresh the user login state
 | 
					     * Refresh the user login state
 | 
				
			||||||
     * 
 | 
					 | 
				
			||||||
     * @param {Function} afterRefresh Optionnal, what to do after refreshing login
 | 
					 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    refreshLoginState: function(afterRefresh){
 | 
					    refreshLoginState: async function() {
 | 
				
			||||||
        //First, check if we have login tokens
 | 
					        // First, check if we have login tokens
 | 
				
			||||||
        if(ComunicWeb.user.loginTokens.checkLoginTokens() !== true){
 | 
					        if(ComunicWeb.user.loginTokens.checkLoginTokens() !== true) {
 | 
				
			||||||
            //Specify the user isn't logged in
 | 
					            //Specify the user isn't logged in
 | 
				
			||||||
            this.__userLogin = false;
 | 
					            this.__userLogin = false;
 | 
				
			||||||
            this.__userID = 0;
 | 
					            this.__userID = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //If there is a next action, do it (even if user isn't logged in)
 | 
					            return;
 | 
				
			||||||
            if(afterRefresh){
 | 
					 | 
				
			||||||
                afterRefresh();
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //User not logged in
 | 
					        // Try to use tokens to get user infos
 | 
				
			||||||
            return false;
 | 
					        await UserLogin.getCurrentUserId();
 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //Try to use tokens to get user infos
 | 
					 | 
				
			||||||
        var nextStep = function(userID){
 | 
					 | 
				
			||||||
        //We check received data
 | 
					        //We check received data
 | 
				
			||||||
            if(userID == 0){
 | 
					        if(this.__userID == 0){
 | 
				
			||||||
                //We consider user is not logged in
 | 
					            // We consider user is not logged in
 | 
				
			||||||
            ComunicWeb.user.userLogin.__userLogin = false;
 | 
					            ComunicWeb.user.userLogin.__userLogin = false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					 | 
				
			||||||
            //If there is a next action, do it
 | 
					 | 
				
			||||||
            if(afterRefresh){
 | 
					 | 
				
			||||||
                afterRefresh();
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        };
 | 
					 | 
				
			||||||
        this.getCurrentUserId(nextStep);
 | 
					 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@@ -142,22 +107,12 @@ ComunicWeb.user.userLogin = {
 | 
				
			|||||||
     * @param {Boolean} permanentLogin Specify wether the login is permanent or not
 | 
					     * @param {Boolean} permanentLogin Specify wether the login is permanent or not
 | 
				
			||||||
     * @param {function} afterLogin What to do next
 | 
					     * @param {function} afterLogin What to do next
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    loginUser: function(usermail, userpassword, permanentLogin, afterLogin){
 | 
					    loginUser: async function(usermail, userpassword, permanentLogin, afterLogin) {
 | 
				
			||||||
        //Prepare and make an API request
 | 
					        try {
 | 
				
			||||||
        var apiURI = "user/connectUSER";
 | 
					            const result = await api("account/login", {
 | 
				
			||||||
        var params = {
 | 
					                mail: usermail,
 | 
				
			||||||
            userMail: usermail,
 | 
					                password: userpassword,
 | 
				
			||||||
            userPassword: userpassword,
 | 
					            })
 | 
				
			||||||
        };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        //What to do after the request is completed
 | 
					 | 
				
			||||||
        const afterAPIrequest = async function(result){
 | 
					 | 
				
			||||||
            //Prepare data return
 | 
					 | 
				
			||||||
            var loginstate = false;
 | 
					 | 
				
			||||||
            
 | 
					 | 
				
			||||||
            //Check if there is a success message
 | 
					 | 
				
			||||||
            if(result.success){
 | 
					 | 
				
			||||||
                loginstate = true;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //Log
 | 
					            //Log
 | 
				
			||||||
            ComunicWeb.debug.logMessage("User login " + usermail + " successful !");
 | 
					            ComunicWeb.debug.logMessage("User login " + usermail + " successful !");
 | 
				
			||||||
@@ -174,23 +129,15 @@ ComunicWeb.user.userLogin = {
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
            ComunicWeb.user.loginTokens.setUserTokens(result.tokens, storageType);
 | 
					            ComunicWeb.user.loginTokens.setUserTokens(result.tokens, storageType);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                //Save email address
 | 
					            // Save email address
 | 
				
			||||||
            ComunicWeb.components.mailCaching.set(usermail);
 | 
					            ComunicWeb.components.mailCaching.set(usermail);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // Initialize websocket
 | 
					            // Initialize websocket
 | 
				
			||||||
            await UserWebSocket.Connect();
 | 
					            await UserWebSocket.Connect();
 | 
				
			||||||
            await UserWebSocket.WaitForConnected();
 | 
					            await UserWebSocket.WaitForConnected();
 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //Perform next action if login failed
 | 
					            // Else refresh login state to get user ID
 | 
				
			||||||
            if(!loginstate) {
 | 
					            await this.refreshLoginState();
 | 
				
			||||||
                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
 | 
					            //Then get and apply user language settings
 | 
				
			||||||
            ComunicWeb.components.settings.interface.getLanguage(function(lang){
 | 
					            ComunicWeb.components.settings.interface.getLanguage(function(lang){
 | 
				
			||||||
@@ -198,18 +145,14 @@ ComunicWeb.user.userLogin = {
 | 
				
			|||||||
                if(!lang.error)
 | 
					                if(!lang.error)
 | 
				
			||||||
                    ComunicWeb.common.langs.setLang(lang.lang);
 | 
					                    ComunicWeb.common.langs.setLang(lang.lang);
 | 
				
			||||||
                
 | 
					                
 | 
				
			||||||
                    //And then we'll be able to perform next action
 | 
					 | 
				
			||||||
                afterLogin(true);
 | 
					                afterLogin(true);
 | 
				
			||||||
                
 | 
					                
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                
 | 
					        } catch(e) {
 | 
				
			||||||
            });
 | 
					            UserLogin._last_attempt_response_code = e.code;
 | 
				
			||||||
            
 | 
					            afterLogin(false);
 | 
				
			||||||
        };
 | 
					        }
 | 
				
			||||||
 | 
					 | 
				
			||||||
        //Perform request
 | 
					 | 
				
			||||||
        ComunicWeb.common.api.makeAPIrequest(apiURI, params, false, afterAPIrequest);
 | 
					 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@@ -259,3 +202,5 @@ ComunicWeb.user.userLogin = {
 | 
				
			|||||||
        return this._last_attempt_response_code;
 | 
					        return this._last_attempt_response_code;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ComunicWeb.user.userLogin = UserLogin;
 | 
				
			||||||
		Reference in New Issue
	
	Block a user