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/detail",detail_proc);
\r
23 app.post("/profile/detail",detail_postproc);
\r
24 app.post("/profile/edit",edit_postproc);
\r
25 app.get("/profile/registor",registor_proc);
\r
26 app.post("/profile/registor",registor_postproc);
\r
29 function list_proc(req, res)
\r
31 var limit = $db_limit;
\r
34 if(typeof(req.query.start) != "undefined")
\r
35 start = parseInt(req.query.start);
\r
36 if(typeof(req.query.limit) != "undefined")
\r
37 limit = parseInt(req.query.limit);
\r
41 if(typeof(req.query.search) != "undefined")
\r
43 parttern = req.query.search;
\r
44 collection.FindByNameAsync(parttern,start,limit,cb);
\r
46 collection.ToArrayAsync(start,limit,cb);
\r
49 ],function(err,result){
\r
51 res.render("profile\\message",{message:err});
\r
53 var next = start + limit;
\r
54 var prev = start - limit;
\r
57 result[0].lastmodified = result[0].lastmodified.toFormat("YYYY/MM/DD HH:MI:SS");
\r
58 res.render("profile\\list",{list:result,search:parttern,next:next,prev:prev,limit:limit});
\r
63 function detail_proc(req, res)
\r
65 if(typeof(req.query.name) == "undefined")
\r
67 res.render("profile\\message",{message:$invaild_parameter});
\r
71 var info = new security.SessionInfomation(false);
\r
72 req.session.items = info;
\r
76 collection.GetAsync(req.query.name,cb);
\r
78 ],function(err,result){
\r
80 res.render("profile\\message",{message:err});
\r
81 else if(result.length == 0)
\r
82 res.render("profile\\message",{message:$notfound_name});
\r
84 res.render("profile\\detail",{list:result,token:info.token});
\r
89 function detail_postproc(req, res)
\r
91 if(req.session.items.token != req.body.token){
\r
92 res.render("profile\\message",{message:$invaild_parameter});
\r
95 if(typeof(req.body.remove) != "undefined"){
\r
98 collection.AuthAsync(req.body.name,req.body.password,cb);
\r
100 function(result,cb){
\r
102 collection.RemoveAsync(req.body.name,cb);
\r
106 ],function(err,result){
\r
108 res.render("profile\\message",{message:err});
\r
109 else if(result == null)
\r
110 res.render("profile\\message",{message:$unmatch_password});
\r
112 res.render("profile\\message",{message:$success_remove});
\r
114 }else if(typeof(req.body.edit) != "undefined"){
\r
117 collection.AuthAsync(req.body.name,req.body.password,cb);
\r
119 function(result,cb){
\r
121 collection.GetAsync(req.body.name,cb);
\r
125 ],function(err,result){
\r
127 res.render("profile\\message",{message:err});
\r
128 }else if(result != null){
\r
129 res.render("profile\\edit",{list:result,token:req.body.token});
\r
131 res.render("profile\\message",{message:$unmatch_password});
\r
135 res.render("profile\\message",{message:$invaild_parameter});
\r
139 function edit_postproc(req, res)
\r
141 if(req.session.items.token != req.body.token){
\r
142 res.render("profile\\message",{message:$invaild_parameter});
\r
145 if(typeof(req.body.name) == "undefined")
\r
147 res.render("profile\\message",{message:$invaild_parameter});
\r
149 }else if(typeof(req.body.edit) != "undefined"){
\r
152 collection.UpdatAsync(req.body.name,req.body,cb);
\r
154 ],function(err,result){
\r
156 res.render("profile\\message",{message:err});
\r
158 res.render("profile\\message",{message:$success_edit});
\r
161 res.render("profile\\message",{message:$invaild_parameter});
\r
165 function registor_postproc(req, res)
\r
167 if(req.session.items.token != req.body.token){
\r
168 res.render("profile\\message",{message:$invaild_parameter});
\r
171 if(typeof(req.body.registor) != "undefined"){
\r
174 collection.AddAsync(req.body,cb);
\r
176 ],function(err,result){
\r
178 res.render("profile\\message",{message:err});
\r
180 res.render("profile\\message",{message:$success_registor});
\r
183 res.render("profile\\message",{message:$invaild_parameter});
\r
186 function registor_proc(req, res)
\r
188 var info = new security.SessionInfomation(false);
\r
189 req.session.items = info;
\r
191 res.render("profile\\registor",{token:info.token});
\r
195 // ProfileCollectionクラス
\r
197 function ProfileCollection()
\r
199 var pool = new MySQLPool();
\r
200 this.AuthAsync = function(name,password,cb){
\r
202 function(callback){
\r
203 pool.acquire(callback);
\r
205 function(client,callback){
\r
206 client.query("SELECT * FROM list WHERE name = ?",[name],function(err,result){
\r
207 callback(err,result,client);
\r
210 function(result,client,callback){
\r
211 pool.release(client);
\r
212 if(result[0].password == password)
\r
213 callback(null,true);
\r
215 callback(null,false);
\r
219 this.GetAsync = function(name,cb){
\r
221 function(callback){
\r
222 pool.acquire(callback);
\r
224 function(client,callback){
\r
225 client.query("SELECT * FROM list WHERE name = ?",[name],function(err,result){
\r
226 callback(err,result,client);
\r
229 function(result,client,callback){
\r
230 pool.release(client);
\r
231 callback(null,result);
\r
235 this.AddAsync = function(data,cb){
\r
239 gender:data.gender,
\r
240 height:data.height,
\r
241 weight:data.weight,
\r
243 password:data.password,
\r
244 lastmodified:new Date(),
\r
248 function(callback){
\r
249 pool.acquire(callback);
\r
251 function(client,callback){
\r
252 client.query("INSERT INTO list SET ?",[item],function(err,result){
\r
253 callback(err,result,client);
\r
256 function(result,client,callback){
\r
257 pool.release(client);
\r
258 callback(null,result);
\r
262 this.UpdatAsync = function(name,data,cb){
\r
266 gender:data.gender,
\r
267 height:data.height,
\r
268 weight:data.weight,
\r
270 password:data.password,
\r
271 lastmodified:new Date(),
\r
275 function(callback){
\r
276 pool.acquire(callback);
\r
278 function(client,callback){
\r
279 client.query("UPDATE list SET ? WHERE name = ?",[item,name],function(err,result){
\r
280 callback(err,result,client);
\r
283 function(result,client,callback){
\r
284 pool.release(client);
\r
285 callback(null,result);
\r
289 this.RemoveAsync = function(name,cb){
\r
291 function(callback){
\r
292 pool.acquire(callback);
\r
294 function(client,callback){
\r
295 client.query("DELETE FROM list WHERE name = ?",[name],function(err,result){
\r
296 callback(err,result,client);
\r
299 function(result,client,callback){
\r
300 pool.release(client);
\r
301 callback(null,result);
\r
305 this.FindByNameAsync = function(pattern,start,count,cb){
\r
307 function(callback){
\r
308 pool.acquire(callback);
\r
310 function(client,callback){
\r
311 client.query("SELECT * FROM list WHERE name LIKE ? LIMIT ?,?",[pattern+"%",start,count],function(err,result){
\r
312 callback(err,result,client);
\r
315 function(result,client,callback){
\r
316 pool.release(client);
\r
317 callback(null,result);
\r
321 this.ToArrayAsync = function(start,count,cb){
\r
323 function(callback){
\r
324 pool.acquire(callback);
\r
326 function(client,callback){
\r
327 client.query("SELECT * FROM list LIMIT ?,?",[start,count],function(err,result){
\r
328 callback(err,result,client);
\r
331 function(result,client,callback){
\r
332 pool.release(client);
\r
333 callback(null,result);
\r
339 function MySQLPool()
\r
341 var generic_pool = require("generic-pool");
\r
342 var mysql = require("mysql");
\r
343 return generic_pool.Pool({
\r
346 create : function(cb){
\r
347 var connection = mysql.createConnection({
\r
348 host : "localhost",
\r
350 password : $db_password,
\r
351 database : "profile",
\r
353 connection.connect();
\r
354 cb(null,connection);
\r
356 destroy : function(db){
\r