Berechtigung zum Bearbeiten für eine bestimmte Zeit
am 21.07.2014 - 08:08 Uhr in
Der User soll bei der Erstellung eines Nodes festlegen können, innerhalb welcher Zeit andere User diesen Node bearbeiten können.
Dazu gibt es ein Feld Startdatum und ein Feld Enddatum in diesem Inhaltstypen.
Als Steigerung wäre noch interessant, wenn der User auswählen könnte, welcher Rolle diese anderen User angehören müssen, oder sogar, dass nur ganz konkrete User aus einer Liste das dürfen.
Wie lässt sich so etwas realiesieren ?
Ich habe noch kein Modul gefunden, dass eine zeitweise Berechtigung einstellen lässt.
Rules scheint mir nicht geeignet zu sein, weil der Zeitraum nicht vom Erstelldatum abhängen soll.
Irgendwie müsste abgefragt werden, ob dass aktuelle Datum zwischen Start- und Enddatum liegt.
Bin für jede Idee dankbar.
- Anmelden oder Registrieren um Kommentare zu schreiben

das kann rules leisten
am 21.07.2014 - 08:35 Uhr
Ich wüßte keinen anderen Ansatz, außer du willst ein eigenes Modul schreiben.
Hallo, für eine
am 21.07.2014 - 10:05 Uhr
Hallo,
für eine zeitgesteuerte Funktion würde ich einen Cron Job nehmen.
Füge eine Checkbox zu deinem Inhaltstypen zu.
Im Cron Job prüfst Du das Enddatum in der Datenbank und setzt
das Checkbox Feld in der DB entsprechend.
Im hook_form_alter kannst Du vor der Ausgabe der Inhaltstyp Form prüfen
ob das Checkbox Feld gesetzt ist.
Wenn ja dann Redirectest Du nach 403 Forbidden.
Als Steigerung wäre noch interessant, wenn der User auswählen könnte, welcher Rolle diese anderen User angehören müssen, oder sogar, dass nur ganz konkrete User aus einer Liste das dürfen.
Da wäre ich aus Sicherheitsgründen sehr vorsichtig!
MfG
Robert
Schon mal Danke für die
am 21.07.2014 - 21:15 Uhr
Schon mal Danke für die Antworten.
Bei Rules habe ich bereits das Problem, was eigentlich auslösendes Event sein soll.
CronJob würde dauernd ausgeführt werden, obwohl es vielleicht gar nicht nötig ist.
Ich denke, die Richtung eigenes (oder fremdes) Modul ist anzupeilen, also mit einer
function mymodule_access ()
die den aktuellen User und seine Rolle abfragt
die den Inhaltstyp des Nodes abfragt
die den Datums(und Uhrzeit)wert des Feldes Startdatum in diesem Node abfragt
die den Datums(und Uhrzeit)wert des Feldes Enddatum in diesem Node abfragt
die das aktuelle Datum abfragt und vergleicht
und
wenn das aktuelle Datum zwischen Start- und Enddatum liegt
return NODE_ACCESS_ALLOW;
oder wenn nicht
return NODE_ACCESS_IGNORE;
zurückgibt.
Ich habe allerdings keinen Plan, wie ich das mit meinen eher rudimentären PHP-Kenntnissen umsetzen kann.
Bin auch für Hinweise auf andere Module, die mit dem Auslesen und Vergleichen von Datumsfeldern arbeiten, dankbar.
Hi, mymodule_access würde ja
am 21.07.2014 - 23:04 Uhr
Hi,
mymodule_access würde ja bei jedem Node Zugriff ausgeführt
werden, was wohl die deutlich schlechter Wahl wäre, wie ein Cron Job!
Diesen könntest Du ggf. 1x am Tag ausführen lassen.
MfG
natürlich läuft rules nur
am 22.07.2014 - 10:43 Uhr
in Verbindung mit Cron.
Cron ist genau für solche Dinge gedacht.
Er läuft regelmäßig und schaut ob es etwas zu tun gibt.
Wenn due den Cron über einen echten Cronjob aufrufst, wird dieser unabhängig von Besuchern verlässlich ausgeführt.
Dabei können entweder rules überprüft, oder eigene Jobs durchgeführt werden.
Je nach komplexität der Aufgabe kann es sinnvoll sein, dies in einem eigenen Modul zu kapseln, oder eben über Rules zu konfigurieren.