return;\r
}else if(typeof(req.body.edit) != "undefined"){\r
var validator = new Validator();\r
- if(validator.Validate(req.body,config.alias))\r
+ var result = validator.Validate(req.body,config.alias,true);\r
+ if(result.length > 0)\r
{\r
- RenderMessage(validator.Message,req.session.items);\r
+ RenderMessage(res,result,req.session.items);\r
return;\r
}\r
async.waterfall([\r
function(cb){\r
- if(req.body.updatepassword == false)\r
- collection.UpdatAsync(req.body.name,req.body,null,cb);\r
- else\r
- collection.UpdatAsync(req.body.name,req.body,req.body.password,cb);\r
+ collection.UpdatAsync(req.body.name,req.body,cb);\r
},\r
],function(err,result){\r
if(err != null)\r
{\r
if(typeof(req.body.registor) != "undefined"){\r
var validator = new Validator();\r
- if(validator.Validate(req.body,config.alias))\r
+ var result = validator.Validate(req.body,config.alias,false);\r
+ if(result.length > 0)\r
{\r
- RenderMessage(res,validator.Message,req.session.items);\r
+ RenderMessage(res,result,req.session.items);\r
return;\r
}\r
async.waterfall([\r
\r
function RenderMessage(res,msg,info)\r
{\r
+ if(typeof(msg) == "string")\r
+ msg = new Array(msg);\r
if(typeof(info) == "undefined" || typeof(info.admin) == "undefined")\r
res.render("profile/message",{message:msg,admin:false});\r
else\r
user : config.db_user,\r
password : config.db_password,\r
port : config.db_port,\r
- database : "webchat",\r
+ database : config.db_name,\r
});\r
this.AuthAsync = function(name,password,cb){\r
async.waterfall([\r
function(next){\r
- pool.query("SELECT password FROM list WHERE name_hash = ? and name = ?",[murmurhash.v3(name),name],next);\r
+ pool.query("SELECT password FROM profilelist WHERE name_hash = ? and name = ?",[murmurhash.v3(name),name],next);\r
},\r
function(result,next){\r
if(result[0].password == md5_hex(password))\r
],cb);\r
}\r
this.GetAsync = function(name,cb){\r
- pool.query("SELECT * FROM list WHERE name_hash = ? and name = ?",[murmurhash.v3(name),name],cb);\r
+ pool.query("SELECT * FROM profilelist WHERE name_hash = ? and name = ?",[murmurhash.v3(name),name],cb);\r
}\r
this.AddAsync = function(data,cb){\r
var item = GetItem(data);;\r
- pool.query("INSERT INTO list SET ?",[item],cb);\r
+ pool.query("INSERT INTO profilelist SET ?",[item],cb);\r
}\r
- this.UpdatAsync = function(name,data,newpassword,cb){\r
+ this.UpdatAsync = function(name,data,cb){\r
var item = GetItem(data);\r
- if(newpassword != null)\r
- item.password = md5_hex(newpassword);\r
- pool.query("UPDATE list SET ? WHERE name = ?",[item,name],cb);\r
+ pool.query("UPDATE profilelist SET ? WHERE name_hash = ? and name = ?",[item,murmurhash.v3(name),name],cb);\r
}\r
this.ClearAsync = function(cb){\r
- pool.query("TRUNCATE TABLE list",null,cb);\r
+ pool.query("TRUNCATE TABLE profilelist",null,cb);\r
}\r
this.RemoveRangeAsync = function(names,cb){\r
- pool.query("DELETE FROM list WHERE name IN (?)",[names],cb);\r
+ pool.query("DELETE FROM profilelist WHERE name IN (?)",[names],cb);\r
}\r
this.RemoveAsync = function(name,cb){\r
- pool.query("DELETE FROM list WHERE name_hash = ? and name = ?",[murmurhash.v3(name),name],cb);\r
+ pool.query("DELETE FROM profilelist WHERE name_hash = ? and name = ?",[murmurhash.v3(name),name],cb);\r
}\r
this.FindByNameAsync = function(pattern,start,count,cb){\r
- pool.query("SELECT * FROM list WHERE name LIKE ? LIMIT ?,?",[pattern+"%",start,count],cb);\r
+ pool.query("SELECT * FROM profilelist WHERE name LIKE ? LIMIT ?,?",[pattern+"%",start,count],cb);\r
}\r
this.ToArrayAsync = function(start,count,cb){\r
- pool.query("SELECT name,lastmodified FROM list LIMIT ?,?",[start,count],cb);\r
+ pool.query("SELECT name,lastmodified FROM profilelist LIMIT ?,?",[start,count],cb);\r
}\r
\r
var crypto = require("crypto");\r
return md5.digest('hex');\r
}\r
\r
- function GetItem(data)\r
+ function GetItem(data,newpw)\r
{\r
var item = {\r
name_hash:murmurhash.v3(data.name),\r
};\r
for(var key in config.alias)\r
{\r
- if(key == "password")\r
- {\r
- item[key] = md5_hex(data[key]);\r
- }\r
- else if(config.alias[key].visible_edit)\r
+ if(typeof(config.alias[key].nodefinetable) != "undefined" && \r
+ config.alias[key].nodefinetable)\r
+ continue;\r
+ if(config.alias[key].visible_edit)\r
{\r
- if(data[key] == "")\r
+ if(config.alias[key].type == "password")\r
+ {\r
+ if(data[key] != "")\r
+ item[key] = md5_hex(data[key]);\r
+ }\r
+ else if(data[key] == "" && typeof(config.alias[key].defaultvalue) != "undefined")\r
+ {\r
item[key] = config.alias[key].defaultvalue;\r
+ }\r
else\r
+ {\r
item[key] = data[key];\r
+ }\r
}\r
}\r
return item;\r
//\r
// @body バリテーションの対象となる連想配列\r
// @alias バリテーションを行う要素のリスト\r
- this.Validate = function(body,alias){\r
- var result = false;\r
- this.Message = "";\r
+ // @editflag 編集時なら真\r
+ this.Validate = function(body,alias,editflag){\r
+ var result = new Array();\r
for(var key in alias)\r
{\r
if(alias[key].visible_edit == false)\r
if(typeof(alias[key].isnotempty) != "undefined" &&\r
alias[key].isnotempty && body[key] == "")\r
message = resource.is_not_empty;\r
- message = IsValidate(body[key],alias[key].type,alias[key].rule);\r
+ else if(typeof(alias[key].isnotemptyonregistor) != "undefined" &&\r
+ alias[key].isnotemptyonregistor && body[key] == "" &&\r
+ !editflag)\r
+ message = resource.is_not_empty;\r
+ else if(typeof(alias[key].mustmatchitem) != "undefined" &&\r
+ body[key] != body[alias[key].mustmatchitem])\r
+ message = util.format(resource.must_match_item,alias[alias[key].mustmatchitem].name); \r
+ else\r
+ 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
+ result.push(alias[key].name + ":" + message);\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