Refactor register, my channels
This commit is contained in:
parent
25a877dc3c
commit
b06d8ff09f
179
api.js
179
api.js
|
@ -11,7 +11,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
||||||
|
|
||||||
var Auth = require("./auth");
|
var Auth = require("./auth");
|
||||||
var Logger = require("./logger");
|
var Logger = require("./logger");
|
||||||
var apilog = new Logger.Logger("api.log");
|
|
||||||
var ActionLog = require("./actionlog");
|
var ActionLog = require("./actionlog");
|
||||||
var fs = require("fs");
|
var fs = require("fs");
|
||||||
|
|
||||||
|
@ -118,7 +117,7 @@ module.exports = function (Server) {
|
||||||
|
|
||||||
/* ENDREGION channels */
|
/* ENDREGION channels */
|
||||||
|
|
||||||
/* REGION authentication */
|
/* REGION authentication, account management */
|
||||||
|
|
||||||
/* login */
|
/* login */
|
||||||
app.post("/api/login", function (req, res) {
|
app.post("/api/login", function (req, res) {
|
||||||
|
@ -170,6 +169,72 @@ module.exports = function (Server) {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/* register an account */
|
||||||
|
app.post("/api/register", function (req, res) {
|
||||||
|
res.type("application/jsonp");
|
||||||
|
var name = req.body.name;
|
||||||
|
var pw = req.body.pw;
|
||||||
|
var ip = getIP(req);
|
||||||
|
|
||||||
|
// Limit registrations per IP within a certain time period
|
||||||
|
if(ActionLog.tooManyRegistrations(ip)) {
|
||||||
|
ActionLog.record(ip, name, "register-failure",
|
||||||
|
"Too many recent registrations");
|
||||||
|
res.jsonp({
|
||||||
|
success: false,
|
||||||
|
error: "Your IP address has registered too many accounts "+
|
||||||
|
"in the past 48 hours. Please wait a while before"+
|
||||||
|
" registering another."
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!pw) {
|
||||||
|
// costanza.jpg
|
||||||
|
res.jsonp({
|
||||||
|
success: false,
|
||||||
|
error: "You must provide a password"
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!Auth.validateName(name)) {
|
||||||
|
ActionLog.record(ip, name, "register-failure", "Invalid name");
|
||||||
|
res.jsonp({
|
||||||
|
success: false,
|
||||||
|
error: "Invalid username. Valid usernames must be 1-20 "+
|
||||||
|
"characters long and consist only of alphanumeric "+
|
||||||
|
"characters and underscores (_)"
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Auth.isRegistered(name)) {
|
||||||
|
ActionLog.record(ip, name, "register-failure", "Name taken");
|
||||||
|
res.jsonp({
|
||||||
|
success: false,
|
||||||
|
error: "That username is already taken"
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var session = Auth.register(name, pw);
|
||||||
|
if(!session) {
|
||||||
|
res.jsonp({
|
||||||
|
success: false,
|
||||||
|
error: "Registration error. Contact an administrator "+
|
||||||
|
"for assistance."
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ActionLog.record(ip, name, "register-success");
|
||||||
|
res.jsonp({
|
||||||
|
success: true,
|
||||||
|
session: session
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
/* password change */
|
/* password change */
|
||||||
app.post("/api/account/passwordchange", function (req, res) {
|
app.post("/api/account/passwordchange", function (req, res) {
|
||||||
res.type("application/jsonp");
|
res.type("application/jsonp");
|
||||||
|
@ -425,94 +490,30 @@ module.exports = function (Server) {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/* my channels */
|
||||||
|
app.get("/api/account/mychannels", function (req, res) {
|
||||||
|
res.type("application/jsonp");
|
||||||
|
var name = req.query.name;
|
||||||
|
var session = req.query.session;
|
||||||
|
|
||||||
|
var row = Auth.login(name, session);
|
||||||
|
if(!row) {
|
||||||
|
res.jsonp({
|
||||||
|
success: false,
|
||||||
|
error: "Invalid login"
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var channels = Server.db.listUserChannels(name);
|
||||||
|
res.jsonp({
|
||||||
|
success: true,
|
||||||
|
channels: channels
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
var x = {
|
var x = {
|
||||||
|
|
||||||
handleRegister: function (params, req, res) {
|
|
||||||
var name = params.name || "";
|
|
||||||
var pw = params.pw || "";
|
|
||||||
if(ActionLog.tooManyRegistrations(getIP(req))) {
|
|
||||||
ActionLog.record(getIP(req), name, "register-failure",
|
|
||||||
"Too many recent registrations from this IP");
|
|
||||||
this.sendJSON(res, {
|
|
||||||
success: false,
|
|
||||||
error: "Your IP address has registered several accounts in "+
|
|
||||||
"the past 48 hours. Please wait a while or ask an "+
|
|
||||||
"administrator for assistance."
|
|
||||||
});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(pw == "") {
|
|
||||||
this.sendJSON(res, {
|
|
||||||
success: false,
|
|
||||||
error: "You must provide a password"
|
|
||||||
});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else if(Auth.isRegistered(name)) {
|
|
||||||
ActionLog.record(getIP(req), name, "register-failure",
|
|
||||||
"Name taken");
|
|
||||||
this.sendJSON(res, {
|
|
||||||
success: false,
|
|
||||||
error: "That username is already taken"
|
|
||||||
});
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else if(!Auth.validateName(name)) {
|
|
||||||
ActionLog.record(getIP(req), name, "register-failure",
|
|
||||||
"Invalid name");
|
|
||||||
this.sendJSON(res, {
|
|
||||||
success: false,
|
|
||||||
error: "Invalid username. Usernames must be 1-20 characters long and consist only of alphanumeric characters and underscores"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var session = Auth.register(name, pw);
|
|
||||||
if(session) {
|
|
||||||
ActionLog.record(getIP(req), name, "register-success");
|
|
||||||
Logger.syslog.log(getIP(req) + " registered " + name);
|
|
||||||
this.sendJSON(res, {
|
|
||||||
success: true,
|
|
||||||
session: session
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
this.sendJSON(res, {
|
|
||||||
success: false,
|
|
||||||
error: "Registration error. Contact an admin for assistance."
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
handleListUserChannels: function (params, req, res) {
|
|
||||||
var name = params.name || "";
|
|
||||||
var pw = params.pw || "";
|
|
||||||
var session = params.session || "";
|
|
||||||
|
|
||||||
var row = Auth.login(name, pw, session);
|
|
||||||
if(!row) {
|
|
||||||
this.sendJSON(res, {
|
|
||||||
success: false,
|
|
||||||
error: "Invalid login"
|
|
||||||
});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var channels = Server.db.listUserChannels(name);
|
|
||||||
|
|
||||||
this.sendJSON(res, {
|
|
||||||
success: true,
|
|
||||||
channels: channels
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
handleAdmReports: function (params, req, res) {
|
|
||||||
this.sendJSON(res, {
|
|
||||||
error: "Not implemented"
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
handleReadActionLog: function (params, req, res) {
|
handleReadActionLog: function (params, req, res) {
|
||||||
var name = params.name || "";
|
var name = params.name || "";
|
||||||
var pw = params.pw || "";
|
var pw = params.pw || "";
|
||||||
|
|
Loading…
Reference in a new issue