2016-04-25 23 views
0

In meinem CMS verwende ich Zizaco/entrust/ als ACL-Manager und laravel-elfinder als Datei-Manager und Uploader.spezifischen Upload-Ordner basierend auf Benutzerrolle erstellen und den Zugriff auf andere Ordner in Laravel Elfinder

Beide funktionieren gut und haben kein Problem.

Jetzt möchte ich den Zugang von Benutzern zu begrenzen, die Rollen und Berechtigungen auf Ordner angegeben haben, dass sie elfinder verwalten laden oder Listendateien.

global in elfinder Konfigurationsdatei, können wir die dir wo zum Speichern der Bilder (im Verhältnis von Öffentlichkeit) gesetzt wie folgt aus:

return array(
    'dir' => ['upload'] 
); 

In diesem Fall Alle Benutzer mit irgendwelchen Rollen darauf zugreifen können und laden oder andere Commom-Dateioperationen.

Aber ich möchte, nach der Benutzeranmeldung, wenn er elfinder will, kann nur Zugriff auf denselben Namen wie ihre Benutzernamen in Ordner und er kann sehen, oder Zugriff auf andere Benutzerordner nicht.

ist es möglich? Wenn ja, bitte führe mich.

+1

Das Stück Code ist von Laravel Config? Wenn ja, (nicht 100% gutes Vorgehen). Sie können diese Konfiguration jedoch für jeden Benutzer in Middleware ändern. Wie 'if ($ user-> admin) {Config :: set ('dir', 'admin_folder')}' aber nach wie vor, wie ich weiß Elfinder Dateien in öffentlichen speichert, so dass, wenn sie jetzt url sie darauf zugreifen können, so Sie müssen sie irgendwo im Speicher speichern und einen Controller erstellen, der basierend auf Permission Dateien anzeigt. – Froxz

+0

Das ist von Elfinder Konfigurationsdatei. siehe unter: https://github.com/barryvdh/laravel-elfinder/blob/master/config/elfinder.php#L13.natürlich mit deiner Anleitung könnte ich das Problem lösen, dass ich es als Antwort gepostet habe. –

Antwort

1

Nach @Froxz Führung, konnte ich das Problem wie folgt lösen:

In Middleware, die mit CMS nur Benutzer admin Arbeit ermöglichen, schrieb ich:

$username = Auth::user()->username; 

if (!File::exists(public_path('upload').'/'.$username)) { 
    File::makeDirectory(public_path('upload').'/'.$username,0775); 
} 
Config::set('elfinder.dir',["upload/$username"]); 

Zuerst habe ich erstellt ein Verzeichnis gleichen Benutzernamen von Benutzer, dann setze dir Option von Elfinder-Konfiguration auf diesen Ordnerpfad.

Verwandte Themen