Displaying of error message when there is no username and password


#1

When either username/password is opt, there is error message. However, there is no error message when both username and password is blank. It just keep on loading. Anyone have a solution?

login controller:

.controller('loginCtrl', function($scope, $rootScope, $ionicHistory, sharedUtils, $state, $ionicSideMenuDelegate) {
    $rootScope.extras = false;  // For hiding the side bar and nav icon
 
    // When the user logs out and reaches login page,
    // we clear all the history and cache to prevent back link
    $scope.$on('$ionicView.enter', function(ev) {
      if(ev.targetScope !== $scope){
        $ionicHistory.clearHistory();
        $ionicHistory.clearCache();
      }
    });
 
 
    //Check if user already logged in
    firebase.auth().onAuthStateChanged(function(user) {
      if (user) {
 
    //Removes back link to login page
        $ionicHistory.nextViewOptions({
          historyRoot: true
        });
        $ionicSideMenuDelegate.canDragContent(true);  // Sets up the sideMenu dragable
        $rootScope.extras = true;
        sharedUtils.hideLoading();
        $state.go('tabs.home', {}, {location: "replace"});
 
      }
    });
 
 
    $scope.loginEmail = function(formName,cred) {
 
 
      if(formName.$valid) {  // Check if the form data is valid or not
 
          sharedUtils.showLoading(); //starts the loading popup
 
          //Email Login via Firebase
          firebase.auth().signInWithEmailAndPassword(cred.email,cred.password).then(function(result) {
 
                // You dont need to save the users session in your local session or cookies. Firebase handles it.
                
        // You only need to :
                // 1. clear the login page history from the history stack so that you cant come back
                // 2. Set rootScope.extra;
                // 3. Turn off the loading
                // 4. Got to menu page
 
      
              $ionicHistory.nextViewOptions({
                historyRoot: true   //1
              });
              $rootScope.extras = true;  //2
              sharedUtils.hideLoading();  //3
              $state.go('tabs.home', {}, {location: "replace"}); //4
 
            },
            function(error) {
              sharedUtils.hideLoading();
              sharedUtils.showAlert("ERROR!","Authentication Error");
            }
        );
 
      }else{
        sharedUtils.showAlert("ERROR!","Enter in email format");
      }
 
 
 
    };
})

login.html

Login with your NYP SIT account

<form name="loginForm" class="list " id="login-form1">
        <ion-list class=" " id="login-list2">
            <div class="app-icon"></div>
            <label class="item item-input item-floating-label">
                <span class="input-label" style="color: #9F9F9F;">Email</span>
                <input ng-model="user.email" style="color: white;" type="email" placeholder="Email">
            </label>
            <label class="item item-input item-floating-label">
                <span class="input-label" style="color: #9F9F9F;" >Password</span>
                <input ng-model="user.password" style="color: white;" type="password" placeholder="Password">
            </label>
        </ion-list>
        <div style="height: 40px;" class="spacer"></div>
        <button ng-click="loginEmail(loginForm,user)" class=" button button-assertive  button-block  icon-left ion-ios-email-outline "  id="signup-button3">LOGIN WITH EMAIL</button>
    </form>

#2

I don’t see no real validation logic in here. Can you show us the template, too?