RenderMessage(res,resource.invaild_parameter,req.session.items);\r
return;\r
}else if(typeof(req.body.edit) != "undefined"){\r
+ var validator = new Validator();\r
+ if(validator.Validate(req.body,config.alias))\r
+ {\r
+ RenderMessage(validator.Message,req.session.items);\r
+ return;\r
+ }\r
async.waterfall([\r
function(cb){\r
if(req.body.updatepassword == false)\r
function registor_postproc(req, res)\r
{\r
if(typeof(req.body.registor) != "undefined"){\r
+ var validator = new Validator();\r
+ if(validator.Validate(req.body,config.alias))\r
+ {\r
+ RenderMessage(res,validator.Message,req.session.items);\r
+ return;\r
+ }\r
async.waterfall([\r
function(cb){\r
collection.AddAsync(req.body,cb);\r
this.AuthAsync = function(name,password,cb){\r
async.waterfall([\r
function(next){\r
- pool.query("SELECT * FROM list WHERE name_hash = ? and name = ?",[murmurhash.v3(name),name],next);\r
+ pool.query("SELECT password FROM list WHERE name_hash = ? and name = ?",[murmurhash.v3(name),name],next);\r
},\r
function(result,next){\r
if(result[0].password == md5_hex(password))\r
{\r
var item = {\r
name_hash:murmurhash.v3(data.name),\r
- name:data.name,\r
- password:md5_hex(data.password),\r
lastmodified:new Date(),\r
};\r
for(var key in config.alias)\r
- item[key] = data[key];\r
+ {\r
+ if(key == "password")\r
+ item[key] = md5_hex(data[key]);\r
+ else\r
+ item[key] = data[key];\r
+ }\r
return item;\r
}\r
}\r
\r
+//\r
+// Validatorクラス\r
+//\r
+function Validator()\r
+{\r
+ //\r
+ // バリテーションを行う。\r
+ // エラーがあった場合は真。そうでない場合は偽を返す\r
+ //\r
+ // @body バリテーションの対象となる連想配列\r
+ // @alias バリテーションを行う要素のリスト\r
+ this.Validate = function(body,alias){\r
+ var result = false;\r
+ this.Message = "";\r
+ for(var key in alias)\r
+ {\r
+ var message = IsValidate(body[key],alias[key].type,alias[key].rule);\r
+ if(message != null)\r
+ {\r
+ this.Message += "<p>" + alias[key].name + ":" + message + "</p>\n";\r
+ result = true;\r
+ }\r
+ }\r
+ return result;\r
+ }\r
+ // バリテーション時にエラーがあった場合、メッセージが記録される\r
+ this.Message = "";\r
+ function IsValidate(data,type,rule){\r
+ if(typeof(data) == "undefined")\r
+ throw "data is undefined";\r
+ if(typeof(type) == "undefined")\r
+ throw "type is undefined";\r
+\r
+ var result = null;\r
+\r
+ if(typeof(rule) != "undefined" && typeof(rule.isnotempty) != "undefined"\r
+ && rule.isnotempty && data == "")\r
+ return resource.is_not_empty;\r
+\r
+ switch(type)\r
+ {\r
+ case "text":\r
+ case "textarea":\r
+ case "password":\r
+ if(typeof(data) != "string")\r
+ result = resource.is_not_string;\r
+ break;\r
+ case "number":\r
+ if(data.match(/[^0-9]/g))\r
+ result = resource.is_not_number;\r
+ break;\r
+ case "mail":\r
+ if(data != "" && !data.match(/^[A-Za-z0-9]+[\w\-\+]+@[\w\.-]+\.\w{2,}$/))\r
+ result = resource.is_not_mail;\r
+ break;\r
+ }\r
+\r
+ if(typeof(rule) == "function")\r
+ result = rule(data,type);\r
+\r
+ return result;\r
+ }\r
+}
\ No newline at end of file