Merge pull request #976 from cmgustavo/feature/01-timeout

Automatically logout wallet after 15 minutes of inactivity
This commit is contained in:
Yemel Jardi 2014-08-01 10:56:23 -03:00
commit ba504f147d
6 changed files with 24 additions and 3 deletions

View File

@ -21,6 +21,7 @@
"bitcore": "0.1.34", "bitcore": "0.1.34",
"angular-moment": "~0.7.1", "angular-moment": "~0.7.1",
"socket.io-client": ">=1.0.0", "socket.io-client": ">=1.0.0",
"mousetrap": "1.4.6" "mousetrap": "1.4.6",
"ng-idle": "*"
} }
} }

View File

@ -62,6 +62,7 @@
<script src="lib/angular-moment/angular-moment.js"></script> <script src="lib/angular-moment/angular-moment.js"></script>
<script src="lib/qrcode-generator/js/qrcode.js"></script> <script src="lib/qrcode-generator/js/qrcode.js"></script>
<script src="lib/angular-qrcode/qrcode.js"></script> <script src="lib/angular-qrcode/qrcode.js"></script>
<script src="lib/ng-idle/angular-idle.min.js"></script>
<script src="lib/angular-foundation/mm-foundation.min.js"></script> <script src="lib/angular-foundation/mm-foundation.min.js"></script>
<script src="lib/angular-foundation/mm-foundation-tpls.min.js"></script> <script src="lib/angular-foundation/mm-foundation-tpls.min.js"></script>
<script src="lib/peer.js"></script> <!-- TODO Change this on PeerJS version 0.3.9 --> <script src="lib/peer.js"></script> <!-- TODO Change this on PeerJS version 0.3.9 -->

View File

@ -27,6 +27,7 @@ var copayApp = window.copayApp = angular.module('copayApp', [
'angularMoment', 'angularMoment',
'mm.foundation', 'mm.foundation',
'monospaced.qrcode', 'monospaced.qrcode',
'ngIdle',
'copayApp.filters', 'copayApp.filters',
'copayApp.services', 'copayApp.services',
'copayApp.controllers', 'copayApp.controllers',
@ -40,6 +41,7 @@ copayApp.config(function($sceDelegateProvider) {
]); ]);
}); });
angular.module('copayApp.filters', []); angular.module('copayApp.filters', []);
angular.module('copayApp.services', []); angular.module('copayApp.services', []);
angular.module('copayApp.controllers', []); angular.module('copayApp.controllers', []);

View File

@ -82,4 +82,15 @@ angular.module('copayApp.controllers').controller('SidebarController',
// Init socket handlers (with no wallet yet) // Init socket handlers (with no wallet yet)
controllerUtils.setSocketHandlers(); controllerUtils.setSocketHandlers();
if ($rootScope.wallet) {
$scope.$on('$idleStart', function(a) {
notification.warning('Session will be closed', 'Your session is about to expire due to inactivity');
});
$scope.$on('$idleTimeout', function() {
$scope.signout();
notification.warning('Session closed', 'Session closed because a long time of inactivity');
});
}
}); });

View File

@ -65,17 +65,22 @@ angular
//Setting HTML5 Location Mode //Setting HTML5 Location Mode
angular angular
.module('copayApp') .module('copayApp')
.config(function($locationProvider) { .config(function($locationProvider, $idleProvider) {
$locationProvider $locationProvider
.html5Mode(false) .html5Mode(false)
.hashPrefix('!'); .hashPrefix('!');
// IDLE timeout
$idleProvider.idleDuration(15 * 60); // in seconds
$idleProvider.warningDuration(10); // in seconds
}) })
.run(function($rootScope, $location) { .run(function($rootScope, $location, $idle) {
$idle.watch();
$rootScope.$on('$routeChangeStart', function(event, next, current) { $rootScope.$on('$routeChangeStart', function(event, next, current) {
if (!util.supports.data) { if (!util.supports.data) {
$location.path('unsupported'); $location.path('unsupported');
} else { } else {
if ((!$rootScope.wallet || !$rootScope.wallet.id) && next.validate) { if ((!$rootScope.wallet || !$rootScope.wallet.id) && next.validate) {
$idle.unwatch();
$location.path('/'); $location.path('/');
} }
if ($rootScope.wallet && !$rootScope.wallet.isReady()) { if ($rootScope.wallet && !$rootScope.wallet.isReady()) {

View File

@ -21,6 +21,7 @@ module.exports = function(config) {
'lib/angular/angular.min.js', 'lib/angular/angular.min.js',
'lib/angular-mocks/angular-mocks.js', 'lib/angular-mocks/angular-mocks.js',
'lib/moment/moment.js', 'lib/moment/moment.js',
'lib/ng-idle/angular-idle.min.js',
'lib/angular-moment/angular-moment.js', 'lib/angular-moment/angular-moment.js',
'lib/qrcode-generator/js/qrcode.js', 'lib/qrcode-generator/js/qrcode.js',
'lib/angular-qrcode/qrcode.js', 'lib/angular-qrcode/qrcode.js',