add authentication
This commit is contained in:
parent
19d3350f90
commit
b18eaa102c
1 changed files with 125 additions and 6 deletions
129
nodejs/public/javascripts/angularApp.js
vendored
129
nodejs/public/javascripts/angularApp.js
vendored
|
@ -11,40 +11,126 @@ app.config(['$stateProvider', '$urlRouterProvider',function($stateProvider, $url
|
|||
postPromise: ['arduino', function(arduino) {
|
||||
return arduino.getRCs();
|
||||
}]
|
||||
},
|
||||
onEnter: ['$state', 'auth', function ($state, auth) {
|
||||
if (!auth.isLoggedIn()) {
|
||||
$state.go('login');
|
||||
}
|
||||
}]
|
||||
|
||||
})
|
||||
.state('login', {
|
||||
url: '/login',
|
||||
templateUrl: '/login.html',
|
||||
controller: 'AuthCtrl',
|
||||
onEnter: ['$state', 'auth', function ($state, auth) {
|
||||
if (auth.isLoggedIn()) {
|
||||
$state.go('home');
|
||||
}
|
||||
}]
|
||||
})
|
||||
.state('register', {
|
||||
url: '/register',
|
||||
templateUrl: '/register.html',
|
||||
controller: 'AuthCtrl',
|
||||
onEnter: ['$state', 'auth', function ($state, auth) {
|
||||
if (!auth.isLoggedIn()) {
|
||||
$state.go('home');
|
||||
}
|
||||
}]
|
||||
});
|
||||
|
||||
$urlRouterProvider.otherwise('home');
|
||||
|
||||
}]);
|
||||
app.factory('auth', ['$http', '$window', function ($http, $window) {
|
||||
var auth = {};
|
||||
|
||||
app.factory('arduino', ['$http', function($http){
|
||||
auth.saveToken = function (token) {
|
||||
$window.localStorage['autohome-token'] = token;
|
||||
};
|
||||
|
||||
auth.getToken = function () {
|
||||
return $window.localStorage['autohome-token'];
|
||||
};
|
||||
|
||||
auth.isLoggedIn = function () {
|
||||
var token = auth.getToken();
|
||||
|
||||
if (token) {
|
||||
var payload = JSON.parse($window.atob(token.split('.')[1]));
|
||||
|
||||
return payload.exp > Date.now() / 1000;
|
||||
}
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
auth.currentUser = function () {
|
||||
if (auth.isLoggedIn()) {
|
||||
var token = auth.getToken();
|
||||
var payload = JSON.parse($window.atob(token.split('.')[1]));
|
||||
|
||||
return payload.username;
|
||||
}
|
||||
};
|
||||
|
||||
auth.register = function (user) {
|
||||
return $http.post('/register', user, {
|
||||
headers: {Authorization: 'Bearer '+auth.getToken()}
|
||||
}).success(function (data) {
|
||||
auth.saveToken(data.token);
|
||||
});
|
||||
};
|
||||
|
||||
auth.logIn = function (user) {
|
||||
return $http.post('/login', user).success(function (data) {
|
||||
auth.saveToken(data.token);
|
||||
});
|
||||
};
|
||||
|
||||
auth.logOut = function () {
|
||||
$window.localStorage.removeItem('autohome-token');
|
||||
};
|
||||
|
||||
return auth;
|
||||
}]);
|
||||
|
||||
app.factory('arduino', ['$http', 'auth', function($http, auth){
|
||||
var o = {
|
||||
RCs: []
|
||||
};
|
||||
|
||||
o.getRCs = function ( ) {
|
||||
return $http.get('/getRCs').success(function(data) {
|
||||
return $http.get('/getRCs',{
|
||||
headers: {Authorization: 'Bearer '+auth.getToken()}
|
||||
}).success(function(data) {
|
||||
angular.copy(data, o.RCs);
|
||||
});
|
||||
}
|
||||
|
||||
o.sendRC = function (RC) {
|
||||
var code = (RC.state) ? RC.off_value : RC.on_value;
|
||||
return $http.post('/register', {code}).success(function (data) {
|
||||
return $http.post('/sendRC', {code}, {
|
||||
headers: {Authorization: 'Bearer '+auth.getToken()}
|
||||
}).success(function (data) {
|
||||
RC.state = (RC.state) ? false : true;
|
||||
});
|
||||
}
|
||||
|
||||
o.irTest = function ( ) {
|
||||
return $http.get('/irTest');
|
||||
return $http.get('/irTest',{
|
||||
headers: {Authorization: 'Bearer '+auth.getToken()}
|
||||
});
|
||||
}
|
||||
|
||||
return o;
|
||||
}]);
|
||||
|
||||
app.controller('MainCtrl', ['$scope', 'arduino', function ($scope, arduino){
|
||||
app.controller('MainCtrl', [
|
||||
'$scope',
|
||||
'arduino',
|
||||
function ($scope, arduino){
|
||||
|
||||
$scope.RCs = arduino.RCs;
|
||||
|
||||
|
@ -57,3 +143,36 @@ app.controller('MainCtrl', ['$scope', 'arduino', function ($scope, arduino){
|
|||
};
|
||||
|
||||
}]);
|
||||
|
||||
app.controller('AuthCtrl', [
|
||||
'$scope',
|
||||
'$state',
|
||||
'auth',
|
||||
function($scope, $state, auth){
|
||||
$scope.user = {};
|
||||
|
||||
$scope.register = function(){
|
||||
auth.register($scope.user).error(function(error){
|
||||
$scope.error = error;
|
||||
}).then(function(){
|
||||
$state.go('home');
|
||||
});
|
||||
};
|
||||
|
||||
$scope.logIn = function(){
|
||||
auth.logIn($scope.user).error(function(error){
|
||||
$scope.error = error;
|
||||
}).then(function(){
|
||||
$state.go('home');
|
||||
});
|
||||
};
|
||||
}]);
|
||||
|
||||
app.controller('NavCtrl', [
|
||||
'$scope',
|
||||
'auth',
|
||||
function($scope, auth){
|
||||
$scope.isLoggedIn = auth.isLoggedIn;
|
||||
$scope.currentUser = auth.currentUser;
|
||||
$scope.logOut = auth.logOut;
|
||||
}]);
|
Reference in a new issue