Skip to content
This repository has been archived by the owner on Mar 14, 2021. It is now read-only.
/ loginV2 Public archive
forked from mjhea0/mean-auth

Better User Auth, T/F login, Angular client routing.

Notifications You must be signed in to change notification settings

vtange/loginV2

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

  • uses ngRoute for client-side routing.
  • Login / Logout via Angular Service ($q promise style)
CLIENTSIDE
/*----------*/
/* LOGIN PROCESS   */
/*----------*/
    AuthService.login(username, password) {

      // create a new instance of deferred
      var deferred = $q.defer();

      // send a post request to the server
      $http.post('/user/login', {username: username, password: password})
        // handle success
        .success(function (data, status) {
          if(status === 200 && data.status){
            user = true;
            deferred.resolve();
          } else {
            user = false;
            deferred.reject();
          }
        })
        // handle error
        .error(function (data) {
          user = false;
          deferred.reject();
        });

      // return promise object
      return deferred.promise;

    }


angular.module('myApp').controller('loginController',['$scope', '$location', 'AuthService',function ($scope, $location, AuthService) {

    console.log(AuthService.getUserStatus());

    $scope.login = function () {

      // initial values
      $scope.error = false;         //hide error bar
      $scope.disabled = true;       //disable Login button to prevent double send

      // call login from service
      AuthService.login($scope.loginForm.username, $scope.loginForm.password)//<-----------PROCESS DONE BY SERVICES
        // handle success
        .then(function () {
          $location.path('/');      //redirect to home
          $scope.disabled = false;  //reenable Login button
          $scope.loginForm = {};    //clear input fields
        })
        // handle error
        .catch(function () {
          $scope.error = true;      //show error bar
          $scope.errorMessage = "Invalid username and/or password";
          $scope.disabled = false;  //reenable Login button
          $scope.loginForm = {};    //clear input fields
        });

SERVERSIDE

== app.js (main server file) ==
var routes = require('./routes/api.js');
app.use('/user/', routes);

== ./routes/api.js' ==

var express = require('express'),
    router = express.Router(),
    passport = require('passport'),
    userjs = require('../models/user.js');
...

/*----------*/
/* LOGIN USER  */
/*----------*/
router.post('/login', function(req, res, next) {
  passport.authenticate('local', function(err, user, info) {
    console.log("login " + user.username)
    if (err) {
      return res.status(500).json({err: err});
    }
    if (!user) {
      return res.status(401).json({err: info});
    }
    req.logIn(user, function(err) {
      if (err) {
        return res.status(500).json({err: 'Could not log in user'});
      }
      res.status(200).json({status: 'Login successful!'});
    });
  })(req, res, next);
});

  • No User Accounts, only user = true/ user = false, can convert to accounts with some templating work.

BUGS

Due to how things are routed. you can skip ahead to "/" without logging in.

About

Better User Auth, T/F login, Angular client routing.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Languages

  • JavaScript 82.9%
  • HTML 17.1%