OSDN Git Service

バリテーション時のメッセージを配列で書き込むことにした
[webchat/WebChat.git] / profile.js
index 55d247c..5cdc399 100644 (file)
@@ -196,15 +196,12 @@ function edit_postproc(req, res)
                var validator = new Validator();\r
                if(validator.Validate(req.body,config.alias))\r
                {\r
-                       RenderMessage(validator.Message,req.session.items);\r
+                       RenderMessage(res,validator.Message,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
@@ -252,6 +249,8 @@ function registor_proc(req, res)
 \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
@@ -275,7 +274,7 @@ function ProfileCollection()
        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
@@ -286,32 +285,30 @@ function ProfileCollection()
                ],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
+               var item = GetItem(data);;\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 = ?",[item,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
@@ -322,7 +319,7 @@ function ProfileCollection()
        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
@@ -330,10 +327,18 @@ function ProfileCollection()
                };\r
                for(var key in config.alias)\r
                {\r
-                       if(key == "password")\r
-                               item[key] = md5_hex(data[key]);\r
-                       else\r
-                               item[key] = data[key];\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(config.alias[key].type == "password")\r
+                                       item[key] = md5_hex(data[key]);\r
+                               else if(data[key] == "" && typeof(config.alias[key].defaultvalue) != "undefined")\r
+                                       item[key] = config.alias[key].defaultvalue;\r
+                               else\r
+                                       item[key] = data[key];\r
+                       }\r
                }\r
                return item;\r
        }\r
@@ -352,13 +357,23 @@ function Validator()
        // @alias バリテーションを行う要素のリスト\r
        this.Validate = function(body,alias){\r
                var result = false;\r
-               this.Message = "";\r
+               this.Message = new Array();\r
                for(var key in alias)\r
                {\r
-                       var message = IsValidate(body[key],alias[key].type,alias[key].rule);\r
+                       if(alias[key].visible_edit == false)\r
+                               continue;\r
+                       var message;\r
+                       if(typeof(alias[key].isnotempty) != "undefined" &&\r
+                               alias[key].isnotempty && body[key] == "")\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
+                               this.Message.push(alias[key].name + ":" + message);\r
                                result = true;\r
                        }\r
                }\r
@@ -374,10 +389,6 @@ function Validator()
 \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
@@ -401,4 +412,4 @@ function Validator()
 \r
                return result;\r
        }\r
-}
\ No newline at end of file
+}\r