scalra
Version:
node.js framework to prototype and scale rapidly
142 lines (119 loc) • 3.25 kB
JavaScript
/*
common logic
*/
var languages = {};
languages['chinese'] = {
err_notfound: '帳密不符或帳號不存在!',
err_incomplete: '請填寫完整註冊資料',
err_exists: '帳號已存在',
err_email: 'e-mail 格式錯誤',
register_success: '註冊成功! 自動登入...',
login_success: '登入成功',
logout_success: '登出成功',
update_success: '更新成功!',
};
// language
languages['english'] = {
err_notfound: 'account or password incorrect',
err_incomplete: 'please fill in full data',
err_exists: 'account already exists',
err_email: 'email format incorrect',
register_success: 'register success! login automatically',
login_success: 'login success!',
logout_success: 'logout success!',
update_success: 'update success!',
};
var l_lang = languages['english'];
//
// helpers
//
// allow string to check if it begins with something
// ref: http://stackoverflow.com/questions/1767246/javascript-check-if-string-begins-with-something
String.prototype.startsWith = function (needle) {
return(this.indexOf(needle) == 0);
};
// retrieve account & password from HTML elements
function getInput() {
var account = document.getElementById('account').value;
var email = (document.getElementById('email') ? document.getElementById('email').value : '');
var password = document.getElementById('password').value;
return {account: account, email: email, password: password};
}
// types: 'register' 'account' 'getpass'
function login(type) {
var input = getInput();
var onDone = function (err, result) {
if (err) {
console.error(err);
// switch for various errors
switch (err) {
case 'ACCOUNT_EXISTS':
alert(l_lang.err_exists);
break;
case 'INVALID_EMAIL':
alert(l_lang.err_email);
break;
case 'INVALID_ACCOUNT':
case 'INVALID_PASSWORD_OR_TOKEN':
alert(l_lang.err_notfound);
break;
case 'INVALID_DATA':
case 'UID_ERROR':
case 'DB_ERROR':
case 'GROUP_ERROR':
default:
alert(err);
break;
}
return;
}
// do not redirect if it's just to reset password or register
if (type === 'getpass')
return;
// try to login if register success
if (type === 'register') {
login('account');
return;
}
alert(l_lang.login_success);
window.location = '/main';
}
switch (type) {
case 'register':
if (input.account === '' || input.password === '' || input.email === '') {
return alert(l_lang.err_incomplete);
}
SR.API._ACCOUNT_REGISTER(input, onDone);
break;
case 'account':
console.log('calling _ACCOUNT_LOGIN');
SR.API._ACCOUNT_LOGIN(input, onDone);
break;
case 'getpass':
SR.API._ACCOUNT_RESETPASS(input, onDone);
break;
default:
alert('unknown login type');
break;
}
}
function logout (account) {
SR.API._ACCOUNT_LOGOUT({account: account}, function (err, result) {
if (err) {
alert(err);
} else {
alert(l_lang.logout_success);
}
var url = "/";
window.location.href = url;
});
}
function update_data(account, data) {
SR.API._ACCOUNT_SETDATA({account: account, data: data}, function (err) {
if (err) {
alert(err);
} else {
alert(l_lang.update_success);
}
});
}