setStatus: function(code) { | setStatus: function(code) { | ||||
this.statusCode = code; | this.statusCode = code; | ||||
}, | |||||
login: function(username, id) { | |||||
this.session.loggedIn = true; | |||||
this.session.username = username; | |||||
this.session.userId = id; | |||||
}, | |||||
logout: function() { | |||||
this.session.loggedIn = false; | |||||
delete this.session.username; | |||||
delete this.session.userId; | |||||
} | } | ||||
} | } |
"/api/image_create": "api/image_create.node.js", | "/api/image_create": "api/image_create.node.js", | ||||
"/api/collection_create": "api/collection_create.node.js", | "/api/collection_create": "api/collection_create.node.js", | ||||
"/api/account_create": "api/account_create.node.js", | "/api/account_create": "api/account_create.node.js", | ||||
"/api/account_login": "api/account_login.node.js" | |||||
"/api/account_login": "api/account_login.node.js", | |||||
"/api/account_logout": "api/account_logout.node.js" | |||||
} | } | ||||
var loaded = loader.load(endpoints, conf); | var loaded = loader.load(endpoints, conf); |
</div> | </div> | ||||
<div class="submit-container"> | <div class="submit-container"> | ||||
<button type="submit" class="btn btn-default">Log In</button> | <button type="submit" class="btn btn-default">Log In</button> | ||||
<a class="btn btn-default register" href="/register">Register</a> | |||||
<a class="register" href="/register">Register</a> | |||||
</div> | </div> | ||||
</form> | </form> | ||||
</li></ul> | </li></ul> |
if (err) | if (err) | ||||
return ctx.fail(err); | return ctx.fail(err); | ||||
ctx.session.loggedIn = true; | |||||
ctx.session.userId = res.rows[0].id; | |||||
ctx.session.username = ctx.postData.username; | |||||
ctx.login(ctx.postData.username, res.rows[0].id); | |||||
ctx.succeed({ | ctx.succeed({ | ||||
id: res.rows[0].id | id: res.rows[0].id |
var user = res.rows[0]; | var user = res.rows[0]; | ||||
ctx.session.loggedIn = true; | |||||
ctx.session.userId = user.id; | |||||
ctx.session.username = user.username; | |||||
ctx.login(user.username, user.id); | |||||
if (!user) | if (!user) | ||||
return ctx.fail("Wrong username or password."); | return ctx.fail("Wrong username or password."); |
var scrypt = require("scrypt"); | |||||
module.exports = function(ctx) { | |||||
ctx.getPostData(function(err, data) { | |||||
if (err) | |||||
return ctx.fail(err); | |||||
if (!data.username || !data.password) | |||||
return ctx.fail("You must provide a username and a password."); | |||||
ctx.db.query( | |||||
"SELECT id, username, pass_hash "+ | |||||
"FROM users "+ | |||||
"WHERE username=$1", | |||||
[data.username], | |||||
queryCallback | |||||
); | |||||
}); | |||||
function queryCallback(err, res) { | |||||
if (err) | |||||
return ctx.fail(err); | |||||
var user = res.rows[0]; | |||||
ctx.session.loggedIn = true; | |||||
ctx.session.userId = user.id; | |||||
ctx.session.username = user.username; | |||||
if (!user) | |||||
return ctx.fail("Wrong username or password."); | |||||
scrypt.verify( | |||||
new Buffer(user.pass_hash, "hex"), | |||||
new Buffer(ctx.postData.data.password), | |||||
function(err, success) { | |||||
if (success) { | |||||
ctx.succeed({ | |||||
id: user.id | |||||
}) | |||||
} else { | |||||
ctx.fail("Wrong username or password."); | |||||
} | |||||
} | |||||
); | |||||
} | |||||
} |
var scrypt = require("scrypt"); | |||||
module.exports = function(ctx) { | |||||
ctx.logout(); | |||||
ctx.succeed(); | |||||
} |