Contao-Camp 2024
Ergebnis 1 bis 1 von 1

Thema: (Gelöst) Backend Listenansicht: Nur eigene Datensätze anzeigen (ID User)

  1. #1
    Contao-Nutzer Avatar von pgrob
    Registriert seit
    10.07.2009.
    Ort
    Schweiz
    Beiträge
    205
    Partner-ID
    10267

    Standard (Gelöst) Backend Listenansicht: Nur eigene Datensätze anzeigen (ID User)

    Hallo Miteinander
    Ich würde gerne in einem selber erstellten Modul die Ausgabe der Backend-Listenansicht so anpassen das jeder Benutzer (bis auf die Admins) nur die Felder sehe, löschen und bearbeiten kann die er selber erstellt hat.

    Folgender Forumeintrag habe ich bereits hier gefunden bei mir Contao 4.4 aber nicht wirklich zum laufen gebracht.

    https://community.contao.org/de/show...ze-Wie-gemacht

    Meine Ausgangslage sieht aktuell folgendermassen aus:
    • Feld «author» (wird automatisch mit der User ID befüllt)
    • onload_callback im "config" array
    • public function "$this->import('BackendUser', 'User');"
    • public function "checkPermission"




    PHP-Code:
    'author' => array
            (
                
    'label'                   => &$GLOBALS['TL_LANG']['tl_standorte']['author'],
                
    'default'                 => BackendUser::getInstance()->id,
                
    'inputType'               => 'text',
                
    'foreignKey'              => 'tl_user.name',
                
    'eval'                    => array('tl_class'=>'w50'),
                
    'sql'                     => "int(10) unsigned NOT NULL default '0'",
            ), 


    PHP-Code:
    // Config
        
    'config'   => array
        (
            
    'dataContainer'    => 'Table',
            
    'enableVersioning' => true,
            
    'onload_callback'  => array('tl_standort','checkPermission'),
            
    'sql'              => array
            (
                
    'keys' => array
                (
                    
    'id' => 'primary'
                
    )
            ),
        ),
        
    // List
        
    'list'     => array
        (
            
    'sorting'           => array
                (
                    
    'mode'        => 1,
                    
    'fields'      => array('betrieb'),
                    
    'flag'        => 1,
                    
    'panelLayout' => 'filter;sort,search,limit',
                ),    
            
    'label'             => array
                (
                    
    'fields' => array('ort'),
                    
    'format' => '%s',
                ),    
            
    'global_operations' => array
            (
                
    'all' => array
                (
                    
    'label'      => &$GLOBALS['TL_LANG']['MSC']['all'],
                    
    'href'       => 'act=select',
                    
    'class'      => 'header_edit_all',
                    
    'attributes' => 'onclick="Backend.getScrollOffset()" accesskey="e"'
                
    )
            ), 
    PHP-Code:
    public function __construct()
        {
            
    parent::__construct();
            
    $this->import('BackendUser''User');
        }

        public function 
    checkPermission() 
        {
            
    $authorID $dc->activeRecord->author;
            
    // if not admin, only list data-records of this author
           
            
    if ($this->User->isAdmin)
            {
                return;
            }
            else
            {
                
            }

            
        } 
    Aktuell habe ich es mit der Funktion aus dem Link oben versucht, ohne Erfolg, die Liste wird nach wie vor für Admins wie auch für andere Benutzer gleich (komplett) ausgegeben.


    LÖSUNG:

    • onload_callback im "config" array


    PHP-Code:
    class tl_function extends Backend
    {
        public function 
    __construct()
        {
            
    $this->import('BackendUser''User');
            
    parent::__construct();

            
    $this->User->authenticate();
        }

        public function 
    checkPermission($dc
        {
            
    $objUser BackendUser::getInstance();
            if(!
    $objUser->isAdmin)
            {
                
    $GLOBALS['TL_DCA']['tl_table']['list']['sorting']['filter'][] = array('betrieb = ?'$objUser->id); 
            }
        }  

    Geändert von pgrob (20.09.2019 um 13:34 Uhr)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •