Funktion Integrieren: Externe Seiten Gruppenabhängig machen!

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
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.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
haSta
Mitglied
Beiträge: 5
Registriert: 16.01.2006 22:42

Funktion Integrieren: Externe Seiten Gruppenabhängig machen!

Beitrag von haSta »

Hallo!

Ich würde gerne das Session und AUTH System von phpBB nutzen für weitere Seiten, nun ist es aber so, das ich Admin bin und das eigentlich auch kein anderer sein sollt. Wenn ich nun eine meiner Seiten mit dem Login von phpBB schützen will und ich überprüfe ob der Userstatus == Admin ist funktioniert das auch wunderbar.
Ich würde es aber gerne so realisieren, das wenn ein Benutzer in einer bestimmten Gruppe ist, bekommt er den zugang, wenn er nicht in der Gruppe ist, bekommt er den Zugang nicht.
Ich hab mich schon relativ tief mit dem phpBB Code beschäftigt und kann auch alles realisieren, deshalb vereinfache ich die Frage auf:
Gibt es schon eine Funktion mit der ich einfach überprüfen kann ob der user in einer bestimmten Gruppe ist? :-?

Danke!
Zuletzt geändert von haSta am 29.01.2006 00:41, insgesamt 1-mal geändert.
haSta
Mitglied
Beiträge: 5
Registriert: 16.01.2006 22:42

Beitrag von haSta »

Ok, da ich ungeduldig bin hab ich eine function geschrieben und in der functions.php eingefügt, nur leider haut das noch nicht so ganz hin, er ist irgendwie der Meinung das das keine valide MySQL Link Resource ist. Was hab ich falsch gemacht?

Code: Alles auswählen

//Find out if the User is in specified Group.
//Herausfinden ob der User in der angegebenen Gruppe ist.
function is_user_in_group($user_id, $wanted_group)
{
	global $db;
	
	$sql = "SELECT group_id 
			FROM " . USER_GROUP_TABLE . " 
			WHERE user_id = $user_id";
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not obtain user and group information', '', __LINE__, __FILE__, $sql);
	}

	if ( $row = $db->sql_fetchrow($result) )
	{
		if ( $row['group_id'] == $wanted_group )
		{
			$db->sql_close();
			return true;
		}
		else
		{
			$db->sql_close();
			return false;
		}
	}
}	
haSta
Mitglied
Beiträge: 5
Registriert: 16.01.2006 22:42

Beitrag von haSta »

Ach kommt schon! :grin:

Könnt ihr mir denn gar nich helfen? Ich muss doch eine Funktion integrieren können, aber wenn er sagt das 11 keine valide MySQL Resource ist, dann hat das doch einen Grund und den kennt ihr bestimmt! :cry:
Jan88
Mitglied
Beiträge: 278
Registriert: 04.10.2005 15:02
Kontaktdaten:

Beitrag von Jan88 »

Und wenn du einfach die benutzergruppe abfragst und dann je nachdem den zugang gestattest oder einen fehler anzeigen lässt?

So verfahre ich mit meiner page
haSta
Mitglied
Beiträge: 5
Registriert: 16.01.2006 22:42

Beitrag von haSta »

Also ich habe die Funktion jetzt umgeschrieben und selbst eine Verbindung hergestellt zur Datenbank und frage den users_group table ab ob der eingeloggte benutzer in der gruppe ist die zugang hat. Wie in der Funktion oben. Aber warum funktioniert das nicht mit dem db objekt, ich kann leider keinen Fehler erkennen, wär halt schöner wenn ich die db klasse von phpBB verwenden könnte. Trtzdem Danke!
webazubi
Mitglied
Beiträge: 96
Registriert: 30.07.2005 01:13

Beitrag von webazubi »

Hilft Dir das vielleicht?


<?php
/***************************************************************************
* name.php Gruppenverwaltung zum Schutz von Websites
* -------------------
* copyright : (C) 2002
* email : mail
*
*
* uses phpBB technology (c) 2001 phpBB Group <http://www.phpbb.com/>
*
***************************************************************************/

/* **************************************************************************
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
***************************************************************************/


define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
//
// End session management
//

include($phpbb_root_path . 'includes/page_header.'.$phpEx);


// User die zugriff haben: es sind gruppen_ids, gruppennamen und user_ids erlaubt wobei bei den gruppen namen und ids ein g am anfang angehängt werden muss.
$allowed_u = array();
$allowed_u[] = 'g3'; //gruppe

$access_allowed = false;
if( in_array($userdata['user_id'],$allowed_u))
{
$access_allowed = true;
}

else
{
$sql = "SELECT g.group_id, g.group_name
FROM " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g
WHERE ug.user_id = '" . $userdata['user_id'] . "'
AND g.group_id = ug.group_id";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not get user group.', '', __LINE__, __FILE__, $sql);
}
$access_allowed = false;
while( list($group_id, $group_name) = $db->sql_fetchrow($result) )
{
if( in_array('g' . $group_id[group_id],$allowed_u ))
{
$access_allowed = true;
break;
}
if( in_array('g' . $group_name[group_name],$allowed_u))
{
$access_allowed = true;
break;
}
}
if( !$access_allowed )
{
message_die(GENERAL_MESSAGE, 'Sie haben keinen Zugriff auf diese Seite.');
}
}

include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
?>


$phpbb_root_path = './'; muss entsprechend angepasst werden

Vor include($phpbb_root_path . 'includes/page_tail.'.$phpEx); kommt der Inhalt der Website

$allowed_u[] = 'g3'; //gruppe ist ein Array mit den Gruppen. Für mehrere Gruppen einfach
$allowed_u[] = 'g3'; //gruppe
$allowed_u[] = 'g4'; //gruppe
usw.
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“