Zugriff nur für Gruppenmitglieder

Kleine Codeänderungen oder Mini-MODs
Keine Anfragen!!! -- No requests!!!

Moderator: Supporter

Zugriff nur für Gruppenmitglieder

Beitragvon AmigaLink » 22. Apr 2006 18:48

Wenn du eine Bereich nur für Mitglieder einer bestimmten Benutzergruppe zugänglich machen möchtest (hier zum Beispiel die Hot or Not Sektion des Photo Albums), dann erreichst du dies ganz einfach mit diesem kleinem Snippet:
Code: Alles auswählen
#
#----------[ OPEN ]-------------------------------------
#
# The file you wish to access for groupmembers only

#
#----------[ FIND ]-------------------------------------
#

init_userprefs($userdata);

#
#----------[ AFTER, ADD ]-------------------------------
#

// Check if user is member of the proper group..
$proper_group = 72;  // that is the id from the group which has access
$sql="SELECT * FROM " . USER_GROUP_TABLE . " WHERE group_id='" . $proper_group . "' AND user_id='" . $userdata[user_id] . "' AND user_pending='0' LIMIT 1";

if ( !($result = $db->sql_query($sql)) )
{
      message_die(GENERAL_ERROR, 'Could not query group rights information', '', __LINE__, __FILE__, $sql);
}

if ($db->sql_numrows($result) == 0)
{
   $db->sql_freeresult($result);
   $sql="SELECT group_name FROM " . GROUPS_TABLE . " WHERE group_id='" . $proper_group . "' LIMIT 1";

   if ( !($result = $db->sql_query($sql)) )
   {
         message_die(GENERAL_ERROR, 'Could not query group rights information', '', __LINE__, __FILE__, $sql);
   }
   $group_name_temp = $db->sql_fetchrow($result);
   $group_name = $group_name_temp['group_name'];

   $information_message = $lang['Not_Authorised'].'!<br />';
   $information_message .= sprintf($lang['Group_members_only'], $group_name).'<br />';
//   $information_message .= '<br />' . sprintf($lang['Click_return_portal'], '<a href="' . append_sid("portal.$phpEx") . '">', '</a>');
   $information_message .= '<br />' . sprintf($lang['Click_return_index'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>');
   message_die(GENERAL_MESSAGE, $information_message);
}
$db->sql_freeresult($result);
//

#
#----------[ OPEN ]-------------------------------------
#

language/lang_english/lang_main.php

#
#----------[ FIND ]-------------------------------------
#

$lang['Group_not_exist'] = 'That user group does not exist';

#
#----------[ AFTER, ADD ]-------------------------------
#

$lang['Group_members_only'] = 'Admission for %s group members only!';

#
#----------[ OPEN ]-------------------------------------
#

language/lang_german/lang_main.php

#
#----------[ FIND ]-------------------------------------
#

$lang['Group_not_exist'] = 'Diese Gruppe existiert nicht';

#
#----------[ AFTER, ADD ]-------------------------------
#

$lang['Group_members_only'] = 'Zugriff nur für Mitglieder der %s Benutzergruppe!';

#
#----------[ SAVE AND CLOSE ALL FILES ]-----------------
#
# EoM
$proper_group = 72; gibt hierbei die ID der berechtigten Benutzergruppe an.
Ändere also die 72 in die ID der, von dir, gewünschten Benutzergruppe. :)
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Beitragvon AmigaLink » 23. Apr 2006 18:11

Wer mehrere Boardbereiche hat die nur für Mitglieder von einer bestimmten Benutzergruppe zugänglich sind, kann das ganze noch ein wenig Komfortabler gestalten. :)
Code: Alles auswählen
#
#----------[ OPEN ]-------------------------------------
#
# The file you wish to access for groupmembers only

#
#----------[ FIND ]-------------------------------------
#

init_userprefs($userdata);

#
#----------[ AFTER, ADD ]-------------------------------
#
# The 72 is the id from the group which has access

access_group(72);

#
#----------[ OPEN ]-------------------------------------
#

includes/functions.php

#
#----------[ FIND ]-------------------------------------
#

?>

#
#----------[ BEFORE, ADD ]------------------------------
#

// Check if user is member of the proper group..
function access_group($proper_group, $link = 'index')
{
   global $userdata, $db, $lang, $phpEx;

   $sql="SELECT * FROM " . USER_GROUP_TABLE . " WHERE group_id='" . $proper_group . "' AND user_id='" . $userdata[user_id] . "' AND user_pending='0' LIMIT 1";

   if ( !($result = $db->sql_query($sql)) )
   {
      message_die(GENERAL_ERROR, 'Could not query group rights information', '', __LINE__, __FILE__, $sql);
   }

   if ($db->sql_numrows($result) == 0)
   {
      $db->sql_freeresult($result);
      $sql="SELECT group_name FROM " . GROUPS_TABLE . " WHERE group_id='" . $proper_group . "' LIMIT 1";

      if ( !($result = $db->sql_query($sql)) )
      {
         message_die(GENERAL_ERROR, 'Could not query group rights information', '', __LINE__, __FILE__, $sql);
      }
      $group_name_temp = $db->sql_fetchrow($result);
      $group_name = $group_name_temp['group_name'];

      $information_message = '<b>' . $lang['Not_Authorised'] . '!</b><br />';
      $information_message .= sprintf($lang['Group_members_only'], $group_name).'<br />';
      if ($link == 'portal')
      {
         $information_message .= '<br />' . sprintf($lang['Click_return_portal'], '<a href="' . append_sid("portal.$phpEx") . '">', '</a>');
      }
      else if ($link == 'index')
      {
         $information_message .= '<br />' . sprintf($lang['Click_return_index'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>');
      }
      else if ($link == 'both')
      {
         $information_message .= '<br />' . sprintf($lang['Click_return_portal'], '<a href="' . append_sid("portal.$phpEx") . '">', '</a>');
         $information_message .= '<br />' . sprintf($lang['Click_return_index'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>');
      }
      message_die(GENERAL_MESSAGE, $information_message);
   }
   $db->sql_freeresult($result);
}
//

#
#----------[ OPEN ]-------------------------------------
#

language/lang_english/lang_main.php

#
#----------[ FIND ]-------------------------------------
#

$lang['Group_not_exist'] = 'That user group does not exist';

#
#----------[ AFTER, ADD ]-------------------------------
#

$lang['Group_members_only'] = 'Admission for %s group members only!';

#
#----------[ OPEN ]-------------------------------------
#

language/lang_german/lang_main.php

#
#----------[ FIND ]-------------------------------------
#

$lang['Group_not_exist'] = 'Diese Gruppe existiert nicht';

#
#----------[ AFTER, ADD ]-------------------------------
#

$lang['Group_members_only'] = 'Zugriff nur für Mitglieder der %s Benutzergruppe!';

#
#----------[ SAVE AND CLOSE ALL FILES ]-----------------
#
# EoM

Die zu schützende Datei benötigt hiermit nur noch einen kleinen eintrag, der sogar noch eine kleine Option beinhaltet. 8)

Der im Snippet vorgegebene eintrag (alternativ auch access_group(72, 'index'); möglich) ergibt, bei unberechtigtem zugriff, diese Meldung:
[center]Nicht berechtigt!
Zugriff nur für Mitglieder der Album Benutzergruppe!

Klick hier um zum Index zurückzukehren[/center]

access_group(72, 'portal'); Hätte dieses Ergebnis:
[center]Nicht berechtigt!
Zugriff nur für Mitglieder der Album Benutzergruppe!

Klick hier um zum Portal zurückzukehren[/center]

access_group(72, 'both'); dieses:
[center]Nicht berechtigt!
Zugriff nur für Mitglieder der Album Benutzergruppe!

Klick hier um zum Portal zurückzukehren
Klick hier um zum Index zurückzukehren[/center]

Und access_group(72, FALSE); gibt keinen Link aus.
Also nur:
[center]Nicht berechtigt!
Zugriff nur für Mitglieder der Album Benutzergruppe![/center]
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Beitragvon Christian_N » 24. Apr 2006 10:41

Hört sich gut an,
eine frage bevor ich den aber verbau, aber eigentlich könnt ich mir die sparn da Admins eigentlich sowieso zugriff zu allem hab, aber sicher ist sicher.

Frage: Kann ein Admin diese Seite die man damit schützt diese aufrufen trotzdem auch wenn er nicht in diesen Benutzergruppe ist?
Chantals - Fanpage :: http://www.chantals-fanpage.de
Benutzeravatar
Christian_N
User
 
Beiträge: 524
Registriert: 31. Mai 2005 00:17
Wohnort: Deutschland

Beitragvon AmigaLink » 24. Apr 2006 11:32

Der Admin kann alles aufrufen.
Denn der Admin normalerweise in jeder Benutzergruppe. ;)
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Beitragvon Marimar » 29. Mai 2006 14:38

Hallo,

das ist genau was ich gesucht habe allerdings möchte ich es für Profile view anwenden !!

Wie kann ich es in usercp_viewprofile.php einbinden ?? :?: User Profile sollen nur von bestimmten Gruppen gesehen werden.

Vielen Dank

Marimar
Marimar
 
Beiträge: 2
Registriert: 29. Mai 2006 14:21

Beitragvon AmigaLink » 29. Mai 2006 17:45

Aus Beitrag 2 nimmst du den code für die functions.php und zusätzlich machst du dies hier:
Code: Alles auswählen
#
#----------[ OPEN ]-------------------------------------
#

includes/usercp_viewprofile.php

#
#----------[ FIND ]-------------------------------------
#

$profiledata = get_userdata($HTTP_GET_VARS[POST_USERS_URL]);

#
#----------[ AFTER, ADD ]-------------------------------
#
# The 72 is the id from the group which has access

access_group(72);

#
#----------[ SAVE AND CLOSE ALL FILES ]-----------------
#
# EoM
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Beitragvon Marimar » 2. Jun 2006 21:27

Hallo,

alles klar funktioniert !! Danke :D
Marimar
 
Beiträge: 2
Registriert: 29. Mai 2006 14:21


Zurück zu phpBB2 Snippets



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 16 Gäste

cron