Tengo una aplicación AngularJS creada usando Yeoman, Grunt y Bower.
Tengo una página de inicio de sesión que tiene un controlador que verifica la autenticación. Si las credenciales son correctas, redirijo a la página de inicio.
app.js
'use strict';
//Define Routing for app
angular.module('myApp', []).config(['$routeProvider', '$locationProvider',
function($routeProvider,$locationProvider) {
$routeProvider
.when('/login', {
templateUrl: 'login.html',
controller: 'LoginController'
})
.when('/register', {
templateUrl: 'register.html',
controller: 'RegisterController'
})
.when('/forgotPassword', {
templateUrl: 'forgotpassword.html',
controller: 'forgotController'
})
.when('/home', {
templateUrl: 'views/home.html',
controller: 'homeController'
})
.otherwise({
redirectTo: '/login'
});
// $locationProvider.html5Mode(true); //Remove the '#' from URL.
}]);
angular.module('myApp').factory("page", function($rootScope){
var page={};
var user={};
page.setPage=function(title,bodyClass){
$rootScope.pageTitle = title;
$rootScope.bodylayout=bodyClass;
};
page.setUser=function(user){
$rootScope.user=user;
}
return page;
});
LoginControler.js
'use strict';
angular.module('myApp').controller('LoginController', function($scope, $location, $window,page) {
page.setPage("Login","login-layout");
$scope.user = {};
$scope.loginUser=function()
{
var username=$scope.user.name;
var password=$scope.user.password;
if(username=="admin" && password=="admin123")
{
page.setUser($scope.user);
$location.path( "/home" );
}
else
{
$scope.message="Error";
$scope.messagecolor="alert alert-danger";
}
}
});
En la página de inicio tengo
<span class="user-info">
<small>Welcome,</small>
{{user.name}}
</span>
<span class="logout"><a href="" ng-click="logoutUser()">Logout</a></span>
En el loginController
, verifico la información de inicio de sesión y, si tiene éxito, configuro el objeto de usuario en la fábrica de servicios. No sé si esto es correcto o no.
Lo que necesito es que, cuando el usuario inicia sesión, establece un valor en el objeto de usuario para que todas las demás páginas puedan obtener ese valor.
Siempre que ocurran cambios en la ruta, el controlador debe verificar si el usuario ha iniciado sesión o no. De lo contrario, debe redirigirse a la página de inicio de sesión. Además, si el usuario ya ha iniciado sesión y vuelve a la página, debe ir a la página de inicio. El controlador también debe verificar las credenciales en todas las rutas.
He oído hablar de ng-cookies, pero no sé cómo usarlas.
Muchos de los ejemplos que vi no eran muy claros y usan algún tipo de roles de acceso o algo así. No quiero eso Solo quiero un filtro de inicio de sesión. ¿Alguien me puede dar algunas ideas?