MyBB.de Forum
Thread muss mindestens 2 oder mehr Berechtigungsgruppen haben. - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Archiv (https://www.mybb.de/forum/forum-57.html)
+--- Forum: MyBB 1.6.x (https://www.mybb.de/forum/forum-58.html)
+---- Forum: Allgemeiner Support (https://www.mybb.de/forum/forum-59.html)
+---- Thema: Thread muss mindestens 2 oder mehr Berechtigungsgruppen haben. (/thread-29649.html)



Thread muss mindestens 2 oder mehr Berechtigungsgruppen haben. - richie1985 - 05.05.2014

Hallo,

ich habe ein grosses Problem. Unsere Forum User sind in verschiedene primäre und ein oder mehrere Sekundäre Gruppen eingeteilt.

Nun gibt es spezielle Bereiche die nur unter bestimmten Bedingungen sichtbar sein sollen, Beispiel:

Max Musermann (Primärgruppe: Mitarbeiter, Sekundergruppen: Teamleiter, Supervsior)

Forum "Auswertung" darf jetzt nur für Mitarbeiter sichtbar sein, die diese drei Gruppen haben.

Ist das möglich?


RE: Thread muss mindestens 2 oder mehr Berechtigungsgruppen haben. - StefanT - 05.05.2014

Nein, sobald eine Gruppe die nötigen Berechtigungen hat, wird das Forum sichtbar.


RE: Thread muss mindestens 2 oder mehr Berechtigungsgruppen haben. - richie1985 - 05.05.2014

und da gibt es keine möglichkeit (irgendwie plugin oder so) daran was zu ändern? ohne dieser funtion müsste ich wahnsinnig viele gruppen als gruppenkombination anlegen und kann kein mensch mehr pflegen Sad


RE: Thread muss mindestens 2 oder mehr Berechtigungsgruppen haben. - MrBrechreiz - 05.05.2014

Schau mal ob Du das mit diesem Plugin tegeln kannst.

http://mods.mybb.com/view/custom-user-permissions


RE: Thread muss mindestens 2 oder mehr Berechtigungsgruppen haben. - richie1985 - 05.05.2014

das habe ich schon ausprobiert, cooles plugin, leider nur auf einzelne user und nicht auf gruppen Sad


RE: Thread muss mindestens 2 oder mehr Berechtigungsgruppen haben. - richie1985 - 06.05.2014

ich finde leider auch nicht mal das query wo die gesetzen rechte aus der db ausgelesen werden, könnt ihr mir da helfen?


RE: Thread muss mindestens 2 oder mehr Berechtigungsgruppen haben. - MrBrechreiz - 06.05.2014

Du könntest es mit doesem Plugin versuchen.

Und im entsprechendem Template eine <if></if> setzen mit den entsprechenden Usergruppen.

Siehe dieses Beispiel hier.

PHP-Code:
<if in_array($mybb->user['usergroup'], array(1,2,3)) then>
<else>
...
hier steht das template was die usergruppen 12 und 3 nicht sehen dürfen...
</if> 



RE: Thread muss mindestens 2 oder mehr Berechtigungsgruppen haben. - richie1985 - 06.05.2014

mhh versteh ich wieder nicht, legt mybb für jedes forum dann ein template an? und wenn ja wo finde ich diese?


RE: Thread muss mindestens 2 oder mehr Berechtigungsgruppen haben. - MrBrechreiz - 06.05.2014

Nein, tut es nicht. Daher muss der Code auch noch angepasst werden an deine Gruppen. Kann dir aber nicht 100%ig sagen ob es überhaupt mit sovielen Gruppen und Foren funktioniert.

Finden kannst Du das Template dazu im Forum Bit Templates -> forumbit_depth1_cat

Mit dem Script könnte man zumindest die primären Gruppen aufnehmen und für die sekondären Gruppen, die entsprechenden Forenrechte vergeben.


RE: Thread muss mindestens 2 oder mehr Berechtigungsgruppen haben. - richie1985 - 07.05.2014

ich hab es hinbekommen:

hier die Änderungen an der Funktion "fetch_forum_permissions" in der Datei "functions_indicators.php":
PHP-Code:
function fetch_forum_permissions($fid$gid$groupperms)
{
    global 
$groupscache$forum_cache$fpermcache$mybb$fpermfields;

    
$groups explode(","$gid);

    if(empty(
$fpermcache[$fid])) // This forum has no custom or inherited permissions so lets just return the group permissions
    
{
        return 
$groupperms;
    }

    
$current_permissions = array();
    
$only_view_own_threads 1;
    
$erik_canview 1//Hack von Erik

    
foreach($groups as $gid)
    {
        if(
$groupscache[$gid])
        {
            
$level_permissions $fpermcache[$fid][$gid];
                    
            
// If our permissions arn't inherited we need to figure them out
            
if(empty($level_permissions))
            {
                
$parents explode(','$forum_cache[$fid]['parentlist']);
                
rsort($parents);
                
                if(!empty(
$parents))
                {
                    foreach(
$parents as $parent_id)
                    {
                        if(!empty(
$fpermcache[$parent_id][$gid]))
                        {
                            
$level_permissions $fpermcache[$parent_id][$gid];
                            break;
                        }
                    }

                    
// If we STILL don't have forum permissions we use the usergroup itself
                    
if(empty($level_permissions))
                    {
                        
$level_permissions $groupscache[$gid];
                    }
                }
            }
            
            foreach(
$level_permissions as $permission => $access)
            {
                
                if(
$access >= $current_permissions[$permission] || ($access == "yes" && $current_permissions[$permission] == "no") || !$current_permissions[$permission])
                {
                    
$current_permissions[$permission] = $access;
                }

            }
            
            if(
$level_permissions["canview"] && !$level_permissions["canonlyviewownthreads"])
            {
                
$only_view_own_threads 0;
            }
            
            if(
$level_permissions["canview"]==0)
            {
                
$erik_canview 0;  //Hack von Erik
            
}
        
        }
    }

    
// Figure out if we can view more than our own threads
    
if($only_view_own_threads == 0)
    {
        
$current_permissions["canonlyviewownthreads"] = 0;
    }

    if(
count($current_permissions) == 0)
    {
        
$current_permissions $groupperms;
    }
    
    if(
$erik_canview == && !in_array(4$groups)) //admin has view rights to all
    
{
        
$current_permissions["canview"] = 0;  //Hack von Erik
    
}

    return 
$current_permissions;