public IActionResult Login([FromBody] Auth_LoginUserModel loginUser)
        {
            Console.WriteLine("api/auth/login");

            // Validate user inputed data
            Tuple <bool, string> validation = _inputValidations.Auth_LoginUserModelValidation(loginUser);

            if (!validation.Item1)
            {
                return(StatusCode(405, validation.Item2));
            }

            loginUser.password = Hash.HashPassword(loginUser.password);

            int userID = _authAction.PasswordMatch(loginUser.emailOrUsername, loginUser.password);

            if (userID == -1)
            {
                return(StatusCode(405, "Incorrect password."));
            }
            else
            {
                if (UpdateToken(_authAction.GetUsersData(userID).userID))
                {
                    return(Ok("Successfully logged in to your account!"));
                }
                else
                {
                    return(StatusCode(500, "something went wrong"));
                }
            }
        }
        public Tuple <bool, string> Auth_LoginUserModelValidation(Auth_LoginUserModel loginUser)
        {
            string[] stringsToValidate =
            {
                loginUser.emailOrUsername,
                loginUser.password
            };

            // if the inputed data is not email
            if (!IsValidEmail(loginUser.emailOrUsername))
            {
                Tuple <bool, string> doneUsernameValidation = UsernameInputChecker(loginUser.emailOrUsername);
                if (!doneUsernameValidation.Item1)
                {
                    return(doneUsernameValidation);
                }
            }

            Tuple <bool, string> doneGeneralValidation = GeneralInputChecker(stringsToValidate);

            if (!doneGeneralValidation.Item1)
            {
                return(doneGeneralValidation);
            }
            return(Tuple.Create(true, String.Empty));
        }