Last active
December 16, 2015 17:08
-
-
Save dougluce/5467700 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/Users/dougluce/src/node-login/node_modules/coffee-script/lib/coffee-script/helpers.js:229 | |
codeLine = codeLine.slice(0, start) + colorize(codeLine.slice(start, end | |
^ | |
TypeError: Cannot call method 'slice' of undefined | |
at Object.exports.prettyErrorMessage (/Users/dougluce/src/node-login/node_modules/coffee-script/lib/coffee-script/helpers.js:229:27) | |
at compileScript (/Users/dougluce/src/node-login/node_modules/coffee-script/lib/coffee-script/command.js:203:25) | |
at /Users/dougluce/src/node-login/node_modules/coffee-script/lib/coffee-script/command.js:144:18 | |
at fs.js:266:14 | |
at Object.oncomplete (fs.js:107:15) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CT = require './modules/country-list' | |
AM = require './modules/account-manager' | |
EM = require './modules/email-dispatcher' | |
module.exports = (app) -> | |
# main login page | |
app.get '/', (req, res) -> | |
# check if the user's credentials are saved in a cookie | |
if req.cookies.user == undefined || req.cookies.pass == undefined | |
res.render 'login', title: 'Hello - Please Login To Your Account' | |
else # attempt automatic login | |
AM.autoLogin req.cookies.user, req.cookies.pass, (o) -> | |
if o? | |
req.session.user = o | |
res.redirect '/home' | |
else | |
res.render 'login', title: 'Hello - Please Login To Your Account' | |
app.post '/', (req, res) -> | |
AM.manualLogin req.param('user'), req.param('pass'), (e, o) -> | |
if o? | |
if req.param('remember-me') == 'true' | |
res.cookie 'user', o.user, maxAge: 900000 | |
res.cookie 'pass', o.pass, maxAge: 900000 | |
res.send(o, 200) | |
res.send e, 400 | |
else | |
req.session.user = o | |
# logged-in user homepage | |
app.get '/home', (req, res) -> | |
if req.session.user? | |
res.render 'home', | |
title : 'Control Panel' | |
countries : CT | |
udata : req.session.user | |
else | |
# if user is not logged-in redirect back to login page // | |
res.redirect('/'); | |
app.post '/home', (req, res) -> | |
if req.param('user')? | |
AM.updateAccount | |
user : req.param 'user' | |
name : req.param 'name' | |
email : req.param 'email' | |
country : req.param 'country' | |
pass : req.param 'pass' | |
, (e, o) -> | |
if e | |
res.send 'error-updating-account', 400 | |
else | |
req.session.user = o | |
# update the user's login cookies if they exist [YUCK!!!!!] | |
if req.cookies.user? and req.cookies.pass? | |
res.cookie 'user', o.user, maxAge: 900000 | |
res.cookie 'pass', o.pass, maxAge: 900000 | |
res.send 'ok', 200 | |
else if req.param('logout') == 'true' | |
res.clearCookie 'user' | |
res.clearCookie 'pass' | |
req.session.destroy (e) -> res.send 'ok', 200 | |
# creating new accounts | |
app.get '/signup', (req, res) -> | |
res.render 'signup', title: 'Signup', countries : CT | |
app.post('/signup', (req, res) -> | |
AM.addNewAccount | |
name : req.param 'name' | |
email : req.param 'email' | |
user : req.param 'user' | |
pass : req.param 'password' | |
country : req.param 'country' | |
, (e) -> | |
if e | |
res.send e, 400 | |
else | |
res.send 'ok', 200 | |
# password reset | |
app.post '/lost-password', (req, res) -> | |
# look up the user's account via their email | |
AM.getAccountByEmail req.param('email'), (o) -> | |
if o | |
res.send 'ok', 200 | |
EM.dispatchResetPasswordLink o, (e, m) -> | |
# this callback takes a moment to return | |
# should add an ajax loader to give user feedback | |
unless e? | |
res.send 'email-server-error', 400 | |
console.log('error : ', k, e[k]) for (k in e) | |
else | |
res.send 'email-not-found', 400 | |
app.get '/reset-password', (req, res) -> | |
email = req.query["e"] | |
passH = req.query["p"] | |
AM.validateResetLink email, passH, (e) -> | |
unless e == 'ok' | |
res.redirect'/' | |
else | |
# save the user's email in a session instead of sending to the client | |
req.session.reset = email:email, passHash:passH | |
res.render 'reset', title : 'Reset Password' | |
app.post '/reset-password', (req, res) -> | |
nPass = req.param 'pass' | |
# retrieve the user's email from the session to lookup their account and reset password | |
email = req.session.reset.email | |
# destory the session immediately after retrieving the stored email | |
req.session.destroy() | |
AM.updatePassword email, nPass, (e, o) -> | |
if o | |
res.send 'ok', 200 | |
else | |
res.send 'unable to update password', 400 | |
# view & delete accounts | |
app.get '/print', (req, res) -> | |
AM.getAllRecords (e, accounts) -> | |
res.render 'print', title : 'Account List', accts : accounts | |
app.post '/delete', (req, res) -> | |
AM.deleteAccount req.body.id, (e, obj) -> | |
unless e? | |
res.clearCookie 'user' | |
res.clearCookie 'pass' | |
req.session.destroy (e) -> res.send 'ok', 200 | |
else | |
res.send 'record not found', 400 | |
app.get '/reset', (req, res) -> | |
AM.delAllRecords () -> res.redirect '/print' | |
app.get '*', (req, res) -> res.render '404', title: 'Page Not Found' | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment