瀏覽代碼

#3711 - Audit enhancements

RomanL 4 年之前
父節點
當前提交
ab558d5536

+ 23 - 1
inc/profiles.inc.php

@@ -114,7 +114,14 @@ function bx_login($iId, $bRememberMe = false)
     $oAccountQuery->updateLoggedIn($iId);
     $oAccountQuery->updateLoggedIn($iId);
 
 
     bx_alert('account', 'login',  $iId);
     bx_alert('account', 'login',  $iId);
-
+    
+    bx_audit(
+        $iId, 
+        'bx_accounts', 
+        '_sys_audit_action_account_login',  
+        array('content_title' => '', 'data' => ['display_info' => ['User agent' => $_SERVER["HTTP_USER_AGENT"]]])
+    );
+    
     return $oAccountQuery->getInfoById($iId);
     return $oAccountQuery->getInfoById($iId);
 }
 }
 
 
@@ -126,6 +133,13 @@ function bx_logout($bNotify = true)
     if ($bNotify && isMember())
     if ($bNotify && isMember())
         bx_alert('account', 'logout', (int)$_COOKIE['memberID']);
         bx_alert('account', 'logout', (int)$_COOKIE['memberID']);
 
 
+    bx_audit(
+        $_COOKIE['memberID'], 
+        'bx_accounts', 
+        '_sys_audit_action_account_logout',  
+        array('content_title' => '', 'data' => ['display_info' => ['User agent' => $_SERVER["HTTP_USER_AGENT"]]])
+    );
+    
     $aUrl = parse_url(BX_DOL_URL_ROOT);
     $aUrl = parse_url(BX_DOL_URL_ROOT);
     $sPath = isset($aUrl['path']) && !empty($aUrl['path']) ? $aUrl['path'] : '/';
     $sPath = isset($aUrl['path']) && !empty($aUrl['path']) ? $aUrl['path'] : '/';
 
 
@@ -199,6 +213,14 @@ function bx_check_password($sLogin, $sPassword, $iRole = BX_DOL_ROLE_MEMBER)
         ));
         ));
     
     
     if ($sErrorMsg = bx_check_login($aAccountInfo['id'], $sPassCheck, $iRole)){
     if ($sErrorMsg = bx_check_login($aAccountInfo['id'], $sPassCheck, $iRole)){
+        bx_audit(
+            $aAccountInfo['id'], 
+            'bx_accounts', 
+            '_sys_audit_action_account_failed_login_attempt',  
+            array('content_title' => '', 'data' => ['display_info' => ['User agent' => $_SERVER["HTTP_USER_AGENT"]]]),
+            $aAccountInfo['profile_id']
+        );
+
         $iMaxLoginAttempts = getParam('sys_account_limit_incorrect_login_attempts');
         $iMaxLoginAttempts = getParam('sys_account_limit_incorrect_login_attempts');
         if ($iMaxLoginAttempts >0){
         if ($iMaxLoginAttempts >0){
             $oAccountQuery = BxDolAccountQuery::getInstance();
             $oAccountQuery = BxDolAccountQuery::getInstance();

+ 5 - 4
inc/utils.inc.php

@@ -293,7 +293,6 @@ function process_pass_data( $text, $strip_tags = 0 )
 {
 {
     if ( $strip_tags )
     if ( $strip_tags )
         $text = strip_tags($text);
         $text = strip_tags($text);
-
     if ( !get_magic_quotes_gpc() )
     if ( !get_magic_quotes_gpc() )
         return $text;
         return $text;
     else
     else
@@ -1564,12 +1563,14 @@ function bx_unicode_urldecode($s)
  * @param string $sAction - system action key
  * @param string $sAction - system action key
  * @param array $aParams - array of parameters 
  * @param array $aParams - array of parameters 
  */
  */
-function bx_audit($iContentId, $sContentModule, $sAction, $aParams)
+function bx_audit($iContentId, $sContentModule, $sAction, $aParams, $iProfileId = 0)
 {
 {
     if (!getParam('sys_audit_enable') || getParam('sys_audit_acl_levels') == '')
     if (!getParam('sys_audit_enable') || getParam('sys_audit_acl_levels') == '')
         return;
         return;
     
     
-    $iProfileId = bx_get_logged_profile_id();
+    if ($iProfileId == 0)
+        $iProfileId = bx_get_logged_profile_id();
+    
     if (!BxDolAcl::getInstance()->isMemberLevelInSet(explode(',', getParam('sys_audit_acl_levels')), $iProfileId))
     if (!BxDolAcl::getInstance()->isMemberLevelInSet(explode(',', getParam('sys_audit_acl_levels')), $iProfileId))
         return;
         return;
     
     
@@ -2123,4 +2124,4 @@ function bx_birthday2age($sBirthday)
     return $iResult;
     return $iResult;
 }
 }
 
 
-/** @} */
+/** @} */

+ 5 - 0
modules/boonex/accounts/classes/BxAccntModule.php

@@ -33,6 +33,11 @@ class BxAccntModule extends BxBaseModGeneralModule
             'xml' => _t('_bx_accnt_txt_export_to_xml'),
             'xml' => _t('_bx_accnt_txt_export_to_xml'),
         );
         );
     }
     }
+    
+    public function serviceGetTitle ($iContentId)
+    {
+        return BxDolAccount::getInstance($iContentId)->getEmail();
+    }
 
 
     public function serviceGetOptionsExportFields()
     public function serviceGetOptionsExportFields()
     {
     {

+ 4 - 0
modules/boonex/english/data/langs/system/en.xml

@@ -1973,6 +1973,7 @@
         <string name="_sys_acl_state"><![CDATA[State: ]]></string>
         <string name="_sys_acl_state"><![CDATA[State: ]]></string>
         <string name="_sys_acl_state_trial"><![CDATA[Trial]]></string>
         <string name="_sys_acl_state_trial"><![CDATA[Trial]]></string>
 
 
+  <string name="_sys_audit_content_info_popup_title"><![CDATA[Information]]></string>
   <string name="_sys_audit_action_edit_content"><![CDATA[Content edited]]></string>
   <string name="_sys_audit_action_edit_content"><![CDATA[Content edited]]></string>
   <string name="_sys_audit_action_add_content"><![CDATA[Content added]]></string>
   <string name="_sys_audit_action_add_content"><![CDATA[Content added]]></string>
   <string name="_sys_audit_action_detete_content"><![CDATA[Content removed]]></string>
   <string name="_sys_audit_action_detete_content"><![CDATA[Content removed]]></string>
@@ -1988,6 +1989,9 @@
   <string name="_sys_audit_action_account_change_role_to_3"><![CDATA[Made operator]]></string>
   <string name="_sys_audit_action_account_change_role_to_3"><![CDATA[Made operator]]></string>
   <string name="_sys_audit_action_account_change_role_to_1"><![CDATA[Unmade operator]]></string>
   <string name="_sys_audit_action_account_change_role_to_1"><![CDATA[Unmade operator]]></string>
   <string name="_sys_audit_action_account_unlock"><![CDATA[Unlocked]]></string>
   <string name="_sys_audit_action_account_unlock"><![CDATA[Unlocked]]></string>
+  <string name="_sys_audit_action_account_login"><![CDATA[Login]]></string>
+  <string name="_sys_audit_action_account_failed_login_attempt"><![CDATA[Failed login attempt]]></string>
+  <string name="_sys_audit_action_account_logout"><![CDATA[Logout]]></string>
   <string name="_sys_audit_action_account_reset_password"><![CDATA[Password reseted]]></string>
   <string name="_sys_audit_action_account_reset_password"><![CDATA[Password reseted]]></string>
   <string name="_sys_audit_action_account_resend_confirmation_email"><![CDATA[Confirmation email re-sended]]></string>
   <string name="_sys_audit_action_account_resend_confirmation_email"><![CDATA[Confirmation email re-sended]]></string>
   <string name="_sys_audit_action_account_deleted_with_content"><![CDATA[Removed with content]]></string>
   <string name="_sys_audit_action_account_deleted_with_content"><![CDATA[Removed with content]]></string>

+ 4 - 0
modules/boonex/russian/data/langs/system/ru.xml

@@ -1958,6 +1958,7 @@
         <string name="_sys_acl_state"><![CDATA[Состояние: ]]></string>
         <string name="_sys_acl_state"><![CDATA[Состояние: ]]></string>
         <string name="_sys_acl_state_trial"><![CDATA[Пробный]]></string>
         <string name="_sys_acl_state_trial"><![CDATA[Пробный]]></string>
 
 
+  <string name="_sys_audit_content_info_popup_title"><![CDATA[Информация]]></string>
   <string name="_sys_audit_action_edit_content"><![CDATA[Контент изменен]]></string>
   <string name="_sys_audit_action_edit_content"><![CDATA[Контент изменен]]></string>
   <string name="_sys_audit_action_add_content"><![CDATA[Контент добавлен]]></string>
   <string name="_sys_audit_action_add_content"><![CDATA[Контент добавлен]]></string>
   <string name="_sys_audit_action_detete_content"><![CDATA[Контент удален]]></string>
   <string name="_sys_audit_action_detete_content"><![CDATA[Контент удален]]></string>
@@ -1973,6 +1974,9 @@
   <string name="_sys_audit_action_account_change_role_to_3"><![CDATA[Добавлен в операторы]]></string>
   <string name="_sys_audit_action_account_change_role_to_3"><![CDATA[Добавлен в операторы]]></string>
   <string name="_sys_audit_action_account_change_role_to_1"><![CDATA[Удален из операторов]]></string>
   <string name="_sys_audit_action_account_change_role_to_1"><![CDATA[Удален из операторов]]></string>
   <string name="_sys_audit_action_account_unlock"><![CDATA[Разблокирован]]></string>
   <string name="_sys_audit_action_account_unlock"><![CDATA[Разблокирован]]></string>
+  <string name="_sys_audit_action_account_login"><![CDATA[Вход]]></string>
+  <string name="_sys_audit_action_account_failed_login_attempt"><![CDATA[Неудачная попытка входа]]></string>
+  <string name="_sys_audit_action_account_logout"><![CDATA[Выход]]></string>
   <string name="_sys_audit_action_account_reset_password"><![CDATA[Пароль сброшен]]></string>
   <string name="_sys_audit_action_account_reset_password"><![CDATA[Пароль сброшен]]></string>
   <string name="_sys_audit_action_account_resend_confirmation_email"><![CDATA[Письмо с подтверждением отправлено повторно]]></string>
   <string name="_sys_audit_action_account_resend_confirmation_email"><![CDATA[Письмо с подтверждением отправлено повторно]]></string>
   <string name="_sys_audit_action_account_deleted_with_content"><![CDATA[Удален вместе с контентом]]></string>
   <string name="_sys_audit_action_account_deleted_with_content"><![CDATA[Удален вместе с контентом]]></string>

+ 31 - 2
template/scripts/BxBaseAuditGrid.php

@@ -47,12 +47,25 @@ class BxBaseAuditGrid extends BxDolAuditGrid
         $mixedValue = '';
         $mixedValue = '';
         if ($aRow['content_id'] > 0){
         if ($aRow['content_id'] > 0){
 			$sLink = BxDolRequest::serviceExists($aRow['content_module'], 'get_link') ? BxDolService::call($aRow['content_module'], 'get_link', array($aRow['content_id'])) : '';
 			$sLink = BxDolRequest::serviceExists($aRow['content_module'], 'get_link') ? BxDolService::call($aRow['content_module'], 'get_link', array($aRow['content_id'])) : '';
-			$sTitle = BxDolRequest::serviceExists($aRow['content_module'], 'get_title') ? BxDolService::call($aRow['content_module'], 'get_title', array($aRow['content_id'])) : '';
+			$sTitle = BxDolRequest::serviceExists($aRow['content_module'], 'get_title') ? BxDolService::call($aRow['content_module'], 'get_title', array($aRow['content_id'])) : $aRow['content_title'];
             if ($sLink){
             if ($sLink){
                 $mixedValue = BxDolTemplate::getInstance()->parseLink($sLink, $sTitle);
                 $mixedValue = BxDolTemplate::getInstance()->parseLink($sLink, $sTitle);
             }
             }
+            else{
+                $mixedValue = $sTitle;
+            }
         }
         }
-        return parent::_getCellDefault($mixedValue, $sKey, $aField, $aRow);
+        $sLinkExtras = '';
+        $aExtras = unserialize($aRow['extras']);
+        if (isset($aExtras['display_info'])){
+            $sLinkExtras = $this->_oTemplate->parseLink('javascript:void(0)',' <i class="sys-icon info-circle"></i>' , array(
+                'title' => '',
+                'bx_grid_action_single' => 'show_stat',
+                'bx_grid_action_data' => $aRow['extras']
+            ));
+        }
+        
+        return parent::_getCellDefault($mixedValue . $sLinkExtras, $sKey, $aField, $aRow);
     }
     }
     
     
     protected function _getCellContextProfileId ($mixedValue, $sKey, $aField, $aRow)
     protected function _getCellContextProfileId ($mixedValue, $sKey, $aField, $aRow)
@@ -202,6 +215,22 @@ class BxBaseAuditGrid extends BxDolAuditGrid
         return $oForm->genRow($aInputModules, true);
         return $oForm->genRow($aInputModules, true);
     }
     }
     
     
+    public function performActionShowStat()
+    {
+		$aTmp2 = bx_get('ids');
+		$sData = $aTmp2[0];
+        $aData = unserialize($sData);
+        $sContentInfo = '';
+        if (isset($aData['display_info'])){
+            foreach($aData['display_info'] as $sKey => $sValue)
+                $sContentInfo .= $sKey . ': ' . $sValue;
+        }
+		
+		$sContent = BxTemplStudioFunctions::getInstance()->popupBox('sys-audit-content-info', _t('_sys_audit_content_info_popup_title'), $sContentInfo);
+        
+		echoJson(array('popup' => $sContent));
+	}
+    
 }
 }
 
 
 /** @} */
 /** @} */