I am working on AngularJs application and back end is developed in Ruby on 
Rails. We have not used Devise gem for User authentication. Whole user 
authentication process is written in AngularJs. Now I want to add "Keep me 
logged in" functionality to my application using AngularJs. 

*Question: *
* How I could implement "Keep me logged in" functionality in AngularJs for 
my application?*

 I am using angularJs for views and controllers and model are written in 
Ruby on Rails.

I have attached my session-controller.js below with views file.

*session-controller.js*

    App.controller('SessionsCtrl',  function($rootScope, $scope, $http, 
$location, Facebook, $timeout, flash, $remember) {
    
    $scope.fbloginContent = "";
    
    $scope.googleloginContent = "";
    
    $scope.linkedinloginContent = "";
    
    $scope.$on('facebook_login', function() {
    $timeout(function() {
    $scope.fbloginContent = Facebook.getfbLoginContent();
    $scope.loginEmail = $scope.fbloginContent.email;
    }, 2000);
    });
    
    $scope.$on('google_login', function() {
    $timeout(function() {
    $scope.googleloginContent = helper.getGoogleloginContent();
    $scope.loginEmail = $scope.googleloginContent.email;
    }, 2000);
    });
    
    $scope.$on('linkedin_login', function() {
    $timeout(function() {
    $scope.linkedinloginContent = linkedInHelper.linkedinloginContent();
    $scope.loginEmail = $scope.linkedinloginContent['emailAddress'];
    }, 2000);
    });
    
    $scope.login = function() {
    if ($('#signInForm').valid()) {
    if ($scope.linkedinloginContent) {
    var param = {
    "user" : {
    "email" : $scope.linkedinloginContent['emailAddress'],
    "password" : $scope.loginPassword
    }
    };
    } else if ($scope.googleloginContent) {
    var param = {
    "user" : {
    "email" : $scope.googleloginContent.email,
    "password" : $scope.loginPassword
    }
    };
    } else if ($scope.fbloginContent) {
    var param = {
    "user" : {
    "email" : $scope.fbloginContent.email,
    "password" : $scope.loginPassword
    }
    };
    } else {
    if ($scope.loginEmail && $scope.loginPassword) {
    
    var param = {
    "user" : {
    "email" : $scope.loginEmail,
    "password" : $scope.loginPassword
    }
    };
    } else {
    var param = {
    "user" : {
    "email" : $("#signInForm [name=email]").val(),
    "password" : $("#signInForm [name=password]").val()
    }
    };
    }
    }
    $http({
    method : 'post',
    url : '/api/sessions',
    data : param
    }).success(function(data, status) {
    createCookie("access_token", data.user.access_token, '');
    createCookie("user", data.user.id, '');
    createCookie("name", data.user.name, '');
    if (data.user.temp_password == true && data.user.login_count == 1) {
    $location.path('/changepassword');
    } else {
    if (data.user.role == "SmartonAdmin") {
    $location.path('/api/users');
    flash.info = ($rootScope.config && $rootScope.config.login_message) ? 
$rootScope.config.login_message : "Logged in successfully";
    goToTop();
    if (data.user.login_count == 1) {
    $('#intro-video').modal('show');
    }
    } else {
    $location.path('/student_dashboard');
    flash.info = ($rootScope.config && $rootScope.config.login_message) ? 
$rootScope.config.login_message : "Logged in successfully";
    goToTop();
    if (data.user.login_count == 1) {
    $('#intro-video').modal('show');
    }
    }
    }
    }).error(function(data, status) {
    flash.error = data.errors;
    goToTop();
    });
    }
    };
    
    $scope.validations = function() {
    
    $('#signInForm').validate({
    rules : {
    email : {
    required : true,
    email : true
    },
    password : {
    required : true,
    }
    },
    messages : {
    email : {
    required : "Email can't be blank.",
    email : "Email must be in the format of [email protected].",
    remote : "Email already exists."
    },
    password : {
    required : "Password can't be blank.",
    minlength : "Password should have minimum  of 8 characters.",
    maxlength : "Password should not exceed more than 15 characters."
    } 
    },
    errorPlacement : function(error, element) {
    error.insertBefore('.errorMsg1');
    }
    });
    
    };
    
    $scope.validations();
    
    $("#loginemail").keyup(function() {
    if (!this.value) {
    $(".errormsg").css("display", "none");
    }
    if (!(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/i.test(this.value
))) {
    $(".errormsg").css("display", "none");
    }
    });
    
    $("#loginpassword").keyup(function() {
    if (!this.value) {
    $(".errormsg").css("display", "none");
    }
    });
    
    $scope.showForgotPasswordForm = function() {
    $('#signInForm').css('opacity', '0.5');
    $('#forgotPassForm').show();
    };
       
       $scope.remember = false;
            if ($remember('email') && $remember('password') ) {
                $scope.remember = true;
                $scope.email = $remember('email');
                $scope.password = $remember('password');
            }
            $scope.rememberMe = function() {
                if ($scope.remember) {
                    $remember('email', $scope.email);
                    $remember('password', $scope.password);
                } else {
                    $remember('email', '');
                    $remember('password', '');
                }
            };
    
    });



 

*views file as Templates( AngularJs):*

      <input type="checkbox" name="remember" class="signup-footage 
terms-condition " data-ng-   click="rememberMe()" data-ng-model="remember"> 
Remember Me

 What I want that If user clicks "remember me" checkbox, then next 
time,user does need to logged in to system. How it can be achieved using 
AngualarJs?

 

-- 
You received this message because you are subscribed to the Google Groups 
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.

Reply via email to