Skip to content

Instantly share code, notes, and snippets.

@dougluce
Last active December 16, 2015 17:08
Show Gist options
  • Save dougluce/5467700 to your computer and use it in GitHub Desktop.
Save dougluce/5467700 to your computer and use it in GitHub Desktop.
/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)
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