Skip to content
Permalink
Browse files

[user] replaceable password hashing and use `password_hash()` as defa…

…ult (xoopscube#126)

* パスワードの暗号化方法を差し替え可能にした。users.passもvarchar(32)からvarchar(255)へ変更(インストーラ)

* [user] replaceable password hashing and use `password_hash()` as default

* [user] correction of lostpass action, pass colmun length check

* [user] auto re-hash of password hash if need it

* [user] correction of last commit e6b37ea

* [user] change point of pass colmun length checking

* user insert前にusersテーブルのpassカラム長チェックを追加

* [user] check XCUBE_CORE_USER_PASS_LEN_FIXED in User_Utils::checkUsersPassColumnLength()

* [user] check XCUBE_CORE_USER_PASS_LEN_FIXED befor call User_Utils::checkUsersPassColumnLength
  • Loading branch information...
RyujiAMANO authored and nao-pon committed Feb 23, 2018
1 parent 7f5b369 commit c45f46ed226d27acb06b64f3b463b60fae077da9
Showing with 577 additions and 57 deletions.
  1. +1 −0 extras/extra_languages/czech/modules/user/language/czech/main.php
  2. +1 −0 extras/extra_languages/fr_utf8/modules/user/language/fr_utf8/main.php
  3. +1 −0 extras/extra_languages/french/modules/user/language/french/main.php
  4. +1 −0 extras/extra_languages/greek/modules/user/language/greek/main.php
  5. +1 −0 extras/extra_languages/ja_utf8/modules/user/language/ja_utf8/main.php
  6. +1 −0 extras/extra_languages/japanese/modules/user/language/japanese/main.php
  7. +1 −0 extras/extra_languages/ko_utf8/html/modules/user/language/ko_utf8/main.php
  8. +1 −0 extras/extra_languages/korean/modules/user/language/korean/main.php
  9. +4 −3 extras/extra_languages/portuguese/modules/user/language/portuguese/main.php
  10. +1 −0 extras/extra_languages/pt_utf8/modules/user/language/pt_utf8/main.php
  11. +1 −0 extras/extra_languages/russian/modules/user/language/russian/main.php
  12. +1 −0 extras/extra_languages/schinese/modules/user/language/schinese/main.php
  13. +1 −0 extras/extra_languages/tw_utf-8/html/modules/user/language/tw_utf-8/main.php
  14. +1 −0 extras/extra_languages/zh-tw/modules/user/language/zh-tw/main.php
  15. +1 −1 html/install/sql/mysql.structure.sql
  16. +17 −2 html/kernel/member.php
  17. +5 −1 html/kernel/user.php
  18. +10 −5 html/modules/legacyRender/kernel/Legacy_RenderSystem.class.php
  19. +2 −1 html/modules/user/actions/EditUserAction.class.php
  20. +6 −2 html/modules/user/actions/LostPassAction.class.php
  21. +10 −10 html/modules/user/admin/actions/UserDataUploadConfAction.class.php
  22. +1 −1 html/modules/user/admin/forms/UserAdminEditForm.class.php
  23. +3 −3 html/modules/user/admin/preload/AdminPreload.class.php
  24. +7 −2 html/modules/user/class/users.php
  25. +317 −0 html/modules/user/compat/password.php
  26. +1 −1 html/modules/user/forms/EditUserForm.class.php
  27. +1 −1 html/modules/user/forms/UserRegisterEditForm.class.php
  28. +31 −9 html/modules/user/kernel/LegacypageFunctions.class.php
  29. +1 −0 html/modules/user/language/english/main.php
  30. +57 −0 html/modules/user/preload/Primary/EncryptPassword.class.php
  31. +88 −14 html/modules/user/preload/Primary/Primary.class.php
  32. +1 −1 html/modules/user/templates/blocks/user_block_login.html
  33. +1 −0 xoops_trust_path/settings/site_default.ini
@@ -113,3 +113,4 @@
define('_MD_USER_MESSAGE_USER_DELETE_SUCCESS', "Váš úèet byl odstranìn.");
define('_MD_USER_MESSAGE_YOURREGISTERED', "You are now registered. An email containing an user activation key has been sent to the email account you provided. Please follow the instructions in the mail to activate your account. ");
define('_MD_USER_MESSAGE_YOURREGISTERED2', "You are now registered. Please wait for your account to be activated by the adminstrators. You will receive an email once you are activated. This could take a while so please be patient.");
define('_MD_USER_MESSAGE_REPASSWORD', 'Znovu zaregistrujte své heslo pro zvý¹ení bezpeènosti.');
@@ -112,3 +112,4 @@
define('_MD_USER_MESSAGE_USER_DELETE_SUCCESS', "Votre compte a été supprimé.");
define('_MD_USER_MESSAGE_YOURREGISTERED', "Vous êtes maintenant enregistré. Vous allez recevoir par email une clé d'activation de votre compte. Veuillez suivre les instructions de ce mail pour activer votre compte. ");
define('_MD_USER_MESSAGE_YOURREGISTERED2', "Vous êtes maintenant enregistré. Vous recevrez un email lorsque votre compte aura été activé par un des administrateurs. Veuillez suivre les instructions de l'email pour activer votre compte.");
define('_MD_USER_MESSAGE_REPASSWORD', 'Veuillez réinscrire votre mot de passe pour plus d\'amélioration de la sécurité.');
@@ -114,3 +114,4 @@
define('_MD_USER_MESSAGE_USER_DELETE_SUCCESS', "Votre compte a été supprimé.");
define('_MD_USER_MESSAGE_YOURREGISTERED', "Vous êtes maintenant enregistré. Vous allez recevoir par email une clé d'activation de votre compte. Veuillez suivre les instructions de ce mail pour activer votre compte. ");
define('_MD_USER_MESSAGE_YOURREGISTERED2', "Vous êtes maintenant enregistré. Vous recevrez un email lorsque votre compte aura été activé par un des administrateurs. Veuillez suivre les instructions de l'email pour activer votre compte.");
define('_MD_USER_MESSAGE_REPASSWORD', 'Veuillez réinscrire votre mot de passe pour plus d\'amélioration de la sécurité.');
@@ -115,3 +115,4 @@
define('_MD_USER_MESSAGE_USER_DELETE_SUCCESS', "Ο λογαριασμός σας διαγράφτηκε.");
define('_MD_USER_MESSAGE_YOURREGISTERED', "Μόλις γίνατε μέλος του δικτυακού μας τόπου. Ένα μήνυμα έχει αποσταλεί στo email που έχετε δηλώσει στον λογαριασμό σας. Παρακαλούμε ακολουθήστε τις οδηγίες του μηνύματος για να ενεργοποιήσετε τον λογαριασμό σας. ");
define('_MD_USER_MESSAGE_YOURREGISTERED2', "Εχετε ήδη εγγραφεί. Παρακαλούμε να περιμένετε μέχρι την ενεργοποίηση του λογαριασμού σας από τους Διαχειριστές. Θα λάβετε ένα email με την ενεργοποίηση. Κάντε λίγη υπομονή γιατί αυτό μπορεί να καθυστερήσει λίγο.");
define('_MD_USER_MESSAGE_REPASSWORD', 'Παρακαλούμε ξαναγράψτε τον κωδικό πρόσβασής σας για περισσότερη βελτίωση της ασφάλειας.');
@@ -114,3 +114,4 @@
define('_MD_USER_MESSAGE_YOURREGISTERED', "登録申請が完了しました。記載されたメールを登録メールアドレス宛に承認キーを送信しました。メールの指示に従い、承認を完了してください。");
define('_MD_USER_MESSAGE_YOURREGISTERED2', "登録申請が完了しました。サイト管理者がアカウントを承認するまでお待ちください。承認完了時にはメールにてお知らせします。");
define('_MD_USER_LANG_NOTIFY', '通知');
define('_MD_USER_MESSAGE_REPASSWORD', 'セキュリティをさらに強化するために、パスワードを再登録してください。');
@@ -114,3 +114,4 @@
define('_MD_USER_MESSAGE_YOURREGISTERED', "登録申請が完了しました。記載されたメールを登録メールアドレス宛に承認キーを送信しました。メールの指示に従い、承認を完了してください。");
define('_MD_USER_MESSAGE_YOURREGISTERED2', "登録申請が完了しました。サイト管理者がアカウントを承認するまでお待ちください。承認完了時にはメールにてお知らせします。");
define('_MD_USER_LANG_NOTIFY', '通知');
define('_MD_USER_MESSAGE_REPASSWORD', 'セキュリティをさらに強化するために、パスワードを再登録してください。');
@@ -114,3 +114,4 @@
define('_MD_USER_MESSAGE_USER_DELETE_SUCCESS', "님의 계정이 성공적으로 삭제처리되었습니다.");
define('_MD_USER_MESSAGE_YOURREGISTERED', "등록이 완료되었습니다. 님의 메일주소로 승인키(활성화키)를 발송하였으니 메일의 지시에 따라 승인을 완료(계정활성화)하시기 바랍니다.");
define('_MD_USER_MESSAGE_YOURREGISTERED2', "등록이 완료되었습니다. 사이트 관리자가 님의 계정을 승인(활성화)하면 정식으로 등록처리됩니다. 승인(활성화)완료시엔 메일로 통보해 드립니다.");
define('_MD_USER_MESSAGE_REPASSWORD', '더 많은 보안 향상을 위해 암호를 다시 등록하십시오.');
@@ -114,3 +114,4 @@
define('_MD_USER_MESSAGE_USER_DELETE_SUCCESS', "님의 계정이 성공적으로 삭제처리되었습니다.");
define('_MD_USER_MESSAGE_YOURREGISTERED', "등록이 완료되었습니다. 님의 메일주소로 승인키(활성화키)를 발송하였으니 메일의 지시에 따라 승인을 완료(계정활성화)하시기 바랍니다.");
define('_MD_USER_MESSAGE_YOURREGISTERED2', "등록이 완료되었습니다. 사이트 관리자가 님의 계정을 승인(활성화)하면 정식으로 등록처리됩니다. 승인(활성화)완료시엔 메일로 통보해 드립니다.");
define('_MD_USER_MESSAGE_REPASSWORD', '더 많은 보안 향상을 위해 암호를 다시 등록하십시오.');
@@ -51,7 +51,7 @@
define("_MD_USER_LANG_NICKNAMETAKEN", "Lamento, mas este codinome já está em uso.");
define("_MD_USER_LANG_NO", "Não");
define("_MD_USER_LANG_NOACTTPADM", "O cadastro do associado selecionado foi desabilitado ou ainda não foi habilitado.<br />Entre em contato com o administrador para mais informações.");
define("_MD_USER_LANG_NOPROBLEM", "Escreva o e-mail com o qual você se cadastrou em nosso portal.");
define("_MD_USER_LANG_NOPROBLEM", "Escreva o <i>e-mail</i> com o qual você se cadastrou em nosso portal.");
define("_MD_USER_LANG_NOREGISTER", "Lamento, mas o cadastro de novos associados está bloqueado.");
define("_MD_USER_LANG_NOTIFY", "Notificações");
define("_MD_USER_LANG_NOTIFY_METHOD", "Método de notificação: ao monitorar uma seção do portal, como você deseja receber as notificações de atualização?");
@@ -108,13 +108,14 @@
define("_MD_USER_MESSAGE_ACTLOGIN", "A sua conta foi habilitada e agora você já pode entrar com a senha escolhida.");
define("_MD_USER_MESSAGE_ACTVMAILNG", "Ocorreu um erro ao tentar enviar a mensagem com a confirmação do cadastro de %s");
define("_MD_USER_MESSAGE_ACTVMAILOK", "Uma mensagem com a chave de ativação foi enviada para %s .");
define("_MD_USER_MESSAGE_IAGREE", "Concordo com o descrito acima");
define("_MD_USER_MESSAGE_IAGREE", "Concordo com o acima descrito");
define("_MD_USER_MESSAGE_OLDDELETED", "O seu avatar anterior será removido.");
define("_MD_USER_MESSAGE_SEND_PASSWORD", "Senha enviada");
define("_MD_USER_MESSAGE_SURETODEL", "Tem certeza de que deseja cancelar a sua conta?");
define("_MD_USER_MESSAGE_USER_DELETE_SUCCESS", "O seu perfil foi definitivamente removido deste portal.");
define("_MD_USER_MESSAGE_YOURREGISTERED", "Agora você está cadastrado. Uma mensagem com a sua chave de ativação foi enviada ao e-mail que você nos forneceu. Por favor, siga as instruções contidas no e-mail para habilitar a sua conta.");
define("_MD_USER_MESSAGE_YOURREGISTERED", "Agora você está cadastrado. Uma mensagem com a sua chave de ativação foi enviada ao <i>e-mail</i> que você nos forneceu. Por favor, siga as instruções contidas no <i>e-mail</i> para habilitar a sua conta.");
define("_MD_USER_MESSAGE_YOURREGISTERED2", "Agora você está cadastrado. Por favor, espere pela aprovação dos administradores.");
define('_MD_USER_MESSAGE_REPASSWORD', 'Re-registre sua senha para obter mais aprimoramentos de segurança.');
// ############################################################### //
// ## XOOPS Cube Legacy - Versão em Português
// ############################################################### //
@@ -115,6 +115,7 @@
define("_MD_USER_MESSAGE_USER_DELETE_SUCCESS", "O seu perfil foi definitivamente removido deste portal.");
define("_MD_USER_MESSAGE_YOURREGISTERED", "Agora você está cadastrado. Uma mensagem com a sua chave de ativação foi enviada ao <i>e-mail</i> que você nos forneceu. Por favor, siga as instruções contidas no <i>e-mail</i> para habilitar a sua conta.");
define("_MD_USER_MESSAGE_YOURREGISTERED2", "Agora você está cadastrado. Por favor, espere pela aprovação dos administradores.");
define('_MD_USER_MESSAGE_REPASSWORD', 'Re-registre sua senha para obter mais aprimoramentos de segurança.');
// ############################################################### //
// ## XOOPS Cube Legacy - Versão em Português
// ############################################################### //
@@ -113,3 +113,4 @@
define('_MD_USER_MESSAGE_USER_DELETE_SUCCESS', "Âàø àêêàóíò áûë óäàëåí.");
define('_MD_USER_MESSAGE_YOURREGISTERED', "Òåïåðü Âû çàðåãèñòðèðîâàíû. Ïèñüìî ñîäåðæàùèå êëþ÷ àêòèâàöèè îòïðàâëåíî â Âàø àäðåñ. Ïîæàëóéñòà, ñëåäóéòå èíñòðóêöèÿì èç ýòîãî ïèñüìà, ÷òîáû àêòèâèðîâàòü Âàø àêêàóíò.");
define('_MD_USER_MESSAGE_YOURREGISTERED2', "Òåïåðü Âû çàðåãèñòèðîâàíû. Ïîæàëóéñòà äîæäèòåñü, ïîêà Âàø àêêàóíò áóäåò àêòèâèðîâàí àäìèíèñòðàòîðîì. Âû ïîëó÷èòå ïèñüìî îá ýòîì ñðàçó æå ïîñëå àêòèâàöèè. Ýòîò ïðîöåññ ìîæåò çàíÿòü íåêîòîðîå âðåìÿ, áóäüòå òåðïåëèâû.");
define('_MD_USER_MESSAGE_REPASSWORD', 'Ïîæàëóéñòà, ïåðåðåãèñòðèðóéòå ñâîé ïàðîëü äëÿ óëó÷øåíèÿ áåçîïàñíîñòè.');
@@ -113,3 +113,4 @@
define('_MD_USER_MESSAGE_USER_DELETE_SUCCESS', "您的帐号已删除。");
define('_MD_USER_MESSAGE_YOURREGISTERED', "您已经完成注册,系统已发出一封帐号启用信请依照信件内容指示启用您的帐号。");
define('_MD_USER_MESSAGE_YOURREGISTERED2', "您已经完成注册, 请等待系统管理员启用您的帐号,当您帐号启用时会收到通知信,但会需要一点时间,请耐心等候。");
define('_MD_USER_MESSAGE_REPASSWORD', '请重新注册您的密码以提高安全性。');
@@ -113,3 +113,4 @@
define('_MD_USER_MESSAGE_USER_DELETE_SUCCESS', "您的帳號已刪除。");
define('_MD_USER_MESSAGE_YOURREGISTERED', "您已經完成註冊,系統已發出一封帳號啟用信請依照信件內容指示啟用您的帳號。");
define('_MD_USER_MESSAGE_YOURREGISTERED2', "您已經完成註冊, 請等待系統管理員啟用您的帳號,當您帳號啟用時會收到通知信,但會需要一點時間,請耐心等候。");
define('_MD_USER_MESSAGE_REPASSWORD', '請重新註冊您的密碼以提高安全性。');
@@ -113,3 +113,4 @@
define('_MD_USER_MESSAGE_USER_DELETE_SUCCESS', '您的帳號已經刪除。');
define('_MD_USER_MESSAGE_YOURREGISTERED', '您已經完成註冊,包含帳號啟用碼的郵件已經寄送到您提供的信箱,請參考其中的說明來啟用您的帳號。');
define('_MD_USER_MESSAGE_YOURREGISTERED2', '您已經完成註冊,請等候管理者啟用您的帳號,啟用後您會收到一封郵件通知,這也許需要一點時間,請耐心等候。');
define('_MD_USER_MESSAGE_REPASSWORD', '請重新註冊您的密碼以提高安全性。');
@@ -548,7 +548,7 @@ CREATE TABLE users (
user_aim varchar(18) NOT NULL default '',
user_yim varchar(25) NOT NULL default '',
user_msnm varchar(100) NOT NULL default '',
pass varchar(32) NOT NULL default '',
pass varchar(255) NOT NULL default '',
posts mediumint(8) unsigned NOT NULL default '0',
attachsig tinyint(1) unsigned NOT NULL default '0',
rank smallint(5) unsigned NOT NULL default '0',
@@ -399,8 +399,23 @@ public function &getGroupsByUser($user_id, $asobject = false)
public function &loginUser($uname, $pwd)
{
$criteria = new CriteriaCompo(new Criteria('uname', $uname));
$criteria->add(new Criteria('pass', md5($pwd)));
$user =& $this->_uHandler->getObjects($criteria, false);
if (is_callable('User_Utils::passwordVerify')) {
$user = $this->_uHandler->getObjects($criteria, false);
if ($user && count($user) === 1) {
if (!User_Utils::passwordVerify($pwd, $user[0]->get('pass'))) {
$user = array();
}
} else {
$user = array();
}
} else {
if (is_callable('User_Utils::encryptPassword')) {
$criteria->add(new Criteria('pass', User_Utils::encryptPassword($pwd)));
} else {
$criteria->add(new Criteria('pass', md5($pwd)));
}
$user = $this->_uHandler->getObjects($criteria, false);
}
if (!$user || count($user) != 1) {
$ret = false;
return $ret;
@@ -88,7 +88,7 @@ public function XoopsUser($id = null)
$this->initVar('user_aim', XOBJ_DTYPE_TXTBOX, null, false, 18);
$this->initVar('user_yim', XOBJ_DTYPE_TXTBOX, null, false, 25);
$this->initVar('user_msnm', XOBJ_DTYPE_TXTBOX, null, false, 100);
$this->initVar('pass', XOBJ_DTYPE_TXTBOX, null, false, 32);
$this->initVar('pass', XOBJ_DTYPE_TXTBOX, null, false, 255);
$this->initVar('posts', XOBJ_DTYPE_INT, null, false);
$this->initVar('attachsig', XOBJ_DTYPE_INT, 0, false);
$this->initVar('rank', XOBJ_DTYPE_INT, 0, false);
@@ -577,6 +577,10 @@ public function insert(&$user, $force = false)
if (!$user->cleanVars()) {
return false;
}
// check pass colmun length of users table
if (!defined('XCUBE_CORE_USER_PASS_LEN_FIXED') && is_callable('User_Utils::checkUsersPassColumnLength')) {
User_Utils::checkUsersPassColumnLength();
}
foreach ($user->cleanVars as $k => $v) {
${$k} = $v;
}
@@ -163,11 +163,16 @@ public function prepare(&$controller)
$mTpl->xoops_setDebugging(true);
}
$mTpl->assign(array('xoops_requesturi' => htmlspecialchars($GLOBALS['xoopsRequestUri'], ENT_QUOTES), //@todo ?????????????
// set JavaScript/Weird, but need extra <script> tags for 2.0.x themes
'xoops_js' => '//--></script><script type="text/javascript" src="'.XOOPS_URL.'/include/xoops.js"></script><script type="text/javascript"><!--'
));
$mTpl->assign(array(
'xoops_requesturi' => htmlspecialchars($GLOBALS['xoopsRequestUri'], ENT_QUOTES), //@todo ?????????????
// set JavaScript/Weird, but need extra <script> tags for 2.0.x themes
'xoops_js' => '//--></script><script type="text/javascript" src="'.XOOPS_URL.'/include/xoops.js"></script><script type="text/javascript"><!--'
));
if (($xoopsRedirect = xoops_getrequest('xoops_redirect')) && $xoopsRedirect[0] === '/') {
$mTpl->assign('xoops_redirect', htmlspecialchars($xoopsRedirect, ENT_QUOTES));
}
$mTpl->assign('xoops_sitename', $textFilter->toShow($context->getAttribute('legacy_sitename')));
$mTpl->assign('xoops_pagetitle', $textFilter->toShow($context->getAttribute('legacy_pagetitle')));
$mTpl->assign('xoops_slogan', $textFilter->toShow($context->getAttribute('legacy_slogan')));
@@ -178,7 +178,8 @@ protected function _setDatepicker()
public function executeViewSuccess(&$controller, &$xoopsUser, &$render)
{
$controller->executeForward(XOOPS_URL . '/userinfo.php?uid=' . $this->mObject->getShow('uid'));
$redirect = xoops_getrequest('xoops_redirect');
$controller->executeForward(($redirect && $redirect[0] === '/')? $redirect : (XOOPS_URL . '/userinfo.php?uid=' . $this->mObject->getShow('uid')));
}
public function executeViewError(&$controller, &$xoopsUser, &$render)
@@ -72,6 +72,12 @@ public function _updatePassword(&$controller)
$newpass = xoops_makepass();
$extraVars['newpass'] = $newpass;
$lostUser->set('pass', User_Utils::encryptPassword($newpass), true);
if (!$userHandler->insert($lostUser, true)) {
return USER_FRAME_VIEW_ERROR;
}
$builder =new User_LostPass2MailBuilder();
$director =new User_LostPassMailDirector($builder, $lostUser, $controller->mRoot->mContext->getXoopsConfig(), $extraVars);
$director->contruct();
@@ -81,8 +87,6 @@ public function _updatePassword(&$controller)
// $xoopsMailer->getErrors();
return USER_FRAME_VIEW_ERROR;
}
$lostUser->set('pass', md5($newpass), true);
$userHandler->insert($lostUser, true);
return USER_FRAME_VIEW_SUCCESS;
}
@@ -12,7 +12,7 @@
class User_UserDataUploadConfAction extends User_UserDataUploadAction
{
/// アップされたCSVファイルを出力する
/// アップされたCSVファイルを出力する
public function execute(&$controller, &$xoopsUser)
{
@@ -25,7 +25,7 @@ public function execute(&$controller, &$xoopsUser)
}
/// 確認画面を表示
/// 確認画面を表示
public function executeViewSuccess(&$controller, &$xoopsUser, &$render)
{
/// success
@@ -94,9 +94,9 @@ public function executeViewSuccess(&$controller, &$xoopsUser, &$render)
}
break;
case 'pass':
if (strlen($csv_value)!=32) {
$update = $user_value != md5($csv_value);
$csv_value = md5($csv_value);
if (strlen($csv_value) < 32) {
$csv_value = User_Utils::encryptPassword($csv_value);
$update = $user_value !== $csv_value;
}
default:
}
@@ -139,12 +139,12 @@ public function executeViewSuccess(&$controller, &$xoopsUser, &$render)
// {{{ explodeCSV(Ethna_Util.php)
/**
* CSV形式の文字列を配列に分割する
* CSV形式の文字列を配列に分割する
*
* @access public
* @param string $csv CSV形式の文字列(1行分)
* @param string $delimiter フィールドの区切り文字
* @return mixed (array):分割結果 Ethna_Error:エラー(行継続)
* @param string $csv CSV形式の文字列(1行分)
* @param string $delimiter フィールドの区切り文字
* @return mixed (array):分割結果 Ethna_Error:エラー(行継続)
*/
public function explodeCSV($csv, $delimiter = ",")
{
@@ -208,7 +208,7 @@ public function explodeCSV($csv, $delimiter = ",")
$field .= $line_end;
// request one more line
// return Ethna::raiseNotice('CSV分割エラー(行継続)', E_UTIL_CSV_CONTINUE);
// return Ethna::raiseNotice('CSV分割エラー(行継続)', E_UTIL_CSV_CONTINUE);
}
}
}
@@ -334,7 +334,7 @@ public function update(&$obj)
$obj->set('user_msnm', $this->get('user_msnm'));
if (strlen($this->get('pass'))) {
$obj->set('pass', md5($this->get('pass')));
$obj->set('pass', User_Utils::encryptPassword($this->get('pass')));
}
$obj->set('posts', $this->get('posts'));

0 comments on commit c45f46e

Please sign in to comment.
You can’t perform that action at this time.