module.exports = (SHARE) -> url: '/user/login' method: 'POST' schema: SHARE.jsonschemas.user handler: (request, reply) -> session_id = request.cookies.session ? '' new Promise (resolve) -> SHARE.session.check session_id .then (user) -> # active session found SHARE.logger.debug "OK '#{user.login}' resumed session '#{session_id}'" resolve user .catch -> SHARE.fftcgdb.login request.body.login, request.body.password .then (user) -> # login successful: start new session SHARE.session.start user .then (session_id) -> logger.info "OK '#{user.login}' created session '#{session_id}'" reply.setCookie 'session', session_id resolve user .catch (err) -> # login failed SHARE.logger.info "FAIL login for '#{request.body.login}'" reply.send success: false err: err .then (user) -> # tell about the user who logged in reply.send success: true user: user