mirror of https://github.com/calzoneman/sync.git
Implement get/setProfile
This commit is contained in:
parent
a821498298
commit
8d2587cebd
|
@ -17,6 +17,7 @@ module.exports = function (db) {
|
||||||
"`password` VARCHAR(64) NOT NULL," +
|
"`password` VARCHAR(64) NOT NULL," +
|
||||||
"`global_rank` INT NOT NULL," +
|
"`global_rank` INT NOT NULL," +
|
||||||
"`email` VARCHAR(255) NOT NULL," +
|
"`email` VARCHAR(255) NOT NULL," +
|
||||||
|
"`profile` TEXT NOT NULL," +
|
||||||
"`ip` VARCHAR(39) NOT NULL," +
|
"`ip` VARCHAR(39) NOT NULL," +
|
||||||
"`time` BIGINT NOT NULL, " +
|
"`time` BIGINT NOT NULL, " +
|
||||||
"PRIMARY KEY(`id`), INDEX(`name`)) " +
|
"PRIMARY KEY(`id`), INDEX(`name`)) " +
|
||||||
|
@ -404,20 +405,78 @@ module.exports = function (db) {
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Lookup a user's profile
|
||||||
|
*/
|
||||||
getProfile: function (name, callback) {
|
getProfile: function (name, callback) {
|
||||||
if (typeof callback !== "function") {
|
if (typeof callback !== "function") {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
callback(new Error("getProfile is not implemented"), null);
|
if (typeof name !== "string") {
|
||||||
},
|
callback(new Error("Invalid username"), null);
|
||||||
|
|
||||||
setProfile: function (name, callback) {
|
|
||||||
if (typeof callback !== "function") {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
callback(new Error("setProfile is not implemented"), null);
|
db.query("SELECT profile FROM `users` WHERE name=?", [name],
|
||||||
|
function (err, rows) {
|
||||||
|
if (err) {
|
||||||
|
callback(err, null);
|
||||||
|
} else if (rows.length === 0) {
|
||||||
|
callback(new Error("User does not exist"), null);
|
||||||
|
} else {
|
||||||
|
var userprof = {
|
||||||
|
image: "",
|
||||||
|
text: ""
|
||||||
|
};
|
||||||
|
try {
|
||||||
|
var profile = JSON.parse(rows[0].profile);
|
||||||
|
userprof.image = profile.image || "";
|
||||||
|
userprof.text = profile.text || "";
|
||||||
|
callback(null, userprof);
|
||||||
|
} catch (e) {
|
||||||
|
callback(e, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates a user's profile
|
||||||
|
*/
|
||||||
|
setProfile: function (name, profile, callback) {
|
||||||
|
if (typeof callback !== "function") {
|
||||||
|
callback = blackHole;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof name !== "string") {
|
||||||
|
callback(new Error("Invalid username"), null);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof profile !== "object") {
|
||||||
|
callback(new Error("Invalid profile"), null);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cast to string to guarantee string type
|
||||||
|
profile.image += "";
|
||||||
|
profile.text += "";
|
||||||
|
|
||||||
|
// Limit size
|
||||||
|
profile.image = profile.image.substring(0, 255);
|
||||||
|
profile.text = profile.text.substring(0, 255);
|
||||||
|
|
||||||
|
// Stringify the literal to guarantee I only get the keys I want
|
||||||
|
var profilejson = JSON.stringify({
|
||||||
|
image: profile.image,
|
||||||
|
text: profile.text
|
||||||
|
});
|
||||||
|
|
||||||
|
db.query("UPDATE `users` SET profile=? WHERE name=?", [profilejson, name],
|
||||||
|
function (err, result) {
|
||||||
|
callback(err, err ? null : true);
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
generatePasswordReset: function (ip, name, email, callback) {
|
generatePasswordReset: function (ip, name, email, callback) {
|
||||||
|
|
Loading…
Reference in New Issue