2016-05-11 12 views
0

Wenn wir ein Intranet erstellen, möchten wir, dass Benutzer Bilder für ihre eigenen Dokumente hochladen können (zB Nachrichten, Blogeinträge usw.). Der Zugriff auf Medien scheint es Benutzern jedoch auch zu ermöglichen, Bilder auf vorhandenen Medien zu ersetzen.Umbraco 7 protect images

Daher könnten sie vermutlich Möbel (z. B. Site-Logo usw.) ersetzen, da diese alle im Medienordner sein würden.

Ich verstehe, dass Benutzer einen Startordner für den Medienbaum (ähnlich wie bei der Bearbeitung von Dokumenten) gegeben werden können, jedoch würde dies bedeuten jeden einzelnen Benutzer zu bearbeiten, um ihren Ausgangspunkt zu setzen, da es nicht zu sein scheint jede Möglichkeit, dies massenweise zu tun, zB durch Rollen oder Benutzergruppierung.

Gibt es eine andere Lösung, zB das Speichern von Möbeln auf eine andere Art und Weise, so dass nur Administratoren sie bearbeiten können?

Antwort

0

Soweit ich weiß, gibt es keine Möglichkeit, Medienelementen oder Ordnern tatsächliche Rechte zuzuweisen.

Aber eigentlich, wenn Sie einen sicheren Weg, zu wissen, haben die Knoten zuweisen Ausgang Benutzer, die, ist es nicht so heikel, es zu tun programmatisch:

var userService = UmbracoContext.Current.Application.Services.UserService; 
var mediaService = UmbracoContext.Current.Application.Services.MediaService; 
int total; 

foreach (var user in userService.GetAll(0, 1000, out total)) 
{ 
    int targetMediaId = 0; 

    switch(user.UserType.Id) 
    { 
     case 123: 
      targetMediaId = 3; 
      break; 
     case 234: 
      targetMediaId = 5; 
      break; 
    } 
    user.StartMediaId = targetMediaId; 

    userService.Save(user); 
} 

I Usertype als Beispiel verwendet habe wie du wissen würdest, was du wem zuordnen solltest, da ich nicht weiß, wie du es am Ende erzählen wirst. Im Prinzip könntest du "einfach" so weit gehen, wie ich nicht weiß, einen Medienordner pro Benutzer erstellen und ihn als ihren Startmedienknoten zuweisen.

+0

Hört sich gut an - Wohin geht dieser Code? – YesGenesisCamel

+0

Es kann grundsätzlich überall hingehen. Sie können es in eine ApplicationEventHandler-Klasse einfügen, damit es beim Start ausgeführt wird. Denken Sie jedoch daran, es wieder zu entfernen, damit es nach jedem Start nicht mehr ausgeführt wird. Oder fügen Sie ein Teilansichts-Makro ein, fügen Sie es auf einer Seite ein und besuchen Sie die Seite EINMAL. Das Beispiel ist für eine einmalige Ausführung gedacht, aber Sie könnten etwas Ähnliches in ein UserService.SavingUser-Ereignis (ich glaube, das ist der Name) einhängen, so dass jeder neue Benutzer einen Startknoten beim Erstellen hat. –

+0

Danke, Jannik, aber da ich neu bin weiß ich nicht wo der Code sitzt. Du hast mich vorher auf App_Code für das Front-End-Coding hingewiesen, aber was ist mit Back-Office-Sachen - wo sitzt das physisch, also die .cs-Datei? – YesGenesisCamel

Verwandte Themen