Entwickler, der außergewöhnliche CRM- und Laravel-Lösungen liefert

Als erfahrener Entwickler spezialisiere ich mich auf Laravel- und Vue.js-Entwicklung, die Implementierung von Vtiger CRM sowie auf vielfältige WordPress-Projekte. Meine Arbeit zeichnet sich durch kreative, dynamische und benutzerzentrierte Weblösungen aus, die individuell an die Bedürfnisse meiner Kunden angepasst werden.

Die Registerkarte Aktualisierungen in VtigerCRM ermöglicht es, Änderungen an Datensätzen (z. B. Kontakte, Leads) nachzuvollziehen. Doch nicht alle Benutzer benötigen diese Funktion. In dieser Anleitung zeigen wir, wie Sie die Registerkarte nur für Administratoren sichtbar machen und direkten Zugriff unterbinden.

Die Registerkarte „Aktualisierungen“ in VtigerCRM-Modulkarten nur für Administratoren anzeigen

Die Registerkarte Aktualisierungen in VtigerCRM ermöglicht es, Änderungen an Datensätzen (z. B. Kontakte, Leads) nachzuvollziehen. Doch nicht alle Benutzer benötigen diese Funktion. In dieser Anleitung zeigen wir, wie Sie die Registerkarte nur für Administratoren sichtbar machen und direkten Zugriff unterbinden.


Schritt 1: Benutzerberechtigungen prüfen

Fügen Sie eine Methode hinzu, die festlegt, ob die Registerkarte angezeigt wird.

Datei: modules/Vtiger/models/Module.php

public function isUpdateDisplayEnabled(): bool 
{
    $userModel = Users_Record_Model::getCurrentUserModel();
    return $userModel->isAdminUser();
}


Erklärung:

  • Diese Funktion prüft, ob der aktuelle Benutzer ein Admin ist.
  • Nur dann wird true zurückgegeben, und die Registerkarte bleibt sichtbar.

Schritt 2: Registerkarte in der Benutzeroberfläche ausblenden

Passen Sie die Logik für die Anzeige der Detailansicht-Tabs an.

Datei: modules/Vtiger/models/DetailView.php
Originalcode:

if ($parentModuleModel->isTrackingEnabled()) {
    $relatedLinks[] = array(
        'linktype' => 'DETAILVIEWTAB',
        'linklabel' => 'LBL_UPDATES',
        // ...
    );
}

Geänderter Code:

if ($parentModuleModel->isTrackingEnabled() && $parentModuleModel->isUpdateDisplayEnabled()) {
    $relatedLinks[] = array(
        'linktype' => 'DETAILVIEWTAB',
        'linklabel' => 'LBL_UPDATES',
        // ...
    );
}


Erklärung:

  • Die Bedingung && $parentModuleModel->isUpdateDisplayEnabled() sorgt dafür, dass die Registerkarte nur Admins sehen.

Schritt 3: Direkten Zugriff per URL blockieren

Verhindern Sie den manuellen Zugriff auf die Aktualisierungen-Seite.

Datei: modules/Vtiger/views/Detail.php
Originalcode:

$recordModel = Vtiger_Record_Model::getInstanceById($parentRecordId);

Geänderter Code:

$recordModel = Vtiger_Record_Model::getInstanceById($parentRecordId);
$moduleModel = $recordModel->getModule();

if (!$moduleModel->isUpdateDisplayEnabled()) {
    throw new AppException('Not authorized to view updates page!');
}

Erklärung:

  • Wenn ein Nicht-Admin versucht, über eine direkte URL (z. B. index.php?module=Leads&mode=showRecentActivities...) zuzugreifen, wird eine Fehlermeldung geworfen.

Zusammenfassung der Änderungen

DateiZweck
Module.phpPrüft Admin-Status
DetailView.phpBlendet die Registerkarte für Nicht-Admins aus
Detail.phpBlockiert direkten URL-Zugriff

Bonus: Berechtigungen für benutzerdefinierte Rollen

Möchten Sie die Sichtbarkeit für andere Rollen erlauben? Passen Sie die Methode isUpdateDisplayEnabled() an:

// Beispiel: Zugriff für Admins und eine Rolle "Auditor"
public function isUpdateDisplayEnabled(): bool 
{
    $userModel = Users_Record_Model::getCurrentUserModel();
    return $userModel->isAdminUser() || $userModel->getRole() === 'H4';
}

Hinweise:

  • Testumgebung: Führen Sie Änderungen immer zuerst in einer Staging-Umgebung durch.
  • Caching: Leeren Sie nach Änderungen den Cache (Einstellungen > Studio > Clear Cache).
  • Backup: Sichern Sie die Dateien vor der Bearbeitung.

Mit diesen Schritten haben Sie die Kontrolle über die Sichtbarkeit sensibler Funktionen in VtigerCRM! 🛡️