Usergruppe auslesen

almighty7
Beiträge: 12
Registriert: So 1. Nov 2009, 23:51
Kontaktdaten:

Usergruppe auslesen

Beitrag von almighty7 » Mi 4. Nov 2009, 21:56

Hallo liebe Leute,

ich habe jetzt schon einige Websites auf Contenido umgesetzt und bin begeistert vom System. Nun stoße ich aber anscheinend auf ein Problem des Rechtesystems, welches ich nicht umgehen kann:

Ein User ist in der Gruppe "Redaktion ohne Bild" und kann Artikel in einer Kategorie editieren. Nun möchte ich gerne auslesen, in welcher Usergruppe der User steckt, damit ich in den Modulen den Editierbutton für Bilder ausblenden kann (per If-Abfrage). Kann mir einer weiterhelfen, wie cih die Usergruppe aus der Datenbank bekomme? User ID habe ich schon per $auth herausbekommen, habe nur keinen Ansatz nun noch die Gruppe auszulesen.

Liebe Grüße
Marcel

_wiewo_
Beiträge: 358
Registriert: Mo 8. Sep 2008, 11:12

Re: Usergruppe auslesen

Beitrag von _wiewo_ » Do 5. Nov 2009, 08:43

dürfte ganz easy zu lösen sein

Hier mal der Code

Code: Alles auswählen

<?php 

$oFrontendUser = new FrontendUser();
$oFrontendUser->loadByPrimaryKey($auth->auth['uid']);
$aFrontendUserGroups = $oFrontendUser->getGroupsForUser();

$iGruppeFuerUserMitBildRechten = 1;

if (in_array($iGruppeFuerUserMitBildRechten, $aFrontendUserGroups)) {
	// der aktuelle FrontendUser ist in der Gruppe
}

?>
hoffe klappt

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Re: Usergruppe auslesen

Beitrag von Dodger77 » Do 5. Nov 2009, 09:29

Verschoben, kein Tipp/Trick.

almighty7
Beiträge: 12
Registriert: So 1. Nov 2009, 23:51
Kontaktdaten:

Re: Usergruppe auslesen

Beitrag von almighty7 » So 8. Nov 2009, 17:30

_wiewo_ hat geschrieben:dürfte ganz easy zu lösen sein

Hier mal der Code

Code: Alles auswählen

<?php 

$oFrontendUser = new FrontendUser();
$oFrontendUser->loadByPrimaryKey($auth->auth['uid']);
$aFrontendUserGroups = $oFrontendUser->getGroupsForUser();

$iGruppeFuerUserMitBildRechten = 1;

if (in_array($iGruppeFuerUserMitBildRechten, $aFrontendUserGroups)) {
	// der aktuelle FrontendUser ist in der Gruppe
}

?>
hoffe klappt
Hallo Christian,

Diese Spalte muss ich doch sicherlich anpassen und mit dem Namen der Gruppe vershene, oder?

$iGruppeFuerUserMitBildRechten = 1;

Irgendwie geht das nämlich bei mir nicht

_wiewo_
Beiträge: 358
Registriert: Mo 8. Sep 2008, 11:12

Re: Usergruppe auslesen

Beitrag von _wiewo_ » Mo 9. Nov 2009, 07:08

da muss die ID der Gruppe rein
wenn du im backend mit der maus auf die gruppe im linken menü zeigst erkennst du an dem link den er aufrufen will die ID der gruppe

oder öffnest deine DB und guckst in der frontendusergruppe tabelle nach

almighty7
Beiträge: 12
Registriert: So 1. Nov 2009, 23:51
Kontaktdaten:

Re: Usergruppe auslesen

Beitrag von almighty7 » Di 10. Nov 2009, 18:31

Ah, OK, ich steige langsam dahinter, es sind Frontend Usergruppen gemeint, die ausgelesen werden. Bei mir ist der User aber in einer Usergruppe, die im CMS angelegt worden ist. Ein Frontenduser kann sich ja nicht im CMS einloggen und dort Inhalte ändern, oder?

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Re: Usergruppe auslesen

Beitrag von Dodger77 » Di 10. Nov 2009, 18:39

Dann sollte das so in der Art funktionieren (ungetestet):

Code: Alles auswählen

<?php

$oUser = new User();
$aUserGroups = $oUser->getGroupIDsByUserID($auth->auth['uid']);

$iGruppeFuerUserMitBildRechten = 1;

if (in_array($iGruppeFuerUserMitBildRechten, $aUserGroups)) {
    // der aktuelle User ist in der Gruppe
} else {
    // der aktuelle User ist nicht in der Gruppe
}

?>

_wiewo_
Beiträge: 358
Registriert: Mo 8. Sep 2008, 11:12

Re: Usergruppe auslesen

Beitrag von _wiewo_ » Di 10. Nov 2009, 18:56

ah sorry ja das habe ich nicht beachtet
war im frontenduser trott

almighty7
Beiträge: 12
Registriert: So 1. Nov 2009, 23:51
Kontaktdaten:

Re: Usergruppe auslesen

Beitrag von almighty7 » Mi 11. Nov 2009, 21:50

Übrigens: Vielen lieben Dank für eure tatkräftige Unterstützung bei Contenido :)

Leider funktioniert das Script nicht es kommt folgende Fehlermeldung:

Fatal error: Call to undefined method User::getGroupIDsByUserID() in xxx/contenido/includes/include.con_editcontent.php(638) : eval()'d code on line 331

_wiewo_
Beiträge: 358
Registriert: Mo 8. Sep 2008, 11:12

Re: Usergruppe auslesen

Beitrag von _wiewo_ » Mi 11. Nov 2009, 21:59

getGroupsByUserID heißt es richtig :)

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Re: Usergruppe auslesen

Beitrag von Dodger77 » Do 12. Nov 2009, 08:34

Hm, sehe gerade, dass es die Methode erst ab der nächsten Contenido-Version geben wird. Könnte man aber in der "contenido/classes/class.user.php" ergänzen:

Code: Alles auswählen

    /**
     * getGroupIDsByUserID()
     * Returns the groups a user is in
     * @return array ids of groups
     */
	function getGroupIDsByUserID ($userid) {

        global $cfg;

        $db = new DB_Contenido;

        $sql = "SELECT
                    a.group_id
                FROM
                	".$cfg["tab"]["groups"]." AS a,
                	".$cfg["tab"]["groupmembers"]." AS b
				WHERE
					(a.group_id  = b.group_id)
					AND 
					(b.user_id = '".Contenido_Security::escapeDB($userid, $db)."')
				";

        $db->query($sql);
        
		$arrGroups = array();
		
		while ($db->next_record()) {
			
			$arrGroups[] = $db->f('group_id');
		}
        return $arrGroups;
	}

idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: Usergruppe auslesen

Beitrag von idea-tec » Do 12. Nov 2009, 08:52

jetzt ohne beide funktionen verglichen oder geprüft zu haben, aber wozu 2 funktionen für (fast?) das gleiche :?: :?: :?:

wieso überhaupt eine neue?
ist das wieder so ein quatsch, wegend er rückwärtskompatibilität?
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Re: Usergruppe auslesen

Beitrag von Dodger77 » Do 12. Nov 2009, 09:40

idea-tec hat geschrieben:jetzt ohne beide funktionen verglichen oder geprüft zu haben, ...
Warum nicht? Hätte vielleicht eine Minute gekostet und evtl. bereits einige deiner Fragen beantwortet. :wink:

Die Rückgabewerte beider Methoden sind dann doch ziemlich unterschiedlich. getGroupsByUserID() enthält z.B. keinerlei Angaben über die IDs der Gruppen. Hätte man natürlich auch über die getGroupsByUserID() lösen können, indem das Rückgabe-Array die Gruppen-IDs als Key verwendet.

idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: Usergruppe auslesen

Beitrag von idea-tec » Do 12. Nov 2009, 10:03

Dodger77 hat geschrieben:Hätte man natürlich auch über die getGroupsByUserID() lösen können, indem das Rückgabe-Array die Gruppen-IDs als Key verwendet.
ich muss gestehen, dass ich an der stelle keine neue funktion erstellt sondern die vorhandene erweitert hätte.
dient, wenn man es richtig macht, nämlich am besten der rückwärtskompatibilität ;-)
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)

_wiewo_
Beiträge: 358
Registriert: Mo 8. Sep 2008, 11:12

Re: Usergruppe auslesen

Beitrag von _wiewo_ » Do 12. Nov 2009, 11:28

und ich hab mir die funktion garnicht angeguckt, hab nen schreibfehler vermutet :D

so nen simples thema kann so toll werden, ich liebe es :D

Gesperrt