Mercurial > hg > rlgwebd
comparison rlgwebd.js @ 19:188bbd857124
RLG-Web: add user registration
Update the server and client sides of RLG-Web to make use of the new
registration feature of sqlickrypt.
| author | John "Elwin" Edwards <elwin@sdf.org> |
|---|---|
| date | Tue, 22 May 2012 20:54:33 -0700 |
| parents | d3e3d6b4016b |
| children | 5f785e1d5cca |
comparison
equal
deleted
inserted
replaced
| 18:59ea628abb81 | 19:188bbd857124 |
|---|---|
| 319 // If progressdir isn't readable, start a new game anyway. | 319 // If progressdir isn't readable, start a new game anyway. |
| 320 startgame(); | 320 startgame(); |
| 321 }); | 321 }); |
| 322 } | 322 } |
| 323 /* Launch the sqlickrypt utility to check the password. */ | 323 /* Launch the sqlickrypt utility to check the password. */ |
| 324 var checker = require('child_process').spawn("/bin/sqlickrypt"); | 324 var checker = child_process.spawn("/bin/sqlickrypt", ["check"]); |
| 325 checker.on("exit", checkit); | 325 checker.on("exit", checkit); |
| 326 checker.stdin.end(username + '\n' + password + '\n', "utf8"); | 326 checker.stdin.end(username + '\n' + password + '\n', "utf8"); |
| 327 return; | |
| 328 } | |
| 329 | |
| 330 function register(req, res, formdata) { | |
| 331 var uname, passwd, email; | |
| 332 if (typeof (formdata.name) != "string" || formdata.name === "") { | |
| 333 sendError(res, 2, "No name given."); | |
| 334 return; | |
| 335 } | |
| 336 else | |
| 337 uname = formdata["name"]; | |
| 338 if (typeof (formdata.pw) != "string" || formdata.pw === "") { | |
| 339 sendError(res, 2, "No password given."); | |
| 340 return; | |
| 341 } | |
| 342 else | |
| 343 passwd = formdata["pw"]; | |
| 344 if (typeof (formdata.email) != "string" || formdata.email === "") { | |
| 345 /* E-mail is optional */ | |
| 346 email = "nobody@nowhere.not"; | |
| 347 } | |
| 348 else | |
| 349 email = formdata["email"]; | |
| 350 function checkreg(code, signal) { | |
| 351 if (code == 4) | |
| 352 sendError(res, 2, "Invalid characters in name or email."); | |
| 353 else if (code == 1) | |
| 354 sendError(res, 2, "Username " + uname + " is already being used."); | |
| 355 else if (code != 0) | |
| 356 sendError(res, 0, null); | |
| 357 else { | |
| 358 res.writeHead(200, {'Content-Type': 'text/plain'}); | |
| 359 var reply = {"t": "r", "d": uname}; | |
| 360 res.write(JSON.stringify(reply)); | |
| 361 res.end(); | |
| 362 console.log("Added new user: " + uname); | |
| 363 } | |
| 364 } | |
| 365 var child_adder = child_process.spawn("/bin/sqlickrypt", ["register"]); | |
| 366 child_adder.on("exit", checkreg); | |
| 367 child_adder.stdin.end(uname + '\n' + passwd + '\n' + email + '\n', "utf8"); | |
| 327 return; | 368 return; |
| 328 } | 369 } |
| 329 | 370 |
| 330 function logout(term, res) { | 371 function logout(term, res) { |
| 331 if (!term.alive) { | 372 if (!term.alive) { |
| 480 readFeed(res, cterm); | 521 readFeed(res, cterm); |
| 481 } | 522 } |
| 482 else if (target == "/login") { | 523 else if (target == "/login") { |
| 483 login(req, res, formdata); | 524 login(req, res, formdata); |
| 484 } | 525 } |
| 526 else if (target == "/addacct") { | |
| 527 register(req, res, formdata); | |
| 528 } | |
| 485 else { | 529 else { |
| 486 res.writeHead(405, resheaders); | 530 res.writeHead(405, resheaders); |
| 487 res.end(); | 531 res.end(); |
| 488 } | 532 } |
| 489 } | 533 } |
