mirror of https://github.com/BTCPrivate/copay.git
Merge pull request #976 from cmgustavo/feature/01-timeout
Automatically logout wallet after 15 minutes of inactivity
This commit is contained in:
commit
ba504f147d
|
@ -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": "*"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 -->
|
||||||
|
|
|
@ -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', []);
|
||||||
|
|
|
@ -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');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
|
@ -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()) {
|
||||||
|
|
|
@ -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',
|
||||||
|
|
Loading…
Reference in New Issue