/** * Find or create a Group with the given name. Subclasses should use this * method to locate the 'Roles' group or create additional types of groups. * * @param \AppserverIo\Lang\String $name The name of the group to create * @param \AppserverIo\Collections\CollectionInterface $principals The list of principals * * @return \AppserverIo\Psr\Security\Acl\GroupInterface A named group from the principals set */ protected function createGroup(string $name, CollectionInterface $principals) { // initialize the group /** \AppserverIo\Psr\Security\Acl\GroupInterface $roles */ $roles = null; // iterate over the passed principals foreach ($principals as $principal) { // query whether we found a group or not, proceed if not if ($principal instanceof GroupInterface == false) { continue; } // the principal is a group $grp = $principal; // if the group already exists, stop searching if ($grp->getName()->equals($name)) { $roles = $grp; break; } } // if we did not find a group create one if ($roles == null) { $roles = new SimpleGroup($name); $principals->add($roles); } // return the group return $roles; }
/** * Initializes a new session instance. * * @return \AppserverIo\RemoteMethodInvocation\SessionInterface The session instance * @see \AppserverIo\RemoteMethodInvocation\ConnectionInterface::createContextSession() */ public function createContextSession() { $this->sessions->add($session = new ContextSession($this)); return $session; }