titarenko/generator-erma

View on GitHub
app/templates/index.coffee

Summary

Maintainability
Test Coverage
express = require 'express'
mongoose = require 'mongoose'
require "express-resource"
config = require './config'
Security = require "./modules/Security"
Log = require "./modules/Log"
resources = require "./modules/resources"
User = require "./modules/models/User"

mongoose.connect config.mongoUrl, (error) ->
    Log.error error if error
    Log.info "Mongoose connected to #{config.mongoUrl}." unless error

app = express()

app.set "view engine", "jade"
app.set "views", __dirname + "/views"

app.use express.bodyParser()
app.use express.cookieParser config.sessionSecret
app.use express.cookieSession()

app.use "/", express.static __dirname + "/build/lib"
app.use "/img", express.static __dirname + "/build/lib"
app.use "/fonts", express.static __dirname + "/build/lib"
app.use "/", express.static __dirname + "/build"
app.use "/", express.static __dirname + "/public/images"

Security.for app

app.get "/", (req, res) ->
    if req.isAuthenticated()
        res.redirect "/app"
    else
        res.render "landing"

app.get "/app", (req, res) ->
    if req.isAuthenticated()
        User.touch req.user._id, req.ip, (error) ->
            Log.error "Can't touch user #{req.user._id}." if error
            res.render "app"
    else
        res.redirect "/"

for name, implementation of resources
    Security.protect "/#{name}"
    app.resource name, implementation

app.listen config.port, -> 
    Log.info "Listening on #{config.port}..."