forked from cnodejs/nodeclub
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathroutes.js
137 lines (118 loc) · 4.82 KB
/
routes.js
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
/*!
* nodeclub - route.js
* Copyright(c) 2012 fengmk2 <[email protected]>
* MIT Licensed
*/
/**
* Module dependencies.
*/
var sign = require('./controllers/sign');
var site = require('./controllers/site');
var user = require('./controllers/user');
var message = require('./controllers/message');
var tag = require('./controllers/tag');
var topic = require('./controllers/topic');
var reply = require('./controllers/reply');
var rss = require('./controllers/rss');
var upload = require('./controllers/upload');
var assets = require('./controllers/static');
var tools = require('./controllers/tools');
var auth = require('./middlewares/auth');
var limit = require('./middlewares/limit');
var status = require('./controllers/status');
var github = require('./controllers/github');
var passport = require('passport');
var configMiddleware = require('./middlewares/conf');
var config = require('./config');
module.exports = function (app) {
// home page
app.get('/', site.index);
// sign up, login, logout
if (config.allow_sign_up) {
app.get('/signup', sign.showSignup);
app.post('/signup', sign.signup);
} else {
app.get('/signup', configMiddleware.github, passport.authenticate('github'));
}
app.post('/signout', sign.signout);
app.get('/signin', sign.showLogin);
app.post('/signin', sign.login);
app.get('/active_account', sign.active_account);
// password
app.get('/search_pass', sign.showSearchPass);
app.post('/search_pass', sign.updateSearchPass);
app.get('/reset_pass', sign.reset_pass);
app.post('/reset_pass', sign.update_pass);
// user
app.get('/user/:name', user.index);
app.get('/setting', user.showSetting);
app.post('/setting', user.setting);
app.get('/stars', user.show_stars);
app.get('/users/top100', user.top100);
app.get('/user/:name/tags', user.get_collect_tags);
app.get('/user/:name/collections', user.get_collect_topics);
app.get('/my/messages', message.index);
app.get('/user/:name/follower', user.get_followers);
app.get('/user/:name/following', user.get_followings);
app.get('/user/:name/topics', user.list_topics);
app.get('/user/:name/replies', user.list_replies);
app.post('/user/follow', auth.userRequired, user.follow);
app.post('/user/un_follow', user.un_follow);
app.post('/user/set_star', user.toggle_star);
app.post('/user/cancel_star', user.toggle_star);
app.post('/user/:name/block', auth.adminRequired, user.block);
// message
app.post('/messages/mark_read', message.mark_read);
app.post('/messages/mark_all_read', message.mark_all_read);
// tag
app.get('/tags/edit', tag.edit_tags);
app.get('/tag/:name', tag.list_topic);
// 编辑界面
app.get('/tag/:name/edit', auth.adminRequired, tag.edit);
app.get('/tag/:name/delete', auth.adminRequired, tag.delete);
app.post('/tag/add', auth.adminRequired, tag.add);
// 更新
app.post('/tag/:id', auth.adminRequired, tag.update);
app.post('/tag/collect', tag.collect);
app.post('/tag/de_collect', auth.userRequired, tag.de_collect);
// topic
// 新建文章界面
app.get('/topic/create', auth.signinRequired, topic.create);
app.get('/topic/:tid', topic.index);
app.get('/topic/:tid/top/:is_top?', topic.top);
app.get('/topic/:tid/edit', topic.showEdit);
// Po-Ying Chen <[email protected]>: 當 "非" 作者的使用者在留言的地方貼上一個網址為
// http://[domain name]/topic/[topic id]/delete 的圖片之後,只要作者一看到圖片,文章就會被刪除了,
// 可能需要將刪除的方法改成 post 來避免此問題
app.post('/topic/:tid/delete', topic.delete);
// 保存新建的文章
// TODO: 如果创建文章的过程太长,导致session过期,界面的内容会丢失
// FIXME: 采用前端来判断,不通过跳转的形式来解决
app.post('/topic/create', auth.signinRequired, limit.postInterval, topic.put);
app.post('/topic/:tid/edit', topic.update);
app.post('/topic/collect', auth.userRequired, topic.collect);
app.post('/topic/de_collect', auth.userRequired, topic.de_collect);
// reply
// 回复
app.post('/:topic_id/reply', auth.userRequired, limit.postInterval, reply.add);
app.post('/:topic_id/reply2', auth.userRequired, limit.postInterval, reply.add_reply2);
app.post('/reply/:reply_id/delete', reply.delete);
// upload
app.post('/upload/image', upload.uploadImage);
// tools
app.get('/site_tools', tools.run_site_tools);
// static
app.get('/about', assets.about);
app.get('/faq', assets.faq);
//rss
app.get('/rss', rss.index);
// site status
app.get('/status', status.status);
// github oauth
app.get('/auth/github', configMiddleware.github, passport.authenticate('github'));
app.get('/auth/github/callback',
passport.authenticate('github', { failureRedirect: '/signin' }),
github.callback);
app.get('/auth/github/new', github.new);
app.post('/auth/github/create', github.create);
};