-
Notifications
You must be signed in to change notification settings - Fork 21
/
app.coffee
144 lines (127 loc) · 3.63 KB
/
app.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
express = require 'express'
path = require 'path'
http = require 'http'
favicon = require 'serve-favicon'
logger = require 'morgan'
cookieParser = require 'cookie-parser'
bodyParser = require 'body-parser'
rule = require './tools/rule'
updata = require './tools/updata'
mongoose = require 'mongoose'
treeModel = require './models/tree'
userModel = require './models/users'
render = require './tools/render'
config = require './config/config'
app = express()
port = 3013
# view engine setup
app.set 'views', path.join(__dirname, 'views')
app.set 'view engine', 'jade'
# uncomment after placing your favicon in /public
#app.use(favicon(__dirname + '/public/favicon.ico'));
app.use logger('dev')
app.use bodyParser.json()
app.use bodyParser.urlencoded
extended: false
app.use cookieParser()
app.use express.static path.join(__dirname, 'public')
app.use express.static path.join(__dirname, 'doc')
if not config.isFirst
#首次初始化
#console.log('首次')
first = require './routes/first'
app.post /^\/*/, (req, res, next) ->
req.httpPort = port
next()
return
app.get /^\/*/, (req, res, next) ->
req.httpPort = port
next()
return
app.use '/', first
else
index = require './routes/index'
users = require './routes/users'
api = require './routes/api'
#正常启动
if /[\w\W]+/.test(config.dbUsername)
#口令登陆
#console.log('加密登入')
mongoose.connect 'mongodb://'+config.dbUsername+':'+config.dbPassword+'@'+config.dbIp.split('/')[0]+':'+config.dbPort+'/'+config.dbName
else
#空口令登陆
#console.log('空口令登入')
mongoose.connect 'mongodb://'+config.dbIp.split('/')[0]+':'+config.dbPort+'/'+config.dbName
#更新目录
updata.menu port
#需要的参数先处理好
app.post /^\/*/, (req, res, next) ->
req.httpPort = port
email = req.cookies['email']
connectid = req.cookies['connect.id']
singename = req.cookies['name_sig']
if rule.pw email,connectid,singename
#获取用户信息并传递
userModel.findByEmail email, (err,user) ->
if err
console.log err
if user.length <=0
req.loginInfo = false
else
req.loginInfo = user[0]
next() # 将控制转向下一个符合URL的路由
return
else
req.loginInfo = false
next() # 将控制转向下一个符合URL的路由
return
app.get /^\/*/, (req, res, next) ->
#读取目录
treeModel.fetch (err,tree) ->
if err
console.log err
if tree.length <= 0
req.tree = []
else
req.tree = tree[0].tree
#判断登陆
email = req.cookies['email']
connectid = req.cookies['connect.id']
singename = req.cookies['name_sig']
if rule.pw email,connectid,singename
#获取用户信息并传递
userModel.findByEmail email, (err,user) ->
if err
console.log err
if user.length <=0
req.loginInfo = false
else
req.loginInfo = user[0]
next(); # 将控制转向下一个符合URL的路由
return
else
req.loginInfo = false
next() # 将控制转向下一个符合URL的路由
app.use '/', index
app.use '/users', users
app.use '/api', api
#出错的处理
app.use (req, res, next) ->
err = new Error 'Not Found'
err.status = 404
next(err)
return
app.use (err, req, res, next) ->
res.status err.status or 500
if not config.isFirst
res.redirect '/'
else
render.error res,
title: err.message
error: err
map:[]
tree: req.tree
loginInfo:req.loginInfo
return
app.listen port
module.exports = app