1 var config = require("./configure.js");
\r
2 var resource = require("./resources.js");
\r
3 var util = require("util");
\r
4 var async = require("async");
\r
5 var security = require("./security.js");
\r
6 var ejs = require("ejs");
\r
7 require("date-utils");
\r
9 var collection = new ProfileCollection();
\r
11 module.exports = function(app){
\r
12 app.get("/profile",list_proc);
\r
13 app.get("/profile/admin",admin_proc);
\r
14 app.post("/profile/admin",admin_postproc);
\r
15 app.get("/profile/detail",detail_proc);
\r
16 app.post("/profile/detail",detail_postproc);
\r
17 app.post("/profile/edit",edit_postproc);
\r
18 app.get("/profile/registor",registor_proc);
\r
19 app.post("/profile/registor",registor_postproc);
\r
22 function admin_proc(req, res)
\r
24 var info = new security.SessionInfomation(true);
\r
25 req.session.items = info;
\r
28 PrepaerListAsync(req,callback);
\r
30 ],function(err,result){
\r
32 RenderMessage(res,err,info);
\r
34 result.token = info.token;
\r
35 res.render("profile/admin",result);
\r
40 function admin_postproc(req,res)
\r
42 if(req.session.items.token != req.body.token){
\r
43 RenderMessage(res,resource.invaild_parameter,req.session.items);
\r
48 if(typeof(req.body.removeall) != "undefined")
\r
49 collection.ClearAsync(cb);
\r
50 if(typeof(req.body.remove) != "undefined")
\r
51 collection.RemoveRangeAsync(req.body.names,cb);
\r
53 ],function(err,result){
\r
55 RenderMessage(res,err,req.session.items);
\r
57 RenderMessage(res,resource.success_remove,req.session.items);
\r
61 function list_proc(req, res)
\r
63 if(typeof(req.session.items) != "undefined")
\r
64 req.session.items.admin = false;
\r
67 PrepaerListAsync(req,cb);
\r
69 ],function(err,result){
\r
71 RenderMessage(res,err,req.session.items);
\r
73 res.render("profile/list",result);
\r
77 function PrepaerListAsync(req,callback)
\r
79 var limit = config.db_limit;
\r
82 if(typeof(req.query.start) != "undefined")
\r
83 start = parseInt(req.query.start);
\r
84 if(typeof(req.query.limit) != "undefined")
\r
85 limit = parseInt(req.query.limit);
\r
89 if(typeof(req.query.search) != "undefined")
\r
91 parttern = req.query.search;
\r
92 collection.FindByNameAsync(parttern,start,limit,cb);
\r
94 collection.ToArrayAsync(start,limit,cb);
\r
97 ],function(err,result){
\r
101 var next = start + limit;
\r
102 var prev = start - limit;
\r
105 for(var i = 0; i < result.length; i++)
\r
106 result[i].lastmodified = result[i].lastmodified.toFormat("YYYY/MM/DD HH:MI:SS");
\r
107 callback(null,{list:result,search:parttern,next:next,prev:prev,limit:limit});
\r
112 function detail_proc(req, res)
\r
114 if(typeof(req.query.name) == "undefined")
\r
116 RenderMessage(res,resource.invaild_parameter,req.session.items);
\r
120 if(typeof(req.session.items) == "undefined")
\r
121 req.session.items = new security.SessionInfomation(false);
\r
125 collection.GetAsync(req.query.name,cb);
\r
127 ],function(err,result){
\r
129 RenderMessage(res,err,req.session.items);
\r
130 else if(result.length == 0)
\r
131 RenderMessage(res,resource.notfound_name,req.session.items);
\r
133 res.render("profile/detail",{list:result,token:req.session.items.token,admin:req.session.items.admin});
\r
138 function detail_postproc(req, res)
\r
140 if(req.session.items.token != req.body.token){
\r
141 RenderMessage(res,resource.invaild_parameter,req.session.items);
\r
144 if(typeof(req.body.remove) != "undefined"){
\r
147 if(typeof(req.session.items) != "undefined" && req.session.items.admin)
\r
150 collection.AuthAsync(req.body.name,req.body.password,cb);
\r
152 function(result,cb){
\r
154 collection.RemoveAsync(req.body.name,cb);
\r
158 ],function(err,result){
\r
160 RenderMessage(res,err,req.session.items);
\r
161 else if(result == null)
\r
162 RenderMessage(res,resource.unmatch_password,req.session.items);
\r
164 RenderMessage(res,resource.success_remove,req.session.items);
\r
166 }else if(typeof(req.body.edit) != "undefined"){
\r
169 if(typeof(req.session.items) != "undefined" && req.session.items.admin)
\r
172 collection.AuthAsync(req.body.name,req.body.password,cb);
\r
174 function(result,cb){
\r
176 collection.GetAsync(req.body.name,cb);
\r
180 ],function(err,result){
\r
182 RenderMessage(res,err,req.session.items);
\r
183 }else if(result != null){
\r
184 res.render("profile/edit",{list:result,token:req.body.token});
\r
186 RenderMessage(res,resource.unmatch_password,req.session.items);
\r
190 RenderMessage(res,resource.invaild_parameter,req.session.items);
\r
194 function edit_postproc(req, res)
\r
196 if(req.session.items.token != req.body.token){
\r
197 RenderMessage(res,resource.invaild_parameter,req.session.items);
\r
200 if(typeof(req.body.name) == "undefined")
\r
202 RenderMessage(res,resource.invaild_parameter,req.session.items);
\r
204 }else if(typeof(req.body.edit) != "undefined"){
\r
207 collection.UpdatAsync(req.body.name,req.body,cb);
\r
209 ],function(err,result){
\r
211 RenderMessage(res,err,req.session.items);
\r
213 RenderMessage(res,resource.success_edit,req.session.items);
\r
216 RenderMessage(res,resource.invaild_parameter,req.session.items);
\r
220 function registor_postproc(req, res)
\r
222 if(req.session.items.token != req.body.token){
\r
223 RenderMessage(res,resource.invaild_parameter,req.session.items);
\r
226 if(typeof(req.body.registor) != "undefined"){
\r
229 collection.AddAsync(req.body,cb);
\r
231 ],function(err,result){
\r
233 RenderMessage(res,err,req.session.items);
\r
235 RenderMessage(res,resource.success_registor,req.session.items);
\r
238 RenderMessage(resource.invaild_parameter,req.session.items);
\r
242 function registor_proc(req, res)
\r
244 if(typeof(req.session.items) == "undefined")
\r
245 req.session.items = new security.SessionInfomation(false);
\r
247 res.render("profile/registor",{token:req.session.items.token});
\r
250 function RenderMessage(res,msg,info)
\r
252 if(typeof(info) == "undefined")
\r
253 res.render("profile/message",{message:msg});
\r
255 res.render("profile/message",{message:msg,admin:info.admin});
\r
259 // ProfileCollectionクラス
\r
261 function ProfileCollection()
\r
263 var MySQLPool = new require("./mysql_pool.js");
\r
264 var pool = new MySQLPool({
\r
265 host : config.db_host,
\r
266 user : config.db_user,
\r
267 password : config.db_password,
\r
268 port : config.db_port,
\r
269 database : "webchat",
\r
271 this.AuthAsync = function(name,password,cb){
\r
274 pool.query("SELECT * FROM list WHERE name = ?",[name],next);
\r
276 function(result,next){
\r
277 if(result[0].password == password)
\r
284 this.GetAsync = function(name,cb){
\r
285 pool.query("SELECT * FROM list WHERE name = ?",[name],cb);
\r
287 this.AddAsync = function(data,cb){
\r
291 gender:data.gender,
\r
292 height:data.height,
\r
293 weight:data.weight,
\r
295 password:data.password,
\r
296 lastmodified:new Date(),
\r
299 pool.query("INSERT INTO list SET ?",[item],cb);
\r
301 this.UpdatAsync = function(name,data,cb){
\r
305 gender:data.gender,
\r
306 height:data.height,
\r
307 weight:data.weight,
\r
309 password:data.password,
\r
310 lastmodified:new Date(),
\r
313 pool.query("UPDATE list SET ? WHERE name = ?",[item,name],cb);
\r
315 this.ClearAsync = function(cb){
\r
316 pool.query("TRUNCATE TABLE list",null,cb);
\r
318 this.RemoveRangeAsync = function(names,cb){
\r
319 pool.query("DELETE FROM list WHERE name IN (?)",[names],cb);
\r
321 this.RemoveAsync = function(name,cb){
\r
322 pool.query("DELETE FROM list WHERE name = ?",[name],cb);
\r
324 this.FindByNameAsync = function(pattern,start,count,cb){
\r
325 pool.query("SELECT * FROM list WHERE name LIKE ? LIMIT ?,?",[pattern+"%",start,count],cb);
\r
327 this.ToArrayAsync = function(start,count,cb){
\r
328 pool.query("SELECT name,age,lastmodified FROM list LIMIT ?,?",[start,count],cb);
\r