Skip to content
This repository has been archived by the owner on Nov 3, 2023. It is now read-only.

Rechte beim Vergleich der Versionierung #5220

Closed
dmolineus opened this issue Jan 7, 2013 · 9 comments
Closed

Rechte beim Vergleich der Versionierung #5220

dmolineus opened this issue Jan 7, 2013 · 9 comments

Comments

@dmolineus
Copy link
Contributor

Weiter geht es mit der Versionierung. Fehler treten auch beim Vergleich auf.

  1. Der Vergleich wird nur für Versionen des aktuellen Benutzers ermöglicht. Allerdings kann ein Nutzer alle Versionen wiederherstellen. Darin ist ein Widerspruch. Wenn ein Nutzer Zugriff auf ein Element hat, sollte er IMHO auch alle Versionen miteinander vergleichen können, um diese ggf. wiederherzustellen. Beispielsweise erstellt der Benutzer eine neue Version, die alte war von einem anderen Nutzer. So hat er keine Möglichkeit sich die Unterschiede anzeigen zu lassen.
  2. Dadurch dass die Versionen nach Nutzer gefiltert werden, kann es passieren, dass der Index der ausgewählten Version nicht übereinstimmt. Das Array der Versionen basiert auf der ID, sodass $intIndex=0 nie geben wird.

Getestet mit Contao 3.

@leofeyer
Copy link
Member

Behoben in 5fb04eb8e4819e0f029f7e89828198e5b5520d52. Die Limitierung darf natürlich nur auf der Startseite erfolgen, weil man da nicht bei jedem Element die Zugriffsrechte prüfen kann. Im Auswahlmenü des Elements jedoch schon.

@leofeyer
Copy link
Member

Wobei das so auch nicht geht, denn jetzt kann jeder über die diff.php die Versionen jedes beliebigen Elements einsehen :(

@contao/workgroup-core

@aschempp
Copy link
Member

Prüfen ob der Benutzer auf eine entsprechende Tabelle Zugriff hat, dürfte machbar sein.
Die URL müsste wohl so aussehen: contao/diff.php?do=article&table=content&id=7

Dann liesse sich das entsprechende Modul, der Zugriff auf die Tabelle und den entsprechenden Datensatz prüfen. Offen wäre die Frage, ob der onload_callback ausgeführt werden sollte (für weitere Berechtigungsprüfungen).

Gleichzeitig darf der Diff eigentlich auch nur Unterscheide von Feldern anzeigen, welche der Benutzer gemäss Backend-Richtlinien sehen darf.

@aschempp
Copy link
Member

Vielleicht sollte sich sogar der DC_Table darum kümmern? Der weis nämlich auch gleich ob es Versionen der Tabellen gibt etc.

contao/diff.php?do=article&table=content&act=diff&id=7

@leofeyer
Copy link
Member

Die sauberste und flexibelste Lösung wäre meines Erachtens nach die Erweiterung der User-Klassen um Methoden a la

  • BackendUser::hasAccessToElement()
  • BackendUser::hasAccessToModule()
  • BackendUser::hasAccessToNewsArchive()
  • BackendUser::hasAccessToNews()

Das ganze könnte man auch für den Frontend-Benutzer implementieren und sich dadurch die umstrittene Ajax-Erweiterung sparen ;)

@aschempp
Copy link
Member

Funktioniert aber nur für Core-Module. Und wie willst du prüfen ob das Modul auf einer Seite eingebettet ist?

@leofeyer
Copy link
Member

Das müssen wir nicht, denn Module haben eigene Zugriffsrechte. Du spielst auf den Fall an, dass jemand ein Modul nicht schützt aber es nur auf einer geschützten Seite einbindet?

@aschempp
Copy link
Member

Genau. Das mache ich immer so...

@leofeyer
Copy link
Member

Behoben in 1b04a70.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants