2 $db_password = "user";
\r
5 $unmatch_password = "パスワードが一致しません";
\r
6 $invaild_parameter = "パラメーターが正しくありません";
\r
7 $success_registor = "登録に成功しました";
\r
8 $success_remove = "削除に成功しました";
\r
9 $success_edit = "編集に成功しました";
\r
10 $notfound_name = "該当名が存在しません";
\r
12 var util = require("util");
\r
13 var async = require("async");
\r
14 var security = require("./security.js");
\r
15 var ejs = require("ejs");
\r
16 require("date-utils");
\r
18 var collection = new ProfileCollection();
\r
20 module.exports = function(app){
\r
21 app.get("/profile",list_proc);
\r
22 app.get("/profile/admin",admin_proc);
\r
23 app.post("/profile/admin",admin_postproc);
\r
24 app.get("/profile/detail",detail_proc);
\r
25 app.post("/profile/detail",detail_postproc);
\r
26 app.post("/profile/edit",edit_postproc);
\r
27 app.get("/profile/registor",registor_proc);
\r
28 app.post("/profile/registor",registor_postproc);
\r
31 function admin_proc(req, res)
\r
33 var info = new security.SessionInfomation(true);
\r
34 req.session.items = info;
\r
37 PrepaerListAsync(req,callback);
\r
39 ],function(err,result){
\r
41 RenderMessage(res,err,info);
\r
43 result.token = info.token;
\r
44 res.render("profile\\admin",result);
\r
49 function admin_postproc(req,res)
\r
51 if(req.session.items.token != req.body.token){
\r
52 RenderMessage(res,$invaild_parameter,req.session.items);
\r
57 if(typeof(req.body.removeall) != "undefined")
\r
58 collection.ClearAsync(cb);
\r
59 if(typeof(req.body.remove) != "undefined")
\r
60 collection.RemoveRangeAsync(req.body.names,cb);
\r
62 ],function(err,result){
\r
64 RenderMessage(res,err,req.session.items);
\r
66 RenderMessage(res,$success_remove,req.session.items);
\r
70 function list_proc(req, res)
\r
72 if(typeof(req.session.items) != "undefined")
\r
73 req.session.items.admin = false;
\r
76 PrepaerListAsync(req,cb);
\r
78 ],function(err,result){
\r
80 RenderMessage(res,err,req.session.items);
\r
82 res.render("profile\\list",result);
\r
86 function PrepaerListAsync(req,callback)
\r
88 var limit = $db_limit;
\r
91 if(typeof(req.query.start) != "undefined")
\r
92 start = parseInt(req.query.start);
\r
93 if(typeof(req.query.limit) != "undefined")
\r
94 limit = parseInt(req.query.limit);
\r
98 if(typeof(req.query.search) != "undefined")
\r
100 parttern = req.query.search;
\r
101 collection.FindByNameAsync(parttern,start,limit,cb);
\r
103 collection.ToArrayAsync(start,limit,cb);
\r
106 ],function(err,result){
\r
110 var next = start + limit;
\r
111 var prev = start - limit;
\r
114 for(var i = 0; i < result.length; i++)
\r
115 result[i].lastmodified = result[i].lastmodified.toFormat("YYYY/MM/DD HH:MI:SS");
\r
116 callback(null,{list:result,search:parttern,next:next,prev:prev,limit:limit});
\r
121 function detail_proc(req, res)
\r
123 if(typeof(req.query.name) == "undefined")
\r
125 RenderMessage(res,$invaild_parameter,req.session.items);
\r
129 if(typeof(req.session.items) == "undefined")
\r
130 req.session.items = new security.SessionInfomation(false);
\r
134 collection.GetAsync(req.query.name,cb);
\r
136 ],function(err,result){
\r
138 RenderMessage(res,err,req.session.items);
\r
139 else if(result.length == 0)
\r
140 RenderMessage(res,$notfound_name,req.session.items);
\r
142 res.render("profile\\detail",{list:result,token:req.session.items.token});
\r
147 function detail_postproc(req, res)
\r
149 if(req.session.items.token != req.body.token){
\r
150 RenderMessage(res,$invaild_parameter,req.session.items);
\r
153 if(typeof(req.body.remove) != "undefined"){
\r
156 collection.AuthAsync(req.body.name,req.body.password,cb);
\r
158 function(result,cb){
\r
160 collection.RemoveAsync(req.body.name,cb);
\r
164 ],function(err,result){
\r
166 RenderMessage(res,err,req.session.items);
\r
167 else if(result == null)
\r
168 RenderMessage(res,$unmatch_password,req.session.items);
\r
170 RenderMessage(res,$success_remove,req.session.items);
\r
172 }else if(typeof(req.body.edit) != "undefined"){
\r
175 collection.AuthAsync(req.body.name,req.body.password,cb);
\r
177 function(result,cb){
\r
179 collection.GetAsync(req.body.name,cb);
\r
183 ],function(err,result){
\r
185 RenderMessage(res,err,req.session.items);
\r
186 }else if(result != null){
\r
187 res.render("profile\\edit",{list:result,token:req.body.token});
\r
189 RenderMessage(res,$unmatch_password,req.session.items);
\r
193 RenderMessage(res,$invaild_parameter,req.session.items);
\r
197 function edit_postproc(req, res)
\r
199 if(req.session.items.token != req.body.token){
\r
200 RenderMessage(res,$invaild_parameter,req.session.items);
\r
203 if(typeof(req.body.name) == "undefined")
\r
205 RenderMessage(res,$invaild_parameter,req.session.items);
\r
207 }else if(typeof(req.body.edit) != "undefined"){
\r
210 collection.UpdatAsync(req.body.name,req.body,cb);
\r
212 ],function(err,result){
\r
214 RenderMessage(res,err,req.session.items);
\r
216 RenderMessage(res,$success_edit,req.session.items);
\r
219 RenderMessage(res,$invaild_parameter,req.session.items);
\r
223 function registor_postproc(req, res)
\r
225 if(req.session.items.token != req.body.token){
\r
226 RenderMessage(res,$invaild_parameter,req.session.items);
\r
229 if(typeof(req.body.registor) != "undefined"){
\r
232 collection.AddAsync(req.body,cb);
\r
234 ],function(err,result){
\r
236 RenderMessage(res,err,req.session.items);
\r
238 RenderMessage(res,$success_registor,req.session.items);
\r
241 RenderMessage($invaild_parameter,req.session.items);
\r
245 function registor_proc(req, res)
\r
247 if(typeof(req.session.items) == "undefined")
\r
248 req.session.items = new security.SessionInfomation(false);
\r
250 res.render("profile\\registor",{token:req.session.items.token});
\r
253 function RenderMessage(res,msg,info)
\r
255 if(typeof(info) == "undefined")
\r
256 res.render("profile\\message",{message:msg});
\r
258 res.render("profile\\message",{message:msg,admin:info.admin});
\r
262 // ProfileCollectionクラス
\r
264 function ProfileCollection()
\r
266 var pool = new MySQLPool();
\r
267 this.AuthAsync = function(name,password,cb){
\r
269 function(callback){
\r
270 pool.acquire(callback);
\r
272 function(client,callback){
\r
273 client.query("SELECT * FROM list WHERE name = ?",[name],function(err,result){
\r
274 callback(err,result,client);
\r
277 function(result,client,callback){
\r
278 pool.release(client);
\r
279 if(result[0].password == password)
\r
280 callback(null,true);
\r
282 callback(null,false);
\r
286 this.GetAsync = function(name,cb){
\r
288 function(callback){
\r
289 pool.acquire(callback);
\r
291 function(client,callback){
\r
292 client.query("SELECT * FROM list WHERE name = ?",[name],function(err,result){
\r
293 callback(err,result,client);
\r
296 function(result,client,callback){
\r
297 pool.release(client);
\r
298 callback(null,result);
\r
302 this.AddAsync = function(data,cb){
\r
306 gender:data.gender,
\r
307 height:data.height,
\r
308 weight:data.weight,
\r
310 password:data.password,
\r
311 lastmodified:new Date(),
\r
315 function(callback){
\r
316 pool.acquire(callback);
\r
318 function(client,callback){
\r
319 client.query("INSERT INTO list SET ?",[item],function(err,result){
\r
320 callback(err,result,client);
\r
323 function(result,client,callback){
\r
324 pool.release(client);
\r
325 callback(null,result);
\r
329 this.UpdatAsync = function(name,data,cb){
\r
333 gender:data.gender,
\r
334 height:data.height,
\r
335 weight:data.weight,
\r
337 password:data.password,
\r
338 lastmodified:new Date(),
\r
342 function(callback){
\r
343 pool.acquire(callback);
\r
345 function(client,callback){
\r
346 client.query("UPDATE list SET ? WHERE name = ?",[item,name],function(err,result){
\r
347 callback(err,result,client);
\r
350 function(result,client,callback){
\r
351 pool.release(client);
\r
352 callback(null,result);
\r
356 this.ClearAsync = function(cb){
\r
358 function(callback){
\r
359 pool.acquire(callback);
\r
361 function(client,callback){
\r
362 client.query("TRUNCATE TABLE list",function(err,result){
\r
363 callback(err,result,client);
\r
366 function(result,client,callback){
\r
367 pool.release(client);
\r
368 callback(null,result);
\r
372 this.RemoveRangeAsync = function(names,cb){
\r
374 function(callback){
\r
375 pool.acquire(callback);
\r
377 function(client,callback){
\r
378 var query = client.query("DELETE FROM list WHERE name IN (?)",[names],function(err,result){
\r
379 callback(err,result,client);
\r
382 function(result,client,callback){
\r
383 pool.release(client);
\r
384 callback(null,result);
\r
388 this.RemoveAsync = function(name,cb){
\r
390 function(callback){
\r
391 pool.acquire(callback);
\r
393 function(client,callback){
\r
394 var query = client.query("DELETE FROM list WHERE name = ?",[name],function(err,result){
\r
395 callback(err,result,client);
\r
398 function(result,client,callback){
\r
399 pool.release(client);
\r
400 callback(null,result);
\r
404 this.FindByNameAsync = function(pattern,start,count,cb){
\r
406 function(callback){
\r
407 pool.acquire(callback);
\r
409 function(client,callback){
\r
410 client.query("SELECT * FROM list WHERE name LIKE ? LIMIT ?,?",[pattern+"%",start,count],function(err,result){
\r
411 callback(err,result,client);
\r
414 function(result,client,callback){
\r
415 pool.release(client);
\r
416 callback(null,result);
\r
420 this.ToArrayAsync = function(start,count,cb){
\r
422 function(callback){
\r
423 pool.acquire(callback);
\r
425 function(client,callback){
\r
426 client.query("SELECT * FROM list LIMIT ?,?",[start,count],function(err,result){
\r
427 callback(err,result,client);
\r
430 function(result,client,callback){
\r
431 pool.release(client);
\r
432 callback(null,result);
\r
438 function MySQLPool()
\r
440 var generic_pool = require("generic-pool");
\r
441 var mysql = require("mysql");
\r
442 return generic_pool.Pool({
\r
445 create : function(cb){
\r
446 var connection = mysql.createConnection({
\r
447 host : "localhost",
\r
449 password : $db_password,
\r
450 database : "profile",
\r
452 connection.connect();
\r
453 cb(null,connection);
\r
455 destroy : function(db){
\r