Zugriff auf Mitgliederliste nur für Mitglieder von Gruppen

Allgemeiner Support zum phpBB 2 Board und phpBB 2 Modifikationen
Forumsregeln
Auch wenn hier der Support für phpBB 2 weiterhin aufrecht erhalten bleibt, weisen wir darauf hin, dass das phpBB 2 nicht mehr offiziell unterstützt und weiterentwickelt wird!
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Zugriff auf Mitgliederliste nur für Mitglieder von Gruppen

Beitrag von oxpus »

Das nachfolgende Snippet gewährt den Zugang zur Mitgliederliste nur Usern, die einer Benutzergruppe angehören, sowie natürlich den Admins.

Code: Alles auswählen

#
#-----[ OPEN ]-----
#
memberlist.php

#
#-----[ FIND ]-----
#
//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_VIEWMEMBERS);
init_userprefs($userdata);
//
// End session management
//

#
#-----[ AFTER, ADD ]-----
#
$sql = "SELECT count(g.group_id) as total FROM " . GROUPS_TABLE . " g, " . USER_GROUP_TABLE . " ug
	WHERE g.group_id = ug.group_id
		AND ug.user_id = " . $userdata['user_id'] . "
		AND g.group_single_user <> " . TRUE . "
		AND ug.user_pending <> " . TRUE;
if (!$result = $db->sql_query($sql))
{
	message_die(GENERAL_ERROR, 'Could not check group memberships for user', '', __LINE__, __FILE__, $sql);
}

$check = 0;
$row = $db->sql_fetchrow($result);
$check = intval($row['total']);
$db->sql_freeresult($result);

if (($check == 0 && $userdata['user_level'] != ADMIN) || $userdata['user_id'] == ANONYMOUS)
{
	redirect(append_sid("index.$phpEx"));
}


#
#-----[ SAVE/CLOSE ALL FILES ]-----
#
# EoM
Zuletzt geändert von oxpus am Fr 08.Jul, 2005 10:35, insgesamt 3-mal geändert.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
schmidtedv
Beiträge: 607
Registriert: So 13.Feb, 2005 10:46
Wohnort: St. Blasien (seit 01.06)
Kontaktdaten:

Beitrag von schmidtedv »

hm....ich erahne den Sinn dieses Snippets :-)

wie wäre es mit der Option, die Mitgliederliste nach eigenen gruppenzugehörigkeiten zu filtern, also nur die Mitglieder anzuzeigen, die auch in den Gruppen sind? Aber auch hier ist der Sinn eher zu erahnen als das ich jetzt wirklich verwendung dafür fände, hehe
Rettet den Wald, esst mehr Specht!

Forum [ sofern im Beitrag darauf verwiesen :-) ]
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Dafür gibts doch die Benutzergruppenansichten ;)
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
RW

Beitrag von RW »

Hallo allerseits! Hallo oxpus!

Genau vor einem solchen oder ähnlichen Problem stehe ich gerade:
Kurz:
Privates Board, verschiedene Benutzergruppen, unterschiedliche Foren innerhalb für die einzelnen Gruppen (die einen sehen das andere nicht).
Problem:
Memberlist!
Der Benutzer einer Gruppe soll nur die Mitglieder derselben eigenen Gruppe über die Memberliste aufrufen können und die anderen nicht sehen.
(Den Benutzergruppenlink selbst ist nur dem Admin zugänglich.)
Bisher werden aber immer alle angezeigt, also auch die anderer Gruppen.
Sinn und Zweck:
Es sollen mehrere Gruppen von Mitgliedern unterschiedliche Foren sehen, untereinander von anderen Gruppen aber keine Kenntnis haben.
Sozusagen 2in1: 2 Boards in einem

Mal ein Beispiel:
- 1 Board
- 2 Gruppen (Vertreter + Kunden)
- 1mal Forenansicht für Vertreter
- 1mal Forenansicht für Kunden
- Keine Benutzergruppenansicht für Mitglieder, nur für Admin
- Memberlist nur für die Mitglieder der eigenen Gruppe (mit oder ohne Admin)

Nun sollen die Kunden aber nicht mitbekommen, welche Tipps sich die Vertreter untereinander geben, um die "Ware" an den Mann zu bringen

oder ähnliches...


Grüße
RW
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Ah ja.
Dann wäre mein Vorschlag:
Den Link zu den Benutzergruppen lassen, aber nur der ADMIN kann alle Gruppen einsehen, die restlichen Mitglieder nur Ihre Gruppe(n) aufrufen.

Oder anders gesagt:
Beim Aufruf der Benutzergruppen würde der "untere" Teil, also die Gruppenauswahl, in denen der User nicht Mitglied ist, ausgeblendet werden. Nur der Admin sieht diesen Teil.

Wie wäre das?
Hätte den Vorteil, daß ein User auch in mehreren Gruppen sein könnte und sich eben alle diese Gruppen anzeigen lassen kann.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
RW

Beitrag von RW »

Hallo oxpus!

Danke für die Rückmeldung.

Die Idee als solche ist gut, nur möchte ich die Mitglieder nicht darauf stoßen, dass es noch andere Gruppen gibt und wieviele es sind.

Aber das Problem wäre nach wie vor die Mitgliederliste, die wiederum alle Member anzeigt...
Also meine Vorstellung war:
1. Benutzergruppen gibt es nicht (nicht sichtbar für Member)
2. Mitgliederliste zeigt nur Member mit der gleichen Gruppenzugehörigkeit (auch wenn Mitglied in mehreren Gruppen)

Schönen Gruß
RW
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

1. Benutzergruppen gibt es nicht (nicht sichtbar für Member)
Man muss das ja weder "Benutzergruppen" nennen, noch das Layout behalten ;)

Warum ich so darauf harre, ist nunmal die bereits vorhandenen Funktionen, die Mitgliedschaft festzustellen. In der Mitgliederliste wäre das erst einzubauen, um eben die User zu finden.
In der Gruppenverwaltung ist das schon da...
Zuletzt geändert von oxpus am Mi 02.Nov, 2005 08:48, insgesamt 1-mal geändert.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
RW

Beitrag von RW »

...Also mit anderen Worten:

1. Mitgliederliste nur für den Admin
2. Benutzergruppen umbenennen in Mitgliederliste. Darin unteren Teil für andere Gruppen ausblenden..

Wäre auch ne Idee..
Warum einfach, wenn's auch umständlich geht ;)

So rum hab ich das noch nicht gesehen ;)

Danke für den Denkanstoß.

Grüße
RW
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Ja, gern geschehen.
Viel Spaß beim Basteln!
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
RW

Beitrag von RW »

Einen Nachteil hat's allerdings:
Man kann nicht mehr nach verschiedenen Kriterien sortieren.
Und dies mit dem Anmeldedatum und Last Login zu erweitern ist glaube ich etwas komplizierter.

Noch nen Gruß
RW
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
RW

Beitrag von RW »

Das werd ich mir mal anschauen und ausprobieren...

Wenn man einmal mit MODs angefangen hat, scheint mir dies in eine NeverEndingStory auszuarten ;)
RW

Beitrag von RW »

Wobei dieser Code bei mir und in der original groupcp.php (phpbBB2 2.0.17) nicht existiert:

Code: Alles auswählen

	$sql = "SELECT u.username, u.user_id
		FROM " . USERS_TABLE . " u, " . USER_GROUP_TABLE . " ug
		WHERE ug.group_id = $group_id
			AND u.user_id = ug.user_id
			AND ug.user_pending = 0
			AND ug.user_id <> " . $group_moderator['user_id'] . "
		ORDER BY ug.group_moderator DESC, u.username
 		LIMIT $start, ".$board_config['topics_per_page'];
Zuletzt geändert von RW am Mi 02.Nov, 2005 11:31, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Suche nach ähnlicher Abfrage.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
drkmnn666
Beiträge: 388
Registriert: Mi 23.Jan, 2008 17:29

Beitrag von drkmnn666 »

könnte man diesen mod auch für die suche so umbasteln, dass nur mitglieder von gruppen oder einer bestimmten jene benutzen können???
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Klar, wenn Du in der SQL-Anweisung (lauf Post 1 dieses Topics) nach den Zeilen

Code: Alles auswählen

$sql = "SELECT count(g.group_id) as total FROM " . GROUPS_TABLE . " g, " . USER_GROUP_TABLE . " ug
   WHERE g.group_id = ug.group_id
noch die Zeile

Code: Alles auswählen

AND g.group_id = X
einträgst, wobei "X" die ID der gewünschten Usergruppe ist.
Ohne diese Zeilen können nur Mitglieder irgendwelcher Gruppen die Mitgliederliste einstehen. Mit dieser Zeile dann eben nur einer Gruppe.
Sollen es mehrere Gruppen sein (aber eben nicht alle), kann man diese auch so einstellen:

Code: Alles auswählen

AND g.group_id IN (X, Y, Z)
Wobei hier X, Y und Z für jeweils eine Gruppen-ID steht und die Reihe beliebig geändert und erweitert werden kann...

SQL für Anfänger eben.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
drkmnn666
Beiträge: 388
Registriert: Mi 23.Jan, 2008 17:29

Beitrag von drkmnn666 »

alles klar, danke und jetzt mach ich erst mal pause und geh duschen... bis später^^
drkmnn666
Beiträge: 388
Registriert: Mi 23.Jan, 2008 17:29

Beitrag von drkmnn666 »

da dies ja allgemeine gültigkeit besitzt, also die gruppenzugehörigkeit abgefragt wird, brauche ich ja z.b. keine mods mehr, welche gäste daran hindern z.b. die memberliste aufzurufen etc.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

[quote="drkmnn666";p="84643"]da dies ja allgemeine gültigkeit besitzt, also die gruppenzugehörigkeit abgefragt wird, brauche ich ja z.b. keine mods mehr, welche gäste daran hindern z.b. die memberliste aufzurufen etc.[/quote]
So ist es.
Ausser, man will auch unter den reg. Usern einen Einschränkung machen...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
drkmnn666
Beiträge: 388
Registriert: Mi 23.Jan, 2008 17:29

Beitrag von drkmnn666 »

nö, alles klar. regle das über die gruppen. reicht ja aus. bis dann...
drkmnn666
Beiträge: 388
Registriert: Mi 23.Jan, 2008 17:29

Beitrag von drkmnn666 »

jetzt hab ich dazu noch ne frage. also bei der suche, mitgliederliste, gruppenliste funktioniert dies ja perfekt. nun aber zu meiner frage.

bei den profilen kann ich dies ja nicht so ohne weiteres einbauen, da dann, wenn sich jemand registrieren will, da dies auch über die profile geregelt wird, er sich nicht registrieren kann, weil er ja anonymous ist. also müßte ich anonymous der gruppenberechtigung hinzufügen, was ich allerdings nicht möchte, weil gäste sollen keine profile sehen. am liebsten wäre es mir, wenn man die profilseite ganz deaktivieren könnte, weil ich benutze ja, wie du schon mitbekommen hast mittlerweile den alten nickpage-mod.

danke
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Dann baue doch aus der profile.php die Bedingung für $mode == 'viewprofile' aus und die Profilseite ist tot ;)
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
drkmnn666
Beiträge: 388
Registriert: Mi 23.Jan, 2008 17:29

Beitrag von drkmnn666 »

alles klar, danke werd ich gleich mal machen. dachte man darf das nicht, weil man dann zu tief in phpbb eingreift und einiges dann nicht m ehr funktioniert.

danke
drkmnn666
Beiträge: 388
Registriert: Mi 23.Jan, 2008 17:29

Beitrag von drkmnn666 »

mmmhhh, irgendwie wll das bei mir nicht. häng mal die datei an. da ist die profile.php schon nicht so gross. man man man...

Code: Alles auswählen

if ( $mode == 'viewprofile' )
	{
		include($phpbb_root_path . 'includes/usercp_viewprofile.'.$phpEx);
		exit;
	}
	else if ( $mode == 'editprofile' || $mode == 'register' )
	{
		if ( !$userdata['session_logged_in'] && $mode == 'editprofile' )
		{
			redirect(append_sid("login.$phpEx?redirect=profile.$phpEx&mode=editprofile", true));
		}

		include($phpbb_root_path . 'includes/usercp_register.'.$phpEx);
		exit;
	}
	else if ( $mode == 'confirm' )
	{
geht ja um diesen abschnitt, unklar ist mir wie viel ich ausbauen muss, weil entweder hagelt es bei mir fehlermeldungen oder es kann sich kein neuer user registrieren....

[ Attachment gelöscht am Fr 08.Feb, 2008 22:09 von oxpus ]
Zuletzt geändert von drkmnn666 am Fr 08.Feb, 2008 21:34, insgesamt 2-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Der Abschnitt muss nach der "Bereinigung" so aussehen:

Code: Alles auswählen

if ( $mode == 'editprofile' || $mode == 'register' )
{
	if ( !$userdata['session_logged_in'] && $mode == 'editprofile' )
	{
		redirect(append_sid("login.$phpEx?redirect=profile.$phpEx&mode=editprofile", true));
	}

	include($phpbb_root_path . 'includes/usercp_register.'.$phpEx);
	exit;
}
else if ( $mode == 'confirm' )
{
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Antworten