Ergebnis 1 bis 6 von 6

Thema: Dateiupload auf bestimme Ordner einschränken

  1. #1
    Contao-Fan Avatar von µaTh
    Registriert seit
    13.05.2010.
    Beiträge
    951

    Standard Dateiupload auf bestimme Ordner einschränken

    Hi,

    ich versuche gerade (verzweifelt) den Dateiupload auf bestimmte Ordner zu begrenzen.
    Die Benutzer sollen News erstellen und bearbeiten können und Bilder in den News einstellen.
    Dafür habe ich eine Benutzergruppe erstellt, die Leserechte für den Ordner "news" und deren Unterordner "2007" bis "2011" erhalten. (funktioniert auch super)
    Nun soll der Ordner "2010" auch Schreibrechte erhalten, damit die Editoren auch eigene Bilder ein stellen können. Dafür erstelle ich eine neue Benutzergruppe und ordne beide Benutzergruppen dem User zu.
    Nun kann leider der User in alle freigegegeben Ordner Dateien uploaden. Egal in welcher Reihenfolge ich die Benutzergruppen im Benutzer sortiere.

    Hat jemand eine Idee, wie ich die Rechte vergeben muss, damit ich Ordner zum Lesen frei geben kann und nur einige Ordner zum upload?

    Viele Grüße
    µaTh

  2. #2
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ich versuche mal das zu strukturieren.

    Gruppe 1

    Filemounts
    --News *
    -----2008 *
    -----2009 *
    -----2010 *

    Erlaubte Datei-Operationen
    --NULL

    Gruppe 2

    Filemounts
    --(News)
    -----2010 *

    Erlaubte Datei-Operationen
    --Dateien auf den Server hochladen

    Sieht also so aus, als wäre die Berechtigung Dateien hochzuladen, allgemein gehalten und würde sich nicht auf den entsprechend in der Gruppe gesetzten Filemount beschränken. Wäre ein Feature-Request, es sei denn ich sehe hier etwas falsch.

    Grüße
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  3. #3

  4. #4
    Contao-Fan Avatar von thepixture
    Registriert seit
    24.06.2009.
    Ort
    Dresden
    Beiträge
    536

    Standard

    Hallo,

    gibt es hierfür schon eine Lösung?

    Ich würde für Benutzer gern unterschiedliche Schreib/Leserechte für Ordner setzen. Da man das nicht innerhalb einer Benutzergruppe machen kann, hab ich das auch über 2 Gruppen versucht, aber das funktioniert immernoch nicht.
    Grüße
    thepixture

  5. #5
    Contao-Nutzer
    Registriert seit
    28.03.2010.
    Ort
    Tübingen
    Beiträge
    115

    Standard funktioniert das immer noch nicht?

    Jetzt hole ich mal diese (Thread-)Leiche aus dem Keller.

    Ich habe gerade zum ersten Mal ein Multi-Domain Projekt mit Contao umgesetzt (Contao 3.1.4). Während ich bisher seltenst differenzierte Benutzerrechte benötigt habe, habe ich es jetzt mit verschiedenen Länder-Abteilungen einer Firma zu tun und benötige dementsprechend eine granulare Rechteverwaltung. Auf einige Ordner darf nur lesend zugegriffen werden. Daneben gibt es für jedes Land einen eigenen Ordner mit Schreibzugriff.

    Da wir in Contao 3 inzwischen die datenbank-basierte Dateiverwaltung haben, hatte ich die Rechteverwaltung bei den Ordner-Eigenschaften vermutet. Nun, das geht (bisher?) nicht, obwohl es für mich der logische und einfachste Ansatz wäre.
    Dann bin ich hier im Forum über den Tipp mit den verschiedenen Benutzergruppen gestoßen. Also habe ich eine Gruppe mit dezidierten Rechten für pagemounts und Schreibrechten für bestimmte filemounts angelegt. Dazu gibt es eine Gruppe, die nur lesenden Zugriff auf weitere Ordner hat.
    Leider musste ich feststellen, dass die Dateirechte nicht auf filemount Ebene, sondern pauschal vergeben werden. Gebe ich also der Gruppe "alle Nutzer" Lesezugriff auf bestimmte Ordner, wird das durch die Schreibrechte der spezifischen Nutzergruppe "Webseite Land A" erweitert und somit können alle Nutzer schreibend (und vor allem löschend) auf die allgemeinen Ordner zugreifen.

    Gibt es wirklich keine Lösung dafür? Das wäre wirklich ein großes Manko. Für eine Multi-Domain Umgebung gehört das zu den selbstverständlichen Anforderungen.

  6. #6
    Contao-Nutzer
    Registriert seit
    14.03.2012.
    Ort
    Berlin
    Beiträge
    225

    Standard

    Hi,

    ich stand mal vor dem gleichen Problem. Direkt scheint es nicht zu funktionieren, weshalb vllt mal ein Feature Request gemacht werden sollte, damit man die Rechte pro Ordner definieren kann.
    Leider scheinen im DC_File/DC_Folder nicht alle Callbacks zu funktionieren, wie es bei der DC_Table der Fall ist.

    Ich habe daher die tl_files wie folgt erweitert:
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_files']['config']['onload_callback'][] = array('meineKlasse''checkPermission');
    $GLOBALS['TL_DCA']['tl_files']['list']['operations']['edit']['button_callback'] = array('meineKlasse''editFile');
    $GLOBALS['TL_DCA']['tl_files']['list']['operations']['cut']['button_callback'] = array('meineKlasse''cutFile');
    $GLOBALS['TL_DCA']['tl_files']['list']['operations']['delete']['button_callback'] = array('meineKlasse''deleteFile');

    class 
    meineKlasse extends Backend
    {

        public function 
    checkPermission()
        {

            if (
    $this->User->isAdmin)
            {
                return;
            }

            if (
    Input::get('act') == 'edit' && $this->isPublicDir(Input::get('id')))
            {
                
    Message::addError('No permissions to manipulate public files!');
                \
    Controller::redirect($this->getReferer());
            }

            if (
    Input::get('act') == 'delete' && $this->isPublicDir(Input::get('id')))
            {
                
    Message::addError('No permissions to delete public files!');
                \
    Controller::redirect($this->getReferer());
            }

            if (
    Input::get('act') == 'paste' && Input::get('mode') == 'cut' && $this->isPublicDir(Input::get('id')))
            {
                
    Message::addError('No permissions to move public files!');
                \
    Controller::redirect($this->getReferer());
            }

            if (
    Input::get('act') == 'move' && Input::get('mode') == && $this->isPublicDir(Input::get('pid')))
            {
                
    Message::addError('No permissions to create files in public directories!');
                \
    Controller::redirect($this->getReferer());
            }
            if (
    Input::get('act') == 'cut' && Input::get('mode') == && $this->isPublicDir(Input::get('pid')))
            {
                
    Message::addError('No permissions to move files into public directories!');
                \
    Controller::redirect($this->getReferer());
            }
            if (
    Input::get('act') == 'copy' && Input::get('mode') == && $this->isPublicDir(Input::get('pid')))
            {
                
    Message::addError('No permissions to copy files into public directories!');
                \
    Controller::redirect($this->getReferer());
            }
          }

    public function 
    editFile($row$href$label$title$icon$attributes)
        {
            return (
    $this->User->isAdmin || ($this->User->hasAccess('f2''fop') && !$this->isPublicDir($row['id']))) ? '<a href="'.$this->addToUrl($href.'&amp;id='.$row['id']).'" title="'.specialchars($title).'"'.$attributes.'>'.Image::getHtml($icon$label).'</a> ' Image::getHtml(preg_replace('/\.gif$/i''_.gif'$icon)).' ';


        }

        public function 
    deleteFile($row$href$label$title$icon$attributes)
        {
            if (
    is_dir(TL_ROOT '/' $row['id']) && count(scan(TL_ROOT '/' $row['id'])) > 0//folder
            
    {
                return (
    $this->User->isAdmin || ($this->User->hasAccess('f4''fop') && !$this->isPublicDir($row['id']))) ? '<a href="'.$this->addToUrl($href.'&amp;id='.$row['id']).'" title="'.specialchars($title).'"'.$attributes.'>'.Image::getHtml($icon$label).'</a> ' Image::getHtml(preg_replace('/\.gif$/i''_.gif'$icon)).' ';
            }
            else
            {
                return (
    $this->User->isAdmin || (!$this->isPublicDir($row['id']) && ($this->User->hasAccess('f3''fop') || $this->User->hasAccess('f4''fop')))) ? '<a href="'.$this->addToUrl($href.'&amp;id='.$row['id']).'" title="'.specialchars($title).'"'.$attributes.'>'.Image::getHtml($icon$label).'</a> ' Image::getHtml(preg_replace('/\.gif$/i''_.gif'$icon)).' ';
            }
        }


        public function 
    cutFile($row$href$label$title$icon$attributes)
        {
            return (
    $this->User->isAdmin || ($this->User->hasAccess('f2''fop') && !$this->isPublicDir($row['id']))) ? '<a href="'.$this->addToUrl($href.'&amp;id='.$row['id']).'" title="'.specialchars($title).'"'.$attributes.'>'.Image::getHtml($icon$label).'</a> ' Image::getHtml(preg_replace('/\.gif$/i''_.gif'$icon)).' ';
        }

            public function 
    isPublicDir($path)
        {
            
    $strPublicFolder 'files/project/public'//public folder
            
    $intPublicFolder strlen($strPublicFolder);
            if( 
    substr($path0$intPublicFolder) == $strPublicFolder )
            {
                return 
    true;
            }
            return 
    false;
        }



Aktive Benutzer

Aktive Benutzer

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

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 26.10.2010, 14:25
  2. Benutzerrechte einschränken
    Von Schwammakobf im Forum Benutzer/-gruppen
    Antworten: 2
    Letzter Beitrag: 01.07.2010, 13:26
  3. Einschränken/Filtern der Datensätze
    Von aklinke im Forum Benutzer/-gruppen
    Antworten: 1
    Letzter Beitrag: 29.06.2010, 19:12
  4. FE Dateiupload - Ordner Auswahl
    Von wiese im Forum Bilder/Dateien
    Antworten: 0
    Letzter Beitrag: 22.06.2010, 10:28
  5. Inhaltselemente einschränken
    Von adi im Forum Allgemeine Inhaltselemente
    Antworten: 2
    Letzter Beitrag: 28.07.2009, 16:51

Lesezeichen

Lesezeichen

Berechtigungen

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