Index: branches/unlabeled/unlabeled-1.68.2/core/units/users/users_event_handler.php =================================================================== diff -u -r6854 -r6918 --- branches/unlabeled/unlabeled-1.68.2/core/units/users/users_event_handler.php (.../users_event_handler.php) (revision 6854) +++ branches/unlabeled/unlabeled-1.68.2/core/units/users/users_event_handler.php (.../users_event_handler.php) (revision 6918) @@ -12,6 +12,7 @@ $permissions = Array( // admin 'OnSetPersistantVariable' => Array('self' => 'view'), // because setting to logged in user only + 'OnUpdateRootPassword' => Array('self' => true), // because setting to logged in user only // front 'OnRefreshForm' => Array('self' => true), @@ -1034,6 +1035,41 @@ } return parent::getPassedID($event); } + + /** + * Allows to change root password + * + * @param kEvent $event + */ + function OnUpdateRootPassword(&$event) + { + $user_id = $this->Application->RecallVar('user_id'); + if ($user_id != -1) { + // not "root" can't change root's password via this event + return false; + } + + $object =& $event->getObject( Array('skip_autoload' => true) ); + /* @var $object UsersItem */ + + $items_info = $this->Application->GetVar( $event->getPrefixSpecial(true) ); + if ($items_info) { + list ($id, $field_values) = each($items_info); + $object->SetDefaultValues(); + $object->SetDBField('RootPassword', $this->Application->ConfigValue('RootPass')); + $object->Fields['RootPassword']['salt'] = 'b38'; + + $object->SetFieldsFromHash($field_values); + $status = $object->Validate(); + if ($status) { + // validation on, password match too + } + else { + $event->status = erFAIL; + $event->redirect = false; + } + } + } } ?> \ No newline at end of file