mirror of
				https://github.com/pierre42100/ComunicWeb
				synced 2025-11-03 19:54:14 +00:00 
			
		
		
		
	Update login page
This commit is contained in:
		@@ -364,54 +364,6 @@ var ComunicWeb = {
 | 
			
		||||
			 */
 | 
			
		||||
			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
 | 
			
		||||
 
 | 
			
		||||
@@ -59,38 +59,29 @@ ComunicWeb.common.system = {
 | 
			
		||||
		ComunicWeb.components.darkTheme.refresh();
 | 
			
		||||
 | 
			
		||||
		/**
 | 
			
		||||
		 * What to do after login refresh
 | 
			
		||||
		 * Get login state
 | 
			
		||||
		 */
 | 
			
		||||
		var afterLoginRefresh = async function(){
 | 
			
		||||
			
 | 
			
		||||
			// Initialize Websocket if user is connected
 | 
			
		||||
			if(signed_in()) {
 | 
			
		||||
				await UserWebSocket.Connect();
 | 
			
		||||
				await UserWebSocket.WaitForConnected();
 | 
			
		||||
			}
 | 
			
		||||
		await UserLogin.refreshLoginState();
 | 
			
		||||
 | 
			
		||||
			/**
 | 
			
		||||
			 * Open a page
 | 
			
		||||
			 */
 | 
			
		||||
			if(!openPage){
 | 
			
		||||
				//Refresh current page
 | 
			
		||||
				ComunicWeb.common.page.refresh_current_page();
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
				//Open specified page
 | 
			
		||||
				ComunicWeb.common.page.openPage(openPage);
 | 
			
		||||
 | 
			
		||||
			//End of init
 | 
			
		||||
			ComunicWeb.debug.logMessage("Application is ready !");
 | 
			
		||||
		// Initialize Websocket if user is connected
 | 
			
		||||
		if(signed_in()) {
 | 
			
		||||
			await UserWebSocket.Connect();
 | 
			
		||||
			await UserWebSocket.WaitForConnected();
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/**
 | 
			
		||||
		 * Get login state
 | 
			
		||||
		 * Open a page
 | 
			
		||||
		 */
 | 
			
		||||
		ComunicWeb.user.userLogin.refreshLoginState(afterLoginRefresh);
 | 
			
		||||
		if(!openPage){
 | 
			
		||||
			//Refresh current page
 | 
			
		||||
			ComunicWeb.common.page.refresh_current_page();
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
			//Open specified page
 | 
			
		||||
			ComunicWeb.common.page.openPage(openPage);
 | 
			
		||||
 | 
			
		||||
		//Success
 | 
			
		||||
		return true;
 | 
			
		||||
		//End of init
 | 
			
		||||
		ComunicWeb.debug.logMessage("Application is ready !");
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
 
 | 
			
		||||
@@ -67,7 +67,6 @@ ComunicWeb.pages.login = {
 | 
			
		||||
			var loginButton = loginBody.getElementsByClassName("btn-login")[0];
 | 
			
		||||
 | 
			
		||||
			//Make the login action accessible
 | 
			
		||||
			//loginButton.onclick = ComunicWeb.pages.login.loginSubmit;
 | 
			
		||||
			loginBody.onsubmit = ComunicWeb.pages.login.loginSubmit;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -103,9 +102,7 @@ ComunicWeb.pages.login = {
 | 
			
		||||
		)){
 | 
			
		||||
		   //Error notification
 | 
			
		||||
		   ComunicWeb.common.notificationSystem.showNotification(lang("_login_page_bad_input"), "error");
 | 
			
		||||
 | 
			
		||||
		   //Stop function execution
 | 
			
		||||
		   return false;
 | 
			
		||||
		   return;
 | 
			
		||||
		}
 | 
			
		||||
	   
 | 
			
		||||
		//Enable overlay (use .remove() to remove)
 | 
			
		||||
@@ -117,7 +114,7 @@ ComunicWeb.pages.login = {
 | 
			
		||||
		var permanentLogin = rememberLoginInput.checked;
 | 
			
		||||
 | 
			
		||||
		//What to do once user is logged in (or not)
 | 
			
		||||
		var afterTryLogin = function(loginResult){
 | 
			
		||||
		var afterTryLogin = (loginResult) => {
 | 
			
		||||
 | 
			
		||||
			//First, remove overlay
 | 
			
		||||
			screenOverlay.remove();
 | 
			
		||||
 
 | 
			
		||||
@@ -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