Complete user registration, added idle inactivity timeout
This commit is contained in:
@@ -41,6 +41,8 @@ var ERR_NOT_IMPLEMENTED ='\1n\1h\1RNOT IMPLEMENTED YET?';
|
||||
var ERR_ROUTE ='\1n\1h\1WMISTAKE? \1GTRY AGAIN OR TELL US ON *08';
|
||||
var ERR_METHOD_NOT_EXIST ='\1n\1h\1WMISTAKE? \1GTRY AGAIN OR TELL US ON *08';
|
||||
var ACCESS_DENIED ='\1n\1h\1RACCESS DENIED. \1RMISTAKE? TRY AGAIN OR TELL US *08';
|
||||
var INACTIVITY ='\1n\1h\1RINACTIVITY ALERT';
|
||||
var INACTIVE ='\1n\1h\1RINACTIVITY DISCONNECT';
|
||||
|
||||
var NO_HISTORY_FRAMES =['980a','98b','981a'];
|
||||
|
||||
|
194
load/register.js
194
load/register.js
@@ -1,96 +1,176 @@
|
||||
/**
|
||||
* This handles user registration.
|
||||
*
|
||||
* The form must have the following fields:
|
||||
* + UID The user's user id to login
|
||||
* + EMAIL The users's email address - to receive tokens
|
||||
* + FULLNAME The user's full name
|
||||
* + PASS The users's preferred password
|
||||
* + CITY The user's city
|
||||
* + COUNTRY The user's country - 3 letter ISO code
|
||||
* + PCODE THe user's postal code
|
||||
*/
|
||||
|
||||
var CONTROL_REGISTER ='1';
|
||||
var EMAIL_REGEX = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
|
||||
var cValChars='ACDEFHJKLMNPQRTUVWXY23456789!@#$%&*';
|
||||
var cValChars='ACDEFHJKLMNPQRTUVWXY23456789!@$%&';
|
||||
|
||||
log(LOG_DEBUG,'Control REGISTER loaded');
|
||||
log(LOG_DEBUG,'+ Control REGISTER loaded');
|
||||
|
||||
function register() {
|
||||
var code = '';
|
||||
var complete = false;
|
||||
|
||||
this.handle=function(read) {
|
||||
log(LOG_DEBUG,'Control REGISTER handle() start. ('+read+')');
|
||||
log(LOG_DEBUG,'Field '+cf.fname+'('+JSON.stringify(cf)+')');
|
||||
log(LOG_DEBUG,'- Field '+cf.fname+'('+JSON.stringify(cf)+')');
|
||||
|
||||
if ((cf.fname == 'TOKEN') && (read == '#' || read == '\r')) {
|
||||
if (cf.fvalue !== code) {
|
||||
if (cf.fvalue == code) {
|
||||
complete = true;
|
||||
|
||||
} else {
|
||||
sendBaseline('\1n\1h\1RINVAID CODE, PLEASE TRY AGAIN *00',false);
|
||||
console.write(KEY_ESC+'['+cf.attribute.i+';'+cf.attribute.f+';'+cf.attribute.b+'m');
|
||||
read = '';
|
||||
}
|
||||
}
|
||||
|
||||
log(LOG_DEBUG,'Field Value '+cf.fvalue+'('+JSON.stringify(code)+')');
|
||||
log(LOG_DEBUG,'- Field Value ['+cf.fvalue+'] ('+code+')');
|
||||
|
||||
return read;
|
||||
}
|
||||
|
||||
// Called before processing for a field
|
||||
this.prefield=function() {
|
||||
log(LOG_DEBUG,'Field '+cf.fname+'('+JSON.stringify(cf)+')');
|
||||
log(LOG_DEBUG,'- Field '+cf.fname+'('+JSON.stringify(cf)+')');
|
||||
|
||||
if (cf.fname == 'TOKEN') {
|
||||
log(LOG_DEBUG,'BASELINE '+cf.fname+'('+JSON.stringify(cf)+')');
|
||||
sendBaseline('\1n\1h\1RPlease wait, while a token is emailed to you...',false);
|
||||
if (! code.length) {
|
||||
log(LOG_DEBUG,'- BASELINE '+cf.fname+'('+JSON.stringify(cf)+')');
|
||||
sendBaseline('\1n\1h\1RPlease wait, while a token is emailed to you...',false);
|
||||
|
||||
var email = fo.fieldValue('EMAIL');
|
||||
var user = fo.fieldValue('UID');
|
||||
var name = fo.fieldValue('FULLNAME');
|
||||
var email = fo.fieldValue('EMAIL');
|
||||
var user = fo.fieldValue('UID');
|
||||
var name = fo.fieldValue('FULLNAME');
|
||||
|
||||
log(LOG_DEBUG,'VALIDATE EMAIL TO ('+system.matchuserdata(U_NETMAIL,email)+')');
|
||||
// Make sure we got an email
|
||||
// Validate Email hasnt been used
|
||||
if ((email.indexOf('@') === -1) || ! EMAIL_REGEX.test(email) || (system.matchuserdata(U_NETMAIL,email) !== 0)) {
|
||||
sendBaseline('\1n\1h\1RINVAID EMAIL, PLEASE TRY AGAIN *00',false);
|
||||
return;
|
||||
}
|
||||
log(LOG_DEBUG,'- VALIDATE EMAIL TO ('+system.matchuserdata(U_NETMAIL,email)+')');
|
||||
// Make sure we got an email
|
||||
// Validate Email hasnt been used
|
||||
if ((email.indexOf('@') === -1) || ! EMAIL_REGEX.test(email) || (system.matchuserdata(U_NETMAIL,email) !== 0)) {
|
||||
sendBaseline('\1n\1h\1RINVAID EMAIL, PLEASE TRY AGAIN *00',false);
|
||||
return;
|
||||
}
|
||||
|
||||
// Validate USER_ID hasnt been used
|
||||
if (! system.check_name(user)) {
|
||||
log(LOG_DEBUG,'Cannot use user_id: ('+user+')');
|
||||
sendBaseline('\1n\1h\1RINVAID USER ID, PLEASE TRY AGAIN *00',false);
|
||||
}
|
||||
// Validate USER_ID hasnt been used
|
||||
if (! system.check_name(user)) {
|
||||
log(LOG_DEBUG,'Cannot use user_id: ('+user+')');
|
||||
sendBaseline('\1n\1h\1RINVAID USER ID, PLEASE TRY AGAIN *00',false);
|
||||
return;
|
||||
}
|
||||
|
||||
var msgbase = new MsgBase('mail');
|
||||
for (var i=0;i<6;i++)
|
||||
code+=cValChars.substr(parseInt(Math.random() * cValChars.length), 1);
|
||||
var msgbase = new MsgBase('mail');
|
||||
for (var i=0;i<6;i++)
|
||||
code+=cValChars.substr(parseInt(Math.random() * cValChars.length), 1);
|
||||
|
||||
var hdrs = new Object();
|
||||
hdrs.to=name;
|
||||
hdrs.to_net_type=netaddr_type(email);
|
||||
if (hdrs.to_net_type != NET_NONE) {
|
||||
hdrs.to_net_addr = email;
|
||||
} else {
|
||||
sendBaseline('\1n\1h\1RCANNOT SEND VALIDATION CODE, PLEASE TRY AGAIN *00',false);
|
||||
return;
|
||||
}
|
||||
hdrs.from=system.name;
|
||||
hdrs.from_net_addr='sysop@'+system.inet_addr;
|
||||
hdrs.from_net_type=NET_INTERNET;
|
||||
hdrs.subject='Registration TOKEN for '+system.name;
|
||||
var hdrs = new Object();
|
||||
hdrs.to=name;
|
||||
hdrs.to_net_type=netaddr_type(email);
|
||||
if (hdrs.to_net_type != NET_NONE) {
|
||||
hdrs.to_net_addr = email;
|
||||
} else {
|
||||
sendBaseline('\1n\1h\1RCANNOT SEND VALIDATION CODE, PLEASE TRY AGAIN *00',false);
|
||||
return;
|
||||
}
|
||||
hdrs.from=system.name;
|
||||
hdrs.from_net_addr='sysop@'+system.inet_addr;
|
||||
hdrs.from_net_type=NET_INTERNET;
|
||||
hdrs.subject='Registration TOKEN for '+system.name;
|
||||
|
||||
if (msgbase.open != undefined && msgbase.open() == false) {
|
||||
console.print("\r\n\1n\1h\1rERROR: \1y" + msgbase.last_error + "\1n \r\n");
|
||||
console.pause();
|
||||
if (msgbase.open != undefined && msgbase.open() == false) {
|
||||
console.print("\r\n\1n\1h\1rERROR: \1y" + msgbase.last_error + "\1n \r\n");
|
||||
console.pause();
|
||||
msgbase.close();
|
||||
bbs.hangup();
|
||||
return;
|
||||
}
|
||||
|
||||
var msg="CODE: " + code + "\n\n";
|
||||
msg += 'Please use the above code to validate your login to '+system.name+'.';
|
||||
|
||||
if (! msgbase.save_msg(hdrs,msg)) {
|
||||
console.print("\r\n\1n\1h\1rERROR: \1y" + msgbase.last_error + "\1n \r\n");
|
||||
console.pause();
|
||||
msgbase.close();
|
||||
bbs.hangup();
|
||||
return;
|
||||
}
|
||||
msgbase.close();
|
||||
bbs.hangup();
|
||||
return;
|
||||
}
|
||||
|
||||
var msg="CODE: " + code + "\n\n";
|
||||
msg += 'Please use the above code to validate your login to '+system.name+'.';
|
||||
|
||||
if (! msgbase.save_msg(hdrs,msg)) {
|
||||
console.print("\r\n\1n\1h\1rERROR: \1y" + msgbase.last_error + "\1n \r\n");
|
||||
console.pause();
|
||||
msgbase.close();
|
||||
bbs.hangup();
|
||||
return;
|
||||
}
|
||||
msgbase.close();
|
||||
|
||||
log(LOG_DEBUG,'SEND EMAIL TO ('+x+')');
|
||||
sendBaseline('\1n\1h\1RTOKEN SENT, PLEASE ENTER TOKEN',false);
|
||||
log(LOG_DEBUG,'SENT EMAIL TOKEN ('+code+') ['+JSON.stringify(hdrs)+']');
|
||||
}
|
||||
}
|
||||
|
||||
this.process=function() {
|
||||
log(LOG_DEBUG,'Creating user: '+fo.fieldValue('EMAIL'));
|
||||
|
||||
try {
|
||||
var newuser = system.new_user(fo.fieldValue('UID'));
|
||||
|
||||
} catch (e) {
|
||||
sendBaseline('\1n\1h\1RERROR USER EXISTS, PLEASE TRY AGAIN *00',false);
|
||||
log(LOG_ERROR,"New user couldn't be created (user created while signing up)");
|
||||
log(LOG_ERROR,JSON.stringify(e));
|
||||
return;
|
||||
}
|
||||
|
||||
if (typeof newuser === 'number') {
|
||||
sendBaseline('\1n\1h\1RERROR CREATING USER, PLEASE TRY AGAIN *00',false);
|
||||
log(LOG_ERROR,"New user couldn't be created (error code "+newuser+")");
|
||||
return;
|
||||
}
|
||||
|
||||
newuser.security.password = '';
|
||||
if (bbs.login(newuser.alias,null)) {
|
||||
user.number = newuser.number;
|
||||
user.security.password = fo.fieldValue('PASS');
|
||||
user.name = fo.fieldValue('FULLNAME');
|
||||
user.handle = fo.fieldValue('UID');
|
||||
user.location = fo.fieldValue('CITY')+', '+fo.fieldValue('COUNTRY');
|
||||
user.zipcode = fo.fieldValue('PCODE');
|
||||
user.netmail = fo.fieldValue('EMAIL');
|
||||
bbs.user_sync();
|
||||
bbs.logon();
|
||||
log(LOG_INFO,"Created user record #"+user.number+": "+user.alias);
|
||||
|
||||
action = ACTION_EXIT;
|
||||
return;
|
||||
|
||||
} else {
|
||||
sendBaseline('\1n\1h\1RERROR LOGGING IN, PLEASE TRY AGAIN *00',false);
|
||||
log(LOG_INFO,"bbs.login() failed");
|
||||
user.comment = 'Initial login failed!';
|
||||
newuser.settings |= USER_DELETED;
|
||||
delete newuser;
|
||||
return;
|
||||
}
|
||||
|
||||
return 'processed';
|
||||
}
|
||||
|
||||
Object.defineProperty(this,'getName', {
|
||||
get: function() {
|
||||
return 'Control-Registration';
|
||||
}
|
||||
});
|
||||
|
||||
Object.defineProperty(this,'isComplete', {
|
||||
get: function() {
|
||||
return complete;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
this;
|
Reference in New Issue
Block a user