Gruppenberechtigung

Du hast Probleme beim Einbau oder bei der Benutzung eines Mods? In diesem Forum bist du richtig.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Karsten A
Mitglied
Beiträge: 98
Registriert: 03.03.2005 21:07
Kontaktdaten:

Gruppenberechtigung

Beitrag von Karsten A »

Schön guten Tag,

Ich habe mal den folgenden Code getestet und funktioniert auch.
Ich würde den aber gern soweit ändern, dass nicht nur Moderatoren und Admins antworten können, sondern auch eine bestimmte Gruppe.


Vielen Dank

Karsten
Zuletzt geändert von Karsten A am 13.10.2007 11:53, insgesamt 1-mal geändert.
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Du hast ja hier bereits mit einer neuen Berechtigungsstufe gearbeitet. Die Gruppenberechtigung kannst du ähnlich mit einer neuen Gruppenberechtigung realisieren. Hierzu fügst du in die phpbb_auth_access und die phpbb_forums eine neue Spalte ein, z.b. mit dem Namen "auth_reply_self_topics" und verwendest diese dann. (Nicht vergessen die neue Berechtigung in der constant.php und der auth.php einzufügen!)
Wenn du diese erstellt hast kannst du durch setzen oder löschen dieser Berechtigung das Verhalten steuern, wenn du das auch entsprechend in der posting.php einbaust. Hierzu müsste es dann reichen wenn nach dieser Zeile:

Code: Alles auswählen

$is_auth = auth(AUTH_ALL, $forum_id, $userdata, $post_info);
sowas wie das hier kommt:

Code: Alles auswählen

if(($mode == 'reply' || $mode == 'quote') && $is_auth['auth_reply_self_topics'])
{
//Prüfen ob in diesem Forum Antworten auf eigene Posts erlaubt ist:
if($post_info['auth_reply'] == AUTH_SELF)
{
$is_auth['auth_reply'] = true;
}
}
Zuletzt geändert von gn#36 am 29.08.2007 11:49, insgesamt 1-mal geändert.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Karsten A
Mitglied
Beiträge: 98
Registriert: 03.03.2005 21:07
Kontaktdaten:

Beitrag von Karsten A »

Hallo,

danke.
Ich habe diesen Code nur so gefunden, also nicht erarbeitet und verstehe jetzt leider nicht, was ich machen müßte.

So wie es jetzt ist, kann der Threadersteller seinen Thread sehen und Moderatoren bzw. Admin.
Alle anderen Themen in dem entsprechenden Unterforum können nur die Mods und der Admin sehen.
Das ist auch ok so, nur möchte ich bestimmten Mitgliedern, aslo einer Gruppe, auch erlauben alle Threads zu lesen und auch zu antworten.

Gruß
Karsten
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Ah so. Gut. Dann probieren wir das doch mal...
Ich kenne allerdings den Mod nicht, das folgende basiert daher auf einem "flüchtigen" Blick auf den Mod, ein umfangreiches Backup vorher kann also sicherlich nicht schaden ;)

Führe den folgenden SQL Befehl aus:

Code: Alles auswählen

ALTER TABLE phpbb_forums ADD auth_reply_self_topics tinyint (3) DEFAULT 0;
ALTER TABLE phpbb_forums ADD auth_read_self_topics tinyint (3) DEFAULT 0;
ALTER TABLE phpbb_auth_access ADD auth_reply_self_topics tinyint (1) DEFAULT 0;
ALTER TABLE phpbb_auth_access ADD auth_read_self_topics tinyint (1) DEFAULT 0;
Danach fügst du in der auth.php in das hier:

Code: Alles auswählen

case AUTH_ALL:
			$a_sql = 'a.auth_view, a.auth_read, a.auth_post, a.auth_reply, a.auth_edit, a.auth_delete, a.auth_sticky, a.auth_announce, a.auth_vote, a.auth_pollcreate';
			$auth_fields = array('auth_view', 'auth_read', 'auth_post', 'auth_reply', 'auth_edit', 'auth_delete', 'auth_sticky', 'auth_announce', 'auth_vote', 'auth_pollcreate');
			break;
diese beiden Einträge ein:

Code: Alles auswählen

a.auth_reply_self_topics, a.auth_read_self_topics

Code: Alles auswählen

'auth_reply_self_topics', 'auth_read_self_topics'
Ersteres kommt in der ersten langen Zeile vor das einfache Anführungszeichen und das Semikolon (mit einem Komma davor), das zweite in die Zeile direkt darunter vor die schließende Klammer ganz am Ende.

Wenn du andere zusätzliche Berechtigungen drin haben solltest, dann ist es möglich dass diese Zeilen nicht mehr ganz so aussehen wie oben beschrieben, dennoch einfach alles am Ende einfügen.

Danach die Änderung im Posting oben beschrieben durchführen.

Dann noch in der admin_forumauth.php nach dem hier:

Code: Alles auswählen

$field_names = array(
	'auth_view' => $lang['View'],
	'auth_read' => $lang['Read'],
	'auth_post' => $lang['Post'],
	'auth_reply' => $lang['Reply'],
	'auth_edit' => $lang['Edit'],
	'auth_delete' => $lang['Delete'],
	'auth_sticky' => $lang['Sticky'],
	'auth_announce' => $lang['Announce'], 
	'auth_vote' => $lang['Vote'], 
	'auth_pollcreate' => $lang['Pollcreate']);
	
einfügen:

Code: Alles auswählen

$field_names['auth_read_self_topics'] = "Priv. Themen lesen";
$field_names['auth_reply_self_topics'] = "Priv. Themen beantworten";
$forum_auth_fields[] = 'auth_read_self_topics';
$forum_auth_fields[] = 'auth_reply_self_topics';
Außerdem in der admin_ug_auth.php suchen:

Code: Alles auswählen

$field_names = array(
	'auth_view' => $lang['View'],
	'auth_read' => $lang['Read'],
	'auth_post' => $lang['Post'],
	'auth_reply' => $lang['Reply'],
	'auth_edit' => $lang['Edit'],
	'auth_delete' => $lang['Delete'],
	'auth_sticky' => $lang['Sticky'],
	'auth_announce' => $lang['Announce'], 
	'auth_vote' => $lang['Vote'], 
	'auth_pollcreate' => $lang['Pollcreate']);
Danach einfügen:

Code: Alles auswählen

$field_names['auth_read_self_topics'] = "Priv. Themen lesen";
$field_names['auth_reply_self_topics'] = "Priv. Themen beantworten";
$forum_auth_fields[] = 'auth_read_self_topics';
$forum_auth_fields[] = 'auth_reply_self_topics';
$auth_field_match['auth_read_self_topics'] = AUTH_READ_SELF_TOPICS;
$auth_field_match['auth_reply_self_topics'] = AUTH_REPLY_SELF_TOPICS;
Danach in der constants.php bei den //Auth settings hinzufügen:

Code: Alles auswählen

define('AUTH_READ_SELF_TOPICS', 11);
define('AUTH_REPLY_SELF_TOPICS', 12);
Wichtig: Wenn hier 11 und 12 schon belegt sein sollten, dann wähle beliebige andere Nummern, die noch nicht belegt sind. Mehr als dreistellig sollten sie aber nicht werden, sonst gibt's Probleme mit der Datenbank.

Jetzt sollte zumindest das Erlauben des Antwortens schon mal gehen (lesen weiterhin nicht). Hierzu muss dann bei den Forenberechtigungen eingestellt werden, dass das Forum in dieser Berechtigung Gruppenspezifisch eingeteilt wird.

Um das Leserecht zu vergeben brauche ich zusätzliche Informationen:
Wie sieht die Berechtigungsstruktur derzeit aus? Ist es möglich die Themenübersicht des Forums zu betrachten und dann nur die Beiträge nicht (damit man neue Themen erstellen kann und eigene dann lesen kann)? Verlinke der Einfachheit halber vielleicht einfach mal viewforum.php und viewtopic.php (KB:datei). Bitte das oben auch schon mal ausführen und testen.
Zuletzt geändert von gn#36 am 29.08.2007 11:14, insgesamt 1-mal geändert.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Karsten A
Mitglied
Beiträge: 98
Registriert: 03.03.2005 21:07
Kontaktdaten:

Beitrag von Karsten A »

Guten Morgen,

vielen Dank, dass Du mir hilfst.
ich habe nun die von Dir aufgeführten Änderungen durchgeführt.

Wenn ich nun den Adminbereich aufrufe, kommt in der linken Spalte folgende Fehlermeldung:

Code: Alles auswählen

Parse error: syntax error, unexpected T_DOUBLE_ARROW in admin_ug_auth.php on line 94

Wie sieht die Berechtigungsstruktur derzeit aus? Ist es möglich die Themenübersicht des Forums zu betrachten und dann nur die Beiträge nicht (damit man neue Themen erstellen kann und eigene dann lesen kann)?
Im Endeffeckt geht es nur darum, dass neue Teilnehmer, die sich zwingend im Vorstellungsbereich vorstellen müssen, nur ihre eigenen Threads erstellen und auch nur dort antworten können.
Wenn sie in der Themenübersicht die anderen Vorstellungen sehen, aber nicht lesen können, ist das auch ok.



Dort gibt es einen User Test, der in der Gruppe test drin ist.
Momentan sieht dieser aber nur seine eigenen Beiträge, soll aber, bedingt durch die Gruppenmitgliedschaft auch alle Beiträge im Unterforum "test" sehen und beschreiben können. Das Unterforum "test" ist nur im eingeloggten Zustand sichtbar.

Ein weiterer User Test2 ist Moderator und kann alles schon,was ich gerne der Gruppe erlauben möchte.

Die Zugangsdaten der beiden Testuser habe ich Dir per PN gesendet.

Gruß
Karsten
Zuletzt geändert von Karsten A am 13.10.2007 11:55, insgesamt 1-mal geändert.
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Ok in der admin_ug_auth hat sich ein Flüchtigkeitsfehler eingeschlichen. Ersetze

Code: Alles auswählen

$auth_field_match['auth_read_self_topics'] => AUTH_READ_SELF_TOPICS;
$auth_field_match['auth_reply_self_topics'] => AUTH_REPLY_SELF_TOPICS;
durch

Code: Alles auswählen

$auth_field_match['auth_read_self_topics'] = AUTH_READ_SELF_TOPICS;
$auth_field_match['auth_reply_self_topics'] = AUTH_REPLY_SELF_TOPICS;
Die übrigen Dinge schaue ich mir an sobald der Teil mit den Berechtigungen läuft. Hierzu musst du dann zum Testen erst mal temporär deinem Testuser generelle Leserechte geben, die Antwortmöglichkeit aber auf eigene Themen stellen (dann sollte der User ja erst einmal nur auf eigene Themen antworten können). Danach gibst du ihm dann über die Gruppe das Recht, auch auf fremde Themen zu antworten und schaust ob das so klappt wie vorgestellt.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Karsten A
Mitglied
Beiträge: 98
Registriert: 03.03.2005 21:07
Kontaktdaten:

Beitrag von Karsten A »

Guten Morgen,

das mit der Änderung in der admin_ug_auth ist jetzt ok.
Die übrigen Dinge schaue ich mir an sobald der Teil mit den Berechtigungen läuft. Hierzu musst du dann zum Testen erst mal temporär deinem Testuser generelle Leserechte geben, die Antwortmöglichkeit aber auf eigene Themen stellen (dann sollte der User ja erst einmal nur auf eigene Themen antworten können). Danach gibst du ihm dann über die Gruppe das Recht, auch auf fremde Themen zu antworten und schaust ob das so klappt wie vorgestellt.
Die Berechtigen sind jetzt so, wie der Mod es machen soll.
Registrierte können nur ihre eigenen Beiträge lesen und antworten.
Moderatoren können alle Beiträge lesen und antworten.
Die Gruppe kann leider auch nur das, was Registrierte können.

Bei den Gruppenbefügnissen kann mal leider keine Antwort ermöglichen, wenn bei den den Forenbefugnissen die Antwortmöglichkeit auf "self" steht.
Stelle ich die Forenbefugnisse auf "reg", ist alles, wie ohne die neuen Berechtigungen und bei "privat" das Gleiche.

Gruß
Karsten
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

So ich habe das jetzt auch mal getestet. Kleine Änderung an den bestehenden Änderungen sollte es ermöglichen dass man die Berechtigung "auf fremde Themen antworten" vergeben kann:

Code: Alles auswählen

if(($mode == 'reply' || $mode == 'quote') && $is_auth['auth_reply_self_topics'])
anstelle von

Code: Alles auswählen

if(($mode == 'reply' || $mode == 'quote') && !$is_auth['auth_reply'] && $is_auth['auth_reply_self_topics']) 
Außerdem brauchst du in der viewforum.php und in der viewtopic.php jeweils nach diesem code:

Code: Alles auswählen

$is_auth = auth(AUTH_ALL, $forum_id, $userdata, $forum_row);
bzw.

Code: Alles auswählen

$is_auth = auth(AUTH_ALL, $forum_id, $userdata, $forum_topic_data);
zusätzlich eingefügt das hier:

Code: Alles auswählen

if( $is_auth['auth_read_self_topics'] )
{
$is_auth['auth_read'] = true;
}
Bei mir im Testboard hat es danach einwandfrei funktioniert.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Karsten A
Mitglied
Beiträge: 98
Registriert: 03.03.2005 21:07
Kontaktdaten:

Beitrag von Karsten A »

Hallo,

ich habe das nun alles drin, aber bei den Befugnissen, weder bei den Gruppen , noch bei den Benutzern läßt sich die Erlaubnis erteilen, dass jemand in dem Unterforum antworten kann??

Gruß
Karsten
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Dann hast du vielleicht beim Einbau was falsch gemacht, denn bei mir klappt es genau so:
In einem Forum, in dem User nur auf eigene Posts antworten können sollen und auch nur eigene Themen sehen können sollen stellst du die Foren-Berechtigungen für lesen und antworten auf SELF. Zusätzlich musst du die Berechtigungen für "Priv. Themen lesen" und "Priv. Themen beantworten" auf PRIVATE stellen, so dass du dieses Recht in den Gruppenberechtigungen erteilen kannst.
Danach musst du nur noch die Gruppenrechte in diesen beiden Dingen setzen (und zwar manuell in der erweiterten Ansicht). Danach sollte das eigentlich funktionieren.
Da ich das Rechtesystem nicht völlig umkrempeln wollte ist das ganze ein neues Recht geworden und nicht mehr das übliche Recht "darf Antworten". Hier dürfte sich eigentlich keine Auswahlbox finden, da dieses Recht ja nicht auf Privat gestellt wurde, genauso beim Lesen.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Antworten

Zurück zu „phpBB 2.0: Mod Support“