Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 12 Apr 2012, 17:33 
Offline
Lehrling

Registriert: 21 Jan 2010, 10:57
Beiträge: 69
Hallo RoRler,

ich habe vor kurzem das "declarative_authorization"-Gem implementiert und entsprechend eingerichtet und es verrichtet seine Arbeit wie es soll.
Die Benutzer haben entsprechende Rollen, Privilegien sind vergeben und die Permissions sind gesetzt.

Nun habe ich eine weitere Komplexität. Die Benutzer gehören einem Land an und die unterschiedlichen Länder haben bestimmte Produkte, die nur der Benutzer aus dem Land bearbeiten kann. Soweit so gut.
Nun gibt es aber Länder, die ein bestimmtes Attribut haben, und dadurch nur vom Admin veränderbar sein darf. In meiner View setze ich z.B. folgende ein:


<% if permitted_to? :edit, :products %>
<%= xx_link_to_edit product %>
<% end %>

Ab jetzt habe ich irgendwie einen Flock im Kopf. Wie kann ich folgendes irgendwie elegant einbinden:

<% if current_land.is_gesperrt? && current_user.is_admin? %>
# Editieren darf nur der Admin, weil Land gesperrt ist, aber es gibt noch Benutzer aus diesem Land, die die Rolle :content haben, die normalerweise auch editieren dürfen
# Wo packe ich nun den Ausdruck "if permitted_to?" hin, damit der Benutzer mit der Rolle :content nicht dran kommt oder wie kann ich dem User temporär die Rolle :content entziehen.
# Und es soll ja verfügbar sein für Produkte aus einem Land, welches nicht gesperrt ist und Nutzer mit der Rolle :content es editieren dürfen
#
<% end %>

Ich hoffe ich konnte die Problematik einigermaßen rüberbringen wie erwähnt, sehe den Wald vor lauter Bäume nicht und bin für alle Impulse sehr dankbar.


BG

Picard


Zuletzt geändert von Picard am 13 Apr 2012, 13:56, insgesamt 1-mal geändert.

Nach oben
 Profil  
 
BeitragVerfasst: 12 Apr 2012, 17:54 
Offline
Lehrling

Registriert: 21 Jan 2010, 10:57
Beiträge: 69
Habe nun ein kleines Workaround gebastelt, welches zwar funktioniert aber nicht RoR-Like wirkt:

<% if current_land.is_gesperrt? && current_user.is_admin? %>
# Dann zeige nur Admins den Link zum editieren
<% elsif !current_land.gesperrt? %>
<% if permitted_to? :edit, :product %>
# Edit wer darf
<% end %>
<% end %>

Es sieht halt nicht so elegant aus und dummerweise müsste ich dieses Konstrukt ca. an 50 Stellen anpassen.
Für mögliche gekürzte Schreibweisen wäre ich sehr dankbar ;-)

BG

Picard


Nach oben
 Profil  
 
BeitragVerfasst: 13 Apr 2012, 13:56 
Offline
Lehrling

Registriert: 21 Jan 2010, 10:57
Beiträge: 69
Hat sich erledigt. Habe mir die API noch mal genauer angeschaut und konnte mit etwas Mühe erweiterte Komplexität der Permission-Matrix doch noch abbilden.

BG


Picard


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
cron