View Issue Details

IDProjectCategoryView StatusLast Update
0000247Usermanagement[Adventure PHP Framework] Neues Feature // New Featurepublic2015-10-12 12:19
ReporterGeneral CrimeAssigned ToChristianAchatz 
PrioritynormalSeverityfeatureReproducibilityN/A
Status closedResolutionfixed 
Product Version[Adventure PHP Framework] 2.1.1 
Target VersionFixed in Version[Adventure PHP Framework] 3.0 
Summary0000247: Neue Condition "UmgtPermissionCondition"
DescriptionUm nicht umständlich eigene Templates zu erstellen die wiederum mit einem Kontroller abfragen welche Rechte ein Benutzer hat, empfiehlt es sich zu den bereits vorhandene Conditions den "UmgtPermissionCondition" hinzu zu fügen.

Dadurch kann der UmgtTemplateTag und der UmgtImportTemplateTag mit der Condition "permission" gefüttert werden und zeigt das Template an oder nicht.
Additional Information<?php
/**
 * Created by PhpStorm.
 * User: General Crime
 * Date: 12.03.2015
 * Time: 15:09
 */

namespace APF\myextensions\usermanagement\pres\condition;

use APF\modules\usermanagement\pres\condition\UserDependentContentCondition;
use APF\modules\usermanagement\pres\condition\UserDependentContentConditionBase;
use APF\modules\usermanagement\biz\model\UmgtUser;
use APF\modules\usermanagement\biz\model\UmgtPermission;

/**
 * @package APF\myextensions\usermanagement\pres\condition
 * @class UmgtPermissionCondition
 * Diese Funktion lädt alle Rechte eines Benutzers und prüft dann ob derjenige ein gewisses Recht besitzt.
 * @author Christian Merz
 * @version
 * Version 0.1, 12.03.2015 - Erstellt
 */
class UmgtPermissionCondition extends UserDependentContentConditionBase implements UserDependentContentCondition {

   /**
    * @public
    * Führt die Aktion aus.
    * @param string $conditionKey
    * @param APF\modules\usermanagement\biz\model\UmgtUser $user
    * @return bool
    * @version
    * Version 0.1, 12.03.15 - Erstellt
    */
   public function matches($conditionKey, UmgtUser $user = NULL) {

      if ($user === NULL) {
         return FALSE;
      }

      foreach ($this->getPermissions($user) as $permission) {
         if (in_array($permission->getName(), $this->getOptions())) {
            return TRUE;
         }
      }

      return FALSE;
   }

   /**
    * @public
    * Schlüssel für die Funktion.
    * @return string
    * @version
    * Version 0.1, 12.03.15 - Erstellt
    */
   public function getConditionIdentifier() {
      return 'permission';
   }

   /**
    * @public
    * Lädt erst die Rollen des Benutzers und dann dessen Berechtigungen.
    * Doppelte Einträge werden vermieden.
    * @param \APF\modules\usermanagement\biz\model\UmgtUser $user
    * @return \APF\modules\usermanagement\biz\model\UmgtPermission
    * @throws \APF\modules\genericormapper\data\GenericORMapperException
    * @version
    * Version 0.1, 13.03.15 - Erstellt
    */
   private function getPermissions(UmgtUser $user) {
      $RoleList = $user->loadRelatedObjects('Role2User');
      $permissionArray = array();
      foreach ($RoleList as $Role) {
         $PermissionList = $Role->loadRelatedObjects('Role2Permission');
         foreach ($PermissionList as $Permission) {
            if (!array_key_exists($Permission->getObjectId(), $permissionArray))
               $permissionArray[$Permission->getObjectId()] = $Permission;
         }
      }

      return array_merge($permissionArray);
   }

}
Tagssecurity, umgt
Codereferenz: ([Datei]:[Zeile])

Activities

General Crime

2015-03-16 19:22

developer   ~0000553

Hab mal die Datei wie sie unter "APF/usermanagement/pres/condition" aussehn würde eingefügt.

Es muss lediglich der UmgtDependentContentConditionSet Eintrag eingebaut werden.

Sorry wenn der Eintrag etwas fehlerhaft ist, konnte ihn aber nicht mehr bearbeiten.

ChristianAchatz

2015-03-16 22:19

administrator   ~0000554

Detail-Diskussion unter http://forum.adventure-php-framework.org/viewtopic.php?f=5&t=5610.

ChristianAchatz

2015-03-17 19:00

administrator   ~0000557

Code revised and added to GIT master. Will be delivered with 3.0.

Issue History

Date Modified Username Field Change
2015-03-16 19:14 General Crime New Issue
2015-03-16 19:16 General Crime Tag Attached: security
2015-03-16 19:16 General Crime Tag Attached: umgt
2015-03-16 19:22 General Crime Note Added: 0000553
2015-03-16 22:18 ChristianAchatz Assigned To => ChristianAchatz
2015-03-16 22:18 ChristianAchatz Status new => assigned
2015-03-16 22:19 ChristianAchatz Note Added: 0000554
2015-03-17 19:00 ChristianAchatz Note Added: 0000557
2015-03-17 19:00 ChristianAchatz Status assigned => resolved
2015-03-17 19:00 ChristianAchatz Fixed in Version => 3.0
2015-03-17 19:00 ChristianAchatz Resolution open => fixed
2015-10-12 12:19 ChristianAchatz Status resolved => closed