add support for logging in from register page

This commit is contained in:
ansuz 2017-03-14 12:39:22 +01:00
parent 11ff3f5347
commit 09afba80db
2 changed files with 44 additions and 22 deletions

View File

@ -94,17 +94,21 @@ define([
res.realtime = rt.realtime; res.realtime = rt.realtime;
res.network = rt.network; res.network = rt.network;
// they're registering...
res.userHash = opt.userHash;
res.userName = uname;
// they tried to just log in but there's no such user // they tried to just log in but there's no such user
if (!isRegister && isProxyEmpty(rt.proxy)) { if (!isRegister && isProxyEmpty(rt.proxy)) {
rt.network.disconnect(); // clean up after yourself rt.network.disconnect(); // clean up after yourself
return void cb('NO_SUCH_USER', res); return void cb('NO_SUCH_USER', res);
} }
// they're registering... // they tried to register, but those exact credentials exist
if (isRegister && !isProxyEmpty(rt.proxy)) {
res.userHash = opt.userHash; rt.network.disconnect();
res.userName = uname; return void cb('ALREADY_REGISTERED', res);
//res.displayName // TODO }
cb(void 0, res); cb(void 0, res);
}); });

View File

@ -61,6 +61,25 @@ define([
var $register = $('button#register'); var $register = $('button#register');
var logMeIn = function (result) {
localStorage.User_hash = result.userHash;
Cryptpad.whenRealtimeSyncs(result.realtime, function () {
Cryptpad.login(result.userHash, result.userName, function () {
if (sessionStorage.redirectTo) {
var h = sessionStorage.redirectTo;
var parser = document.createElement('a');
parser.href = h;
if (parser.origin === window.location.origin) {
delete sessionStorage.redirectTo;
window.location.href = h;
return;
}
}
window.location.href = '/drive/';
});
});
};
$register.click(function () { $register.click(function () {
var uname = $uname.val(); var uname = $uname.val();
var passwd = $passwd.val(); var passwd = $passwd.val();
@ -101,14 +120,27 @@ define([
Cryptpad.alert(Messages.login_invalPass); Cryptpad.alert(Messages.login_invalPass);
}); });
break; break;
case 'ALREADY_REGISTERED':
Cryptpad.removeLoadingScreen(function () {
Cryptpad.confirm(Messages.register_alreadyRegistered, function (yes) {
if (!yes) { return; }
result.proxy.login_name = uname;
if (!result.proxy[Cryptpad.displayNameKey]) {
result.proxy[Cryptpad.displayNameKey] = uname;
}
Cryptpad.eraseTempSessionValues();
logMeIn(result);
});
});
break;
default: // UNHANDLED ERROR default: // UNHANDLED ERROR
Cryptpad.errorLoadingScreen(Messages.login_unhandledError); Cryptpad.errorLoadingScreen(Messages.login_unhandledError);
} }
return;
} }
var proxy = result.proxy; var proxy = result.proxy;
localStorage.User_hash = result.userHash;
Cryptpad.eraseTempSessionValues(); Cryptpad.eraseTempSessionValues();
if (shouldImport) { if (shouldImport) {
sessionStorage.migrateAnonDrive = 1; sessionStorage.migrateAnonDrive = 1;
@ -118,21 +150,7 @@ define([
proxy[Cryptpad.displayNameKey] = uname; proxy[Cryptpad.displayNameKey] = uname;
sessionStorage.createReadme = 1; sessionStorage.createReadme = 1;
Cryptpad.whenRealtimeSyncs(result.realtime, function () { logMeIn(result);
Cryptpad.login(result.userHash, result.userName, function () {
if (sessionStorage.redirectTo) {
var h = sessionStorage.redirectTo;
var parser = document.createElement('a');
parser.href = h;
if (parser.origin === window.location.origin) {
delete sessionStorage.redirectTo;
window.location.href = h;
return;
}
}
window.location.href = '/drive/';
});
});
}); });
}, { }, {
ok: Messages.register_writtenPassword, //'I have written down my password, proceed', ok: Messages.register_writtenPassword, //'I have written down my password, proceed',