forked from cnodejs/nodeclub
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathweb_router.js
More file actions
180 lines (153 loc) · 7.5 KB
/
Copy pathweb_router.js
File metadata and controls
180 lines (153 loc) · 7.5 KB
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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
/*!
* nodeclub - route.js
* Copyright(c) 2012 fengmk2 <fengmk2@gmail.com>
* MIT Licensed
*/
/**
* Module dependencies.
*/
var express = require('express');
var sign = require('./controllers/sign');
var site = require('./controllers/site');
var user = require('./controllers/user');
var message = require('./controllers/message');
var topic = require('./controllers/topic');
var reply = require('./controllers/reply');
var rss = require('./controllers/rss');
var staticController = require('./controllers/static');
var auth = require('./middlewares/auth');
var limit = require('./middlewares/limit');
var github = require('./controllers/github');
var search = require('./controllers/search');
var passport = require('passport')
,WeixinStrategy = require('passport-weixin');
var configMiddleware = require('./middlewares/conf');
var config = require('./config');
var router = express.Router();
// home page
router.get('/', site.index);
// sitemap
router.get('/sitemap.xml', site.sitemap);
// mobile app download
router.get('/app/download', site.appDownload);
// weapp authorize
router.get('/aqyttVbDNP.txt', site.weapp);
router.get('/OM4M2gbtwT.txt', site.weapp2);
// sign controller
if (config.allow_sign_up) {
router.get('/signup', sign.showSignup); // 跳转到注册页面
router.post('/signup', sign.signup); // 提交注册信息
} else {
// 进行github验证
router.get('/signup', function (req, res, next) {
return res.redirect('/auth/github')
});
}
router.post('/signout', sign.signout); // 登出
router.get('/signin', sign.showLogin); // 进入登录页面
router.post('/signin', sign.login); // 登录校验
router.get('/active_account', sign.activeAccount); //帐号激活
router.get('/search_pass', sign.showSearchPass); // 找回密码页面
router.post('/search_pass', sign.updateSearchPass); // 更新密码
router.get('/reset_pass', sign.resetPass); // 进入重置密码页面
router.post('/reset_pass', sign.updatePass); // 更新密码
// user controller
router.get('/user/:name', user.index); // 用户个人主页
router.get('/setting', auth.userRequired, user.showSetting); // 用户个人设置页
router.post('/setting', auth.userRequired, user.setting); // 提交个人信息设置
router.get('/stars', user.listStars); // 显示所有达人列表页
router.get('/users/top100', user.top100); // 显示积分前一百用户页
router.get('/user/:name/collections', user.listCollectedTopics); // 用户收藏的所有话题页
router.get('/user/:name/topics', user.listTopics); // 用户发布的所有话题页
router.get('/user/:name/replies', user.listReplies); // 用户参与的所有回复页
router.post('/user/set_star', auth.adminRequired, user.toggleStar); // 把某用户设为达人
router.post('/user/cancel_star', auth.adminRequired, user.toggleStar); // 取消某用户的达人身份
router.post('/user/:name/block', auth.adminRequired, user.block); // 禁言某用户
router.post('/user/:name/delete_all', auth.adminRequired, user.deleteAll); // 删除某用户所有发言
router.post('/user/refresh_token', auth.userRequired, user.refreshToken); // 刷新用户token
// message controler
router.get('/my/messages', auth.userRequired, message.index); // 用户个人的所有消息页
// topic
// 新建文章界面
router.get('/topic/create', auth.userRequired, topic.create);
router.get('/topic/:tid', topic.index); // 显示某个话题
router.post('/topic/:tid/top', auth.adminRequired, topic.top); // 将某话题置顶
router.post('/topic/:tid/good', auth.adminRequired, topic.good); // 将某话题加精
router.get('/topic/:tid/edit', auth.userRequired, topic.showEdit); // 编辑某话题
router.post('/topic/:tid/lock', auth.adminRequired, topic.lock); // 锁定主题,不能再回复
router.post('/topic/:tid/delete', auth.userRequired, topic.delete);
// 保存新建的文章
router.post('/topic/create', auth.userRequired, limit.peruserperday('create_topic', config.create_post_per_day, {showJson: false}), topic.put);
router.post('/topic/:tid/edit', auth.userRequired, topic.update);
router.post('/topic/collect', auth.userRequired, topic.collect); // 关注某话题
router.post('/topic/de_collect', auth.userRequired, topic.de_collect); // 取消关注某话题
// reply controller
router.post('/:topic_id/reply', auth.userRequired, limit.peruserperday('create_reply', config.create_reply_per_day, {showJson: false}), reply.add); // 提交一级回复
router.get('/reply/:reply_id/edit', auth.userRequired, reply.showEdit); // 修改自己的评论页
router.post('/reply/:reply_id/edit', auth.userRequired, reply.update); // 修改某评论
router.post('/reply/:reply_id/delete', auth.userRequired, reply.delete); // 删除某评论
router.post('/reply/:reply_id/up', auth.userRequired, reply.up); // 为评论点赞
router.post('/upload', auth.userRequired, topic.upload); //上传图片
// static
router.get('/about', staticController.about);
router.get('/faq', staticController.faq);
router.get('/getstart', staticController.getstart);
router.get('/robots.txt', staticController.robots);
router.get('/api', staticController.api);
//rss
router.get('/rss', rss.index);
// github oauth
router.get('/auth/github', configMiddleware.github, passport.authenticate('github'));
router.get('/auth/github/callback',
passport.authenticate('github', { failureRedirect: '/signin' }),
github.callback);
router.get('/auth/github/new', github.new);
router.post('/auth/github/create', limit.peripperday('create_user_per_ip', config.create_user_per_ip, {showJson: false}), github.create);
//扫码登录
//微信官网文档:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419316505&token=&lang=zh_CN
passport.use('loginByWeixin',new WeixinStrategy({
clientID: 'wx522401779da1c001'
, clientSecret: '6b49e80e0586b76aacd23c9036dc05cc'
, callbackURL: 'https://bbs.zuqiuxunlian.com/auth/weixin/callback'
, requireState: false
, scope: 'snsapi_login'
}, function(accessToken, refreshToken, profile, done){
done(null, profile);
}));
//微信客户端登录
//微信官网文档:http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html
passport.use('loginByWeixinClient',new WeixinStrategy({
clientID: 'wx522401779da1c001'
, clientSecret: '6b49e80e0586b76aacd23c9036dc05cc'
, callbackURL: 'https://bbs.zuqiuxunlian.com/auth/weixin/callback'
, requireState: false
, authorizationURL: 'https://open.weixin.qq.com/connect/oauth2/authorize' //[公众平台-网页授权获取用户基本信息]的授权URL 不同于[开放平台-网站应用微信登录]的授权URL
, scope: 'snsapi_userinfo' //[公众平台-网页授权获取用户基本信息]的应用授权作用域 不同于[开放平台-网站应用微信登录]的授权URL
}, function(accessToken, refreshToken, profile, done){
done(null, profile);
}));
// weixin oauth
//在PC端通过扫描登录,使用/auth/loginByWeixin
router.get("/auth/weixin",
passport.authenticate('loginByWeixin', {
successRedirect: '/test/hello',
failureRedirect: '/login'
})
);
router.get("/auth/weixin/callback", function(req, res) {
res.send('hello world');
});
// 在微信客户端登录,使用/auth/loginByWeixinClient
router.get("/auth/weixin/client",
passport.authenticate('loginByWeixinClient', {
successRedirect: '/test/hello',
failureRedirect: '/login'
})
);
router.get('/search', search.index);
if (!config.debug) { // 这个兼容破坏了不少测试
router.get('/:name', function (req, res) {
res.redirect('/user/' + req.params.name)
})
}
module.exports = router;