Changeset View
Changeset View
Standalone View
Standalone View
lib/subject/predefined-subjects/sessions-subject.js
"use strict"; | "use strict"; | ||||
const locreq = require("locreq")(__dirname); | const locreq = require("locreq")(__dirname); | ||||
const Promise = require("bluebird"); | const Promise = require("bluebird"); | ||||
const CurrentSessionSubject = require("../subject-types/current-session-subject.js"); | const CurrentSessionSubject = require("../subject-types/current-session-subject.js"); | ||||
const SuperContext = locreq("lib/super-context.js"); | const SuperContext = locreq("lib/super-context.js"); | ||||
const Errors = locreq("lib/response/error.js"); | const Errors = locreq("lib/response/error.js"); | ||||
const Responses = locreq("lib/response/responses.js"); | const Responses = locreq("lib/response/responses.js"); | ||||
const Subject = locreq("lib/subject/subject.js"); | const Subject = locreq("lib/subject/subject.js"); | ||||
const SecureHasher = locreq("lib/utils/secure-hasher.js"); | const SecureHasher = locreq("lib/utils/secure-hasher.js"); | ||||
async function validate_auth_data(app, username, password) { | async function validate_auth_data(app, username, password) { | ||||
const [user] = await app.Datastore.find("users", { | const [user] = await app.Datastore.find("users", { | ||||
"body.username.safe": username, | "username.safe": username, | ||||
}); | }); | ||||
if (!user) { | if (!user) { | ||||
throw new Errors.InvalidCredentials("Incorrect username!"); | throw new Errors.InvalidCredentials("Incorrect username!"); | ||||
} | } | ||||
const is_valid = await SecureHasher.matches(password, user.body.password); | const is_valid = await SecureHasher.matches(password, user.password); | ||||
if (!is_valid) { | if (!is_valid) { | ||||
throw new Errors.InvalidCredentials("Incorrect password!"); | throw new Errors.InvalidCredentials("Incorrect password!"); | ||||
} | } | ||||
return user; | return user; | ||||
} | } | ||||
function try_to_login(app, context, { username, password }) { | function try_to_login(app, context, { username, password }) { | ||||
Show All 14 Lines | return Promise.try(async () => { | ||||
); | ); | ||||
await app.run_action( | await app.run_action( | ||||
new SuperContext(), | new SuperContext(), | ||||
["collections", "users", user.sealious_id], | ["collections", "users", user.sealious_id], | ||||
"edit", | "edit", | ||||
{ last_login_context: context } | { last_login_context: context } | ||||
); | ); | ||||
return new Responses.NewSession(session.body["session-id"]); | return new Responses.NewSession(session["session-id"]); | ||||
}); | }); | ||||
} | } | ||||
const SessionsSubject = function(app) { | const SessionsSubject = function(app) { | ||||
this.perform_action = function(context, action_name, params) { | this.perform_action = function(context, action_name, params) { | ||||
params = params || {}; | params = params || {}; | ||||
switch (action_name) { | switch (action_name) { | ||||
case "create": | case "create": | ||||
Show All 25 Lines |