178 lines
No EOL
4.1 KiB
JavaScript
178 lines
No EOL
4.1 KiB
JavaScript
var app = angular.module('autome', ['ui.router']);
|
|
|
|
app.config(['$stateProvider', '$urlRouterProvider',function($stateProvider, $urlRouterProvider) {
|
|
|
|
$stateProvider
|
|
.state('home', {
|
|
url: '/home',
|
|
templateUrl: '/home.html',
|
|
controller: 'MainCtrl',
|
|
onEnter: ['$state', 'auth', function ($state, auth) {
|
|
if (!auth.isLoggedIn()) {
|
|
$state.go('login');
|
|
}
|
|
}],
|
|
resolve: {
|
|
postPromise: ['arduino', function(arduino) {
|
|
return arduino.getRCs();
|
|
}]
|
|
}
|
|
|
|
})
|
|
.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 = {};
|
|
|
|
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',{
|
|
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('/sendRC', {code}, {
|
|
headers: {Authorization: 'Bearer '+auth.getToken()}
|
|
}).success(function (data) {
|
|
RC.state = (RC.state) ? false : true;
|
|
});
|
|
}
|
|
|
|
o.irTest = function ( ) {
|
|
return $http.get('/irTest',{
|
|
headers: {Authorization: 'Bearer '+auth.getToken()}
|
|
});
|
|
}
|
|
|
|
return o;
|
|
}]);
|
|
|
|
app.controller('MainCtrl', [
|
|
'$scope',
|
|
'arduino',
|
|
function ($scope, arduino){
|
|
|
|
$scope.RCs = arduino.RCs;
|
|
|
|
$scope.sendRC = function(RC){
|
|
arduino.sendRC(RC);
|
|
};
|
|
|
|
$scope.irTest = function(){
|
|
arduino.irTest();
|
|
};
|
|
|
|
}]);
|
|
|
|
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;
|
|
}]); |