Merge pull request #353 from whiteout-io/dev/WO-891

[WO-891] Add logout to passphrase dialog
master v1.0.1
Tankred Hase 2015-05-19 18:31:16 +02:00
commit 25b9141a5f
5 changed files with 33 additions and 8 deletions

View File

@ -109,5 +109,7 @@ appCfg.string = {
connDocNoInbox: 'We could not detect an IMAP inbox folder on {0}. Please have a look at the FAQ for information on how to fix this error.',
connDocGenericError: 'There was an error connecting to {0}: {1}',
logoutTitle: 'Logout',
logoutMessage: 'Are you sure you want to log out? Please back up your encryption key before proceeding!'
};
logoutMessage: 'Are you sure you want to log out? Please back up your encryption key before proceeding!',
removePreAuthAccountTitle: 'Remove account',
removePreAuthAccountMessage: 'Are you sure you want to remove your account from this device?'
};

View File

@ -1,8 +1,10 @@
'use strict';
var LoginExistingCtrl = function($scope, $location, $routeParams, $q, email, auth, keychain) {
var LoginExistingCtrl = function($scope, $location, $routeParams, $q, email, auth, keychain, account, dialog, appConfig) {
!$routeParams.dev && !auth.isInitialized() && $location.path('/'); // init app
var str = appConfig.string;
$scope.confirmPassphrase = function() {
if ($scope.form.$invalid) {
$scope.errMsg = 'Please fill out all required fields!';
@ -38,6 +40,18 @@ var LoginExistingCtrl = function($scope, $location, $routeParams, $q, email, aut
}).catch(displayError);
};
$scope.logout = function() {
return dialog.confirm({
title: str.removePreAuthAccountTitle,
message: str.removePreAuthAccountMessage,
callback: function(confirm) {
if (confirm) {
account.logout().catch(dialog.error);
}
}
});
};
function displayError(err) {
$scope.busy = false;
$scope.incorrect = true;

View File

@ -938,8 +938,10 @@ Email.prototype.onConnect = function(imap) {
Email.prototype.onDisconnect = function() {
// logout of imap-client
// ignore error, because it's not problem if logout fails
this._imapClient.stopListeningForChanges(function() {});
this._imapClient.logout(function() {});
if (this._imapClient) {
this._imapClient.stopListeningForChanges(function() {});
this._imapClient.logout(function() {});
}
// discard clients
this._account.online = false;

View File

@ -25,7 +25,7 @@
</div>
</form>
<p class="typo-paragraph">
<a href="https://whiteout.io/revocation.html" title="Click here to reset your account." target="_blank">Forgot your passphrase?</a>
<a href="#" wo-touch="$event.preventDefault(); logout()" title="Remove account from device">Forgot your passphrase?</a>
</p>
</main>
<div ng-include="'tpl/page-footer.html'"></div>

View File

@ -1,12 +1,14 @@
'use strict';
var Auth = require('../../../../src/js/service/auth'),
Account = require('../../../../src/js/email/account'),
Dialog = require('../../../../src/js/util/dialog'),
LoginExistingCtrl = require('../../../../src/js/controller/login/login-existing'),
EmailDAO = require('../../../../src/js/email/email'),
KeychainDAO = require('../../../../src/js/service/keychain');
describe('Login (existing user) Controller unit test', function() {
var scope, location, ctrl, emailDaoMock, authMock,
var scope, location, ctrl, emailDaoMock, authMock, accountMock, dialogMock,
emailAddress = 'fred@foo.com',
passphrase = 'asd',
keychainMock;
@ -15,6 +17,8 @@ describe('Login (existing user) Controller unit test', function() {
emailDaoMock = sinon.createStubInstance(EmailDAO);
authMock = sinon.createStubInstance(Auth);
keychainMock = sinon.createStubInstance(KeychainDAO);
accountMock = sinon.createStubInstance(Account);
dialogMock = sinon.createStubInstance(Dialog);
authMock.emailAddress = emailAddress;
@ -31,7 +35,10 @@ describe('Login (existing user) Controller unit test', function() {
$q: window.qMock,
email: emailDaoMock,
auth: authMock,
keychain: keychainMock
keychain: keychainMock,
account: accountMock,
dialog: dialogMock,
appConfig: {}
});
});
});