OSDN Git Service

一部クラスを別ファイルに分離した
[webchat/WebChat.git] / profile.js
index 5c10efc..20a069b 100644 (file)
@@ -194,17 +194,15 @@ function edit_postproc(req, res)
                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(typeof(req.body.updatepassword) == "undefined")\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
@@ -221,9 +219,10 @@ function registor_postproc(req, res)
 {\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
@@ -252,6 +251,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
@@ -270,7 +271,7 @@ function ProfileCollection()
                                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
@@ -292,9 +293,9 @@ function ProfileCollection()
                var item = GetItem(data);;\r
                pool.query("INSERT INTO profilelist SET ?",[item],cb);\r
        }\r
-       this.UpdatAsync = function(name,data,newpassword,cb){\r
-               var item = GetItem(data,newpassword);\r
-               pool.query("UPDATE profilelist SET ? WHERE name = ?",[item,name],cb);\r
+       this.UpdatAsync = function(name,data,cb){\r
+               var item = GetItem(data);\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 profilelist",null,cb);\r
@@ -328,13 +329,14 @@ function ProfileCollection()
                };\r
                for(var key in config.alias)\r
                {\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
                                {\r
-                                       if(typeof(newpw) != "undefined")\r
-                                               data[key] = newpw;\r
-                                       if(data[key] != null)\r
+                                       if(data[key] != "")\r
                                                item[key] = md5_hex(data[key]);\r
                                }\r
                                else if(data[key] == "" && typeof(config.alias[key].defaultvalue) != "undefined")\r
@@ -362,9 +364,9 @@ function Validator()
        //\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
@@ -373,17 +375,20 @@ function Validator()
                        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