From: konekoneko Date: Mon, 6 May 2013 09:15:51 +0000 (+0900) Subject: 編集時にパスワードが空欄な場合、パスワードを更新しないようにした X-Git-Url: http://git.osdn.jp/view?a=commitdiff_plain;h=5ca4e8f58357fd6c7f0d02f0b8c712a3c965b1be;p=webchat%2FWebChat.git 編集時にパスワードが空欄な場合、パスワードを更新しないようにした --- diff --git a/configure.js b/configure.js index d31bbb0..9b12cd2 100644 --- a/configure.js +++ b/configure.js @@ -38,10 +38,11 @@ //defaultvalue デフォルト値を指定する //primary プライマリーキーとして指定するなら真。そうでないなら偽 //isnotempty 真なら必須メンバーであることを表し、そうでないなら空欄でも構わないことを表す + //isnotemptyonregistor 真なら登録時に必須メンバーであることを表し、そうでないなら空欄でも構わないことを表す //nodefinetable 真ならテーブルの項目に登録しないことを表し、そうでないなら登録することを表す //visible 詳細画面に表示するなら真。そうでないなら偽 //visible_edit 編集画面に表示するなら真。そうでないなら偽 - //mustmatchitem 編集時に一致しなければならない項目を指定する + //mustmatchitem 登録時に一致しなければならない項目を指定する(編集時に一致しない場合は無視されます) //rule バリテーション時に実行される関数を指定する // 呼び出される関数の第一パラメーターはバリテーションの対象となるデーターで、第二パラメーターはデーター型となる // 実行される関数でバリテーションが成功した場合、nullを返さなければならない @@ -74,7 +75,7 @@ length : 32, visible : false, visible_edit : true, - isnotempty : true + isnotemptyonregistor : true }, newpassword : { diff --git a/profile.js b/profile.js index 9aedfcc..dc140f9 100644 --- a/profile.js +++ b/profile.js @@ -194,7 +194,7 @@ function edit_postproc(req, res) return; }else if(typeof(req.body.edit) != "undefined"){ var validator = new Validator(); - var result = validator.Validate(req.body,config.alias); + var result = validator.Validate(req.body,config.alias,true); if(result.length > 0) { RenderMessage(res,result,req.session.items); @@ -219,7 +219,7 @@ function registor_postproc(req, res) { if(typeof(req.body.registor) != "undefined"){ var validator = new Validator(); - var result = validator.Validate(req.body,config.alias); + var result = validator.Validate(req.body,config.alias,false); if(result.length > 0) { RenderMessage(res,result,req.session.items); @@ -335,11 +335,18 @@ function ProfileCollection() if(config.alias[key].visible_edit) { if(config.alias[key].type == "password") - item[key] = md5_hex(data[key]); + { + if(data[key] != "") + item[key] = md5_hex(data[key]); + } else if(data[key] == "" && typeof(config.alias[key].defaultvalue) != "undefined") + { item[key] = config.alias[key].defaultvalue; + } else + { item[key] = data[key]; + } } } return item; @@ -357,7 +364,8 @@ function Validator() // // @body バリテーションの対象となる連想配列 // @alias バリテーションを行う要素のリスト - this.Validate = function(body,alias){ + // @editflag 編集時なら真 + this.Validate = function(body,alias,editflag){ var result = new Array(); for(var key in alias) { @@ -367,6 +375,10 @@ function Validator() if(typeof(alias[key].isnotempty) != "undefined" && alias[key].isnotempty && body[key] == "") message = resource.is_not_empty; + else if(typeof(alias[key].isnotemptyonregistor) != "undefined" && + alias[key].isnotemptyonregistor && body[key] == "" && + !editflag) + message = resource.is_not_empty; else if(typeof(alias[key].mustmatchitem) != "undefined" && body[key] != body[alias[key].mustmatchitem]) message = util.format(resource.must_match_item,alias[alias[key].mustmatchitem].name);