Benutzer in Wordpress 2.0

Ryan Boren, ein Entwickler von WordPress, hat in einem Artikel (engl.) einmal genauer erläutert, wie die neuen Benutzerlevels in Zukunft eingesetzt werden. Ich fand diesen Artikel interessant, so dass ich mich mal hingesetzt und das ganze Geraffel übersetzt habe:
Einer, der am meisten kritisierten Aspekte bei WordPress ist das System, mit dem die Benutzerrechte geregelt werden. Bei den Versionen 1.5.x und früher, geschieht das über Benutzer-Level. Jedem Benutzer ist hier ein Level zwischen 0 und 10 zugeordnet, wobei 10 die vollen administrativen Rechte, und Null praktisch keine Befugnisse hat. Die Level sind ausserdem hierarchisch. Der Benutzer eines höheren Levels kann die Beiträge eines Benutzers eines niedrigeren Levels bearbeiten. Das hört sich nach einem guten und einfachen Schema an, aber in der Praxis sorgt es doch für eine Menge Durcheinander. Die mit einem Level verbunden Privilegien sind nämlich alles andere als klar. Was ist der Unterschied zwischen Level Zehn und Level fünf? Wer kann hier wen bearbeiten? Kann ein Level fünf ein anderen Level fünf bearbeiten? Was genau kann jede der elf Level tun?
Für die 2.0er Version haben wir entschieden, dass dieses System einer Überholung bedarf. Nachdem wir einmal nachgeschaut haben, wie andere Weblog- und CMS Applikationen mit den Rechten umgehen, haben wir uns für ein Modell mit Rollen und Befugnissen entschieden. Nach einer Diskussion über den Ablauf, den wir etablieren wollten, begannen wir mit der Kreation von fünf Rollen: Registrierter Leser, Mitarbeiter, Autor, Herausgeber und Administrator. Jede dieser Rollen hat eine Sammlung von verknüpften Befugnissen. Ein registrierter Leser hat sehr begrenzte Befugnisse. Er kann den Tellerrand sehen und sein eigenes Profil bearbeiten. Das ist alles. Ein Mitarbeiter darf Entwürfe herstellen, diese aber nicht veröffentlichen. Ein Autor kann Beiträge veröffentlichen. Ein Herausgeber kann nicht nur die Beiträge anderer bearbeiten, sondern darf auch Kategorien, Linklisten, Kommentare und statische Seiten verwalten. Ein Administrator kann alles machen. Er kann die Themes “umschalten”, Plugins aktivieren, Dateien bearbeiten und Importer einsetzen.
Obwohl diese Rollen hierarchisch zu sein scheinen, sind sie es nicht. Jede Rolle ist einfach nur eine Sammlung von Befugnissen. Die Rollen der Herausgeber und Administratoren haben jetzt auch die Befugnis, Beiträge zu bearbeiten, die nicht von ihnen sind. Sie dürfen in sämtliche Beiträge des Blogs eingreifen. Auch in die, der eigenen Rollen. Für diejenigen, die noch die alte Level-Hierarchie gewohnt sind, mag es merkwürdig sein, Herausgebern und Administratoren das Bearbeiten von Beiträgen zu erlauben. Die Hierarchien zu vermeiden war jedenfalls eine wegweisende Entscheidung. Man hat jetzt entweder die Befugnis andere Beiträge zu bearbeiten, oder nicht. Wir versuchen es einfach zu halten.
Benutzer können eine, oder mehrere Rollen haben und individuelle Befugnisse bekommen, die ihnen auch ausserhalb des Contextes ihrer Rolle zugeordnet werden können. In der Standardeinstellung ist zunächst lediglich eine Rolle für jeden Benutzer vorgesehen. Man wählt eine der fünf Rollen für den Benutzer aus und voilá, das war es dann auch schon. Man kann weder mehrere Rollen vergeben, noch individuelle Befugnisse den Benutzern erteilen.
Es ist eine zweckmäßige Entscheidung mit der Intention die Dinge einfach zu halten. Die Möglichkeit weiterführende Rollen und Befugnisse zu verwalten, wird durch ein Plugin zur Verfügung gestellt werden.
Derzeit sind etwa zwanzig Befugnisse definiert. Im Quelltext sind Befugnisse einfach nur Schlüsselwörter, die Benutzern und Rollen zugewiesen werden können.
Hier nun unser komplette Sammlung an Befugnissen.
- switch_themes
- edit_themes
- activate_plugins
- edit_plugins
- edit_users
- edit_files
- manage_options
- moderate_comments
- manage_categories
- manage_links
- upload_files
- import
- unfiltered_html
- edit_posts
- edit_others_posts
- edit_published_posts
- publish_posts
- edit_pages
- read
Um mit dem bisherigen Benutzerlevel-System kompatibel zu sein, haben wir Befugnisse, die mit den früheren Levels korrespondieren: level_0, level_1, … , level_10.
Ein registrierter Leser hat die level_0 Befugnisse.
Ein Mitarbeiter hat die von level_0 und level_1.
Der Autor wiederum hat die Befugnisse der level_0, level_1, und level_2.
Ein Herausgeber ist mit den Befugnissen von level_0 bis level_7 ausgestattet und
die Befugnisse des Administrators reichen von level_0 bis level_10.
Beim Upgrade von früheren WP-Versionen bekommen alle Benutzer Rollen, die ihren früheren Benutzerleveln entsprechen. Ein Level-7 Benutzer bekommt beispielsweise die Rolle eines Herausgebers.
Für Plugin Autoren ist ein API erhältlich, um Rollen und Befugnisse abrufen und verändern zu können. Ein Plugin kann eine neue Befugnis mit dem Namen “do_foo” herstellen, die dem Administrator mit dem folgenden Code zugeordnet wird:
$role = get_role('administrator');
$role->add_cap('do_foo');
Um herauszufinden, ob der derzeitige Benutzer überhaupt diese Befugnis besitzt, können sich Plugins der current_user_can() Funktion bedienen:
if ( current_user_can('do_foo') ) ...
Um die Befugnisse einer bestimmten Benutzer-ID herauszufinden erstellt man ein WP_User Objekt:
$user_id = 1;
$user = new WP_User($user_id);
if ( $user->has_cap('do_foo') ) ...
Wenn eine völlig neue Rolle erstellt werden soll, kann man das mit add_role() und add_cap() realisieren.
$role = add_role('foo_doer', 'Foo Doer');
$role->add_cap('do_foo');
$role->add_cap('do_bar');
Soviel zu den Grundlagen. Für die komplette API gehe zu der Datei capabilities.php
Am meisten wird bei der API current_user_can() benutzt. Wann immer du bestimmen möchtest, was der angemeldete Benutzer machen darf, benutze current_user_can().
Für weitere Informationen zu den Rollen und Befugnissen, gehe zu Owens Übersicht. Wenn Du ein Plugin Autor bist und Fragen zur API und mehr hast, besuche die Hackers List und wenn Du ein Benutzer bist, der sich gerade fragt, was das alles zu bedeuten hat, besuche die Support Foren.
Ein Kommentar von: Frank | 7. Dezember 2005 | 08:12 Uhr
Hallo und herzlichen Dank für diesen Übersetzungsservice. Wirklich ein interessantes neues Feature, die in einigen Zügen schon fast der Rollenvergabe im SAP nahe kommt. Freue mich auf die neue Version WP 2.0.
LG Frank
Ein Kommentar von: Frank | 7. Dezember 2005 | 08:14 Uhr
PS (nur am rande): Dein SPAM-Schutz mit Captcha finde ich nicht so gelungen, da ich nicht auf deine Seite zurück kommen - habe JS abgeschaltet. Gibt es da nicht eine benutzerfreundlichere Variante, z.B. hashcash.
Ein Pingback von: WordPresser.net » Wordpress 2.0 - Benutzerrechte | 7. Dezember 2005 | 18:49 Uhr
[...] Wordpress 2.0 wirft bereits Schatten voraus, Mathias hat sich die Neuerungen bei den Benutzerrechten mal genau angeschaut: Einer, der am meisten kritisierten Aspekte bei WordPress ist das System, mit dem die Benutzerrechte geregelt werden. Bei den Versionen 1.5.x und früher, geschieht das über Benutzer-Level. Jedem Benutzer ist hier ein Level zwischen 0 und 10 zugeordnet, wobei 10 die vollen administrativen Rechte, und Null praktisch keine Befugnisse hat. Die Level sind ausserdem hierarchisch. Lies den ganzen Beitrag bei Kylaloo « SeaMonkey, Firefox, Flock & IE [...]
Ein Kommentar von: roland | 9. Dezember 2005 | 02:47 Uhr
ist tatsächlich mir das wichtigste neue feature (ich überlege aber immer noch auf drupal umzusteigen), ich hatte übrigens im wordpress-forum eine diskussion darum auch mal gestartet. falls es dich interessiert:
http://wordpress.org/support/topic/50834
(kannste auch wieder löschen, wenn du so verlinkungen jetzt doof findest
)
Ein Kommentar von: Mathias | 9. Dezember 2005 | 18:07 Uhr
@Frank
Sorry - ich verstehe nicht ganz, was Du meinst. Also Captcha hatte ich ja mal vor längerer Zeit ausprobiert, bin dann aus den von Dir genannten Gründen zu Hashcash gewechselt und nun versuche ich mir mit Spamkarma2 den Müll vom Hals zu halten. Genaugenommen benutze ich den sogar im Doppelpack mit dem von uns beiden geschätzten WP-Spam Nuke… Da SK2 auch gehörig in die Kaviatur der Datenbank hineingrätscht, finde ich das Plugin auch nicht ganz unproblematisch.
Naja-naja-naja und dann habe ich es vor kurzem in einer Mammutaktion übersetzt. Super Idee. Etwa eine Woche später gab es dann schon die erste Alfa mit Sprachdatei….
@Roland
Nix da - Ich lösch doch keine WordPress links in diesem Blog
Ein Pingback von: Life is Balance (LiB) » Blog Archive » Wordpress 2.0 RC1 | 21. Dezember 2005 | 12:48 Uhr
[...] Perun hat in seinem Blog ein erste kurzes Review zu Wordpress 2 beta 1 geschrieben. Dazu gibt es auch ein paar Schreenshoots vom Backend bei Flickr. Eine englischsprachige umfassende Änderungliste gibts bei Owen Winkler und noch einen ausführlichen (englischen) Bericht bei boren.nu, auch als deutsche Übersetzung bei Kylaloo. [...]
Ein Kommentar von: Weltherrscher | 21. Dezember 2005 | 15:24 Uhr
Endlich mal klare Aussagen zu Wordpress!!
Danke..an dieser Stelle…-))
Weltherrscher
Ein Kommentar von: Frank | 30. Dezember 2005 | 20:17 Uhr
Super Übersetzung Mathias. Das mit den fürchterlichen Benutzerrechten wurde echt Zeit. Hat man für andre eine Wordpressinstallation gemacht, und war selbstverständlich als Admin angemeldet, hat Seiten angelegt … etc. und übergibt dann das ganze, stellt man fest, dass die schon eingerichteten Benutzer nicht mal in den Seiten was ändern können… klar, gibt man Ihnen den Admin-Login gehts, aber das ist ja nicht der Sinn von Benutzerrechten ;))
Ein Pingback von: wp benutzerrechte | Theremin spielen | 14. Juni 2006 | 14:54 Uhr
[...] Benutzer in Wordpress 2.0 [...]
Ein Kommentar von: Johnathan Nathanial | 19. August 2006 | 10:45 Uhr
and then drop the cash into a slot in the table top online university degrees [url=http://www.onlineuniversitieslist.com]online university degrees[/url] Dick wasnt behind the counter a woman of maybe thirty was Marty .
Ein Kommentar von: Jermaine Tayshaun | 19. August 2006 | 10:49 Uhr
old Springtime in Paris dance the article was talking about Beneath online university degrees [url=http://www.onlineuniversitieslist.com]online university degrees[/url] Sure.
Ein Pingback von: Wordpress Benutzerrechte » Gutes von Morgen | 15. November 2006 | 22:52 Uhr
[...] Benutzerrechte heissen in Wordpress “Roles”. Es gibt standardmässig 5 verschiedene Berechtigungsstufen. Für ein Weblog ist das auch ganz gut so. Editieren kann man die Benutzerrechte mit dem Wordpress-Plugin Role Manager. Was beim Einsatz von Wordpress als CMS fehlt, ist die Einschränkung, nur eigene Seiten / Pages bearbeiten zu dürfen. Das geht mit dem Plugin Restrict Page Editing. [...]
Ein Kommentar von: online university degrees | 13. Dezember 2006 | 01:35 Uhr
bachelors degrees somewhat curious They ignored him He reached the cafe and went http://www.webdegrees.us bachelors degrees Professor Brown asks without turning around Marty grins [URL=http://www.webdegrees.us] bachelors degrees[/URL] Onofre Nuclear Power Plant San Onofre California.
Ein Kommentar von: Marcus | 6. Januar 2007 | 02:03 Uhr
Hi,
Kann ich irgendwie einstellen, dass ein registrierter Benutzer einen Artikel schreiben und veröffentlichen darf, der Administrator aber diesen erst genehmigen muss, bevor er öffentlich geht? So wie bei den Kommentaren?
Ein Mitarbeiter darf ja nicht veröffentlichen, sondern sieht die Beiträge nur als Entwurf oder privat.
Ein Autor dagegen darf ohne weiteres veröffentlichen.