diff --git a/defaults/config.ini.default b/defaults/config.ini.default index 6bcc5b95..48c6a3cb 100644 --- a/defaults/config.ini.default +++ b/defaults/config.ini.default @@ -19,7 +19,7 @@ pass = "password" ; Admin bind password basedn = "dc=unityhpc,dc=test" ; Base search DN user_ou = "ou=users,dc=unityhpc,dc=test" ; User organizational unit group_ou = "ou=groups,dc=unityhpc,dc=test" ; Group organizational unit -pigroup_ou = "ou=pi_groups,dc=unityhpc,dc=test" ; PI Group organizational unit +unitygroup_ou = "ou=unity_groups,dc=unityhpc,dc=test" ; Unity Group organizational unit orggroup_ou = "ou=org_groups,dc=unityhpc,dc=test" ; ORG group organizational unit admin_group = "cn=sudo,dc=unityhpc,dc=test" ; admin dn (members of this group are admins on the web portal) def_user_shell = "/bin/bash" ; Default shell for new users diff --git a/resources/autoload.php b/resources/autoload.php index af41edfc..535f3015 100644 --- a/resources/autoload.php +++ b/resources/autoload.php @@ -19,6 +19,7 @@ require_once __DIR__ . "/lib/UnityConfig.php"; require_once __DIR__ . "/lib/UnityWebhook.php"; require_once __DIR__ . "/lib/UnityRedis.php"; +require_once __DIR__ . "/lib/UnityPerms.php"; // run init script require __DIR__ . "/init.php"; diff --git a/resources/init.php b/resources/init.php index 6fe58e41..05bc2dc8 100644 --- a/resources/init.php +++ b/resources/init.php @@ -43,7 +43,7 @@ __DIR__ . "/../deployment/custom_user_mappings", $CONFIG["ldap"]["user_ou"], $CONFIG["ldap"]["group_ou"], - $CONFIG["ldap"]["pigroup_ou"], + $CONFIG["ldap"]["unitygroup_ou"], $CONFIG["ldap"]["orggroup_ou"], $CONFIG["ldap"]["admin_group"], $CONFIG["ldap"]["def_user_shell"] diff --git a/resources/lib/UnityGroup.php b/resources/lib/UnityGroup.php index d1616225..021ba576 100644 --- a/resources/lib/UnityGroup.php +++ b/resources/lib/UnityGroup.php @@ -5,13 +5,13 @@ use Exception; /** - * Class that represents a single PI group in the Unity Cluster. + * Class that represents a single group in the Unity Cluster. */ class UnityGroup { public const PI_PREFIX = "pi_"; - private $pi_uid; + private $group_uid; // change to group_uid; // Services private $LDAP; @@ -23,13 +23,13 @@ class UnityGroup /** * Constructor for the object * - * @param string $pi_uid PI UID in the format + * @param string $group_uid Group UID in the format * @param LDAP $LDAP LDAP Connection * @param SQL $SQL SQL Connection */ - public function __construct($pi_uid, $LDAP, $SQL, $MAILER, $REDIS, $WEBHOOK) + public function __construct($group_uid, $LDAP, $SQL, $MAILER, $REDIS, $WEBHOOK) { - $this->pi_uid = $pi_uid; + $this->group_uid = $group_uid; $this->LDAP = $LDAP; $this->SQL = $SQL; @@ -44,17 +44,17 @@ public function equals($other_group) throw new Exception("Unable to check equality because the parameter is not a " . self::class . " object"); } - return $this->getPIUID() == $other_group->getPIUID(); + return $this->getGroupUID() == $other_group->getGroupUID(); } /** - * Returns this group's PI UID + * Returns this group's Group UID * - * @return string PI UID of the group + * @return string Group UID of the group */ - public function getPIUID() + public function getGroupUID() // change this to groupUID { - return $this->pi_uid; + return $this->group_uid; } /** @@ -64,41 +64,57 @@ public function getPIUID() */ public function exists() { - return $this->getLDAPPiGroup()->exists(); + return $this->getLDAPUnityGroup()->exists(); } // // Portal-facing methods, these are the methods called by scripts in webroot // - public function requestGroup($send_mail_to_admins, $send_mail = true) - { + public function requestGroup( + $requestor_uid, + $group_type, + $group_name, + $send_mail_to_admins, + $start_date, + $end_date, + $send_mail = true + ) { // check for edge cases... if ($this->exists()) { return; } + $requestor = new UnityUser( + $requestor_uid, + $this->LDAP, + $this->SQL, + $this->MAILER, + $this->REDIS, + $this->WEBHOOK + ); + // check if account deletion request already exists - if ($this->SQL->accDeletionRequestExists($this->getOwner()->getUID())) { + if ($this->SQL->accDeletionRequestExists($requestor->getUID())) { return; } - $this->SQL->addRequest($this->getOwner()->getUID()); + $this->SQL->addGroupRequest($requestor->getUID(), $group_type, $group_name, $start_date, $end_date); if ($send_mail) { // send email to requestor $this->MAILER->sendMail( - $this->getOwner()->getMail(), + $requestor->getMail(), "group_request" ); $this->WEBHOOK->sendWebhook( "group_request_admin", array( - "user" => $this->getOwner()->getUID(), - "org" => $this->getOwner()->getOrg(), - "name" => $this->getOwner()->getFullname(), - "email" => $this->getOwner()->getMail() + "user" => $requestor->getUID(), + "org" => $requestor->getOrg(), + "name" => $requestor->getFullname(), + "email" => $requestor->getMail() ) ); @@ -107,10 +123,10 @@ public function requestGroup($send_mail_to_admins, $send_mail = true) "admin", "group_request_admin", array( - "user" => $this->getOwner()->getUID(), - "org" => $this->getOwner()->getOrg(), - "name" => $this->getOwner()->getFullname(), - "email" => $this->getOwner()->getMail() + "user" => $requestor->getUID(), + "org" => $requestor->getOrg(), + "name" => $requestor->getFullname(), + "email" => $requestor->getMail() ) ); } @@ -119,10 +135,10 @@ public function requestGroup($send_mail_to_admins, $send_mail = true) "pi_approve", "group_request_admin", array( - "user" => $this->getOwner()->getUID(), - "org" => $this->getOwner()->getOrg(), - "name" => $this->getOwner()->getFullname(), - "email" => $this->getOwner()->getMail() + "user" => $requestor->getUID(), + "org" => $requestor->getOrg(), + "name" => $requestor->getFullname(), + "email" => $requestor->getMail() ) ); } @@ -131,38 +147,50 @@ public function requestGroup($send_mail_to_admins, $send_mail = true) /** * This method will create the group (this is what is executed when an admin approved the group) */ - public function approveGroup($operator = null, $send_mail = true) + public function approveGroup($requestor_uid, $operator = null, $send_mail = true) { // check for edge cases... if ($this->exists()) { return; } + $requestor = new UnityUser( + $requestor_uid, + $this->LDAP, + $this->SQL, + $this->MAILER, + $this->REDIS, + $this->WEBHOOK + ); + // check if owner exists - if (!$this->getOwner()->exists()) { - $this->getOwner()->init(); + if (!$requestor->exists()) { + $requestor->init(); } // initialize ldap objects, if this fails the script will crash, but nothing will persistently break $this->init(); + // add the group to the group attributes table + $this->SQL->setGroupAttributes($this->getGroupUID(), $requestor->getUID()); + // remove the request from the sql table // this will silently fail if the request doesn't exist - $this->SQL->removeRequest($this->getOwner()->getUID()); + $this->SQL->removeGroupRequest($requestor->getUID()); - $operator = is_null($operator) ? $this->getOwner()->getUID() : $operator->getUID(); + $operator = is_null($operator) ? $requestor->getUID() : $operator->getUID(); $this->SQL->addLog( $operator, $_SERVER['REMOTE_ADDR'], "approved_group", - $this->getOwner()->getUID() + $requestor->getUID() ); // send email to the newly approved PI if ($send_mail) { $this->MAILER->sendMail( - $this->getOwner()->getMail(), + $requestor->getMail(), "group_created" ); } @@ -171,28 +199,37 @@ public function approveGroup($operator = null, $send_mail = true) /** * This method is executed when an admin denys the PI group request */ - public function denyGroup($operator = null, $send_mail = true) + public function denyGroup($requestor_uid, $operator = null, $send_mail = true) { - // remove request - this will fail silently if the request doesn't exist - $this->SQL->removeRequest($this->getOwner()->getUID()); - if ($this->exists()) { return; } - $operator = is_null($operator) ? $this->getOwner()->getUID() : $operator->getUID(); + $requestor = new UnityUser( + $requestor_uid, + $this->LDAP, + $this->SQL, + $this->MAILER, + $this->REDIS, + $this->WEBHOOK + ); + + // remove request - this will fail silently if the request doesn't exist + $this->SQL->removeGroupRequest($requestor_uid); + + $operator = is_null($operator) ? $requestor->getUID() : $operator->getUID(); $this->SQL->addLog( $operator, $_SERVER['REMOTE_ADDR'], "denied_group", - $this->getOwner()->getUID() + $requestor->getUID() ); // send email to the requestor if ($send_mail) { $this->MAILER->sendMail( - $this->getOwner()->getMail(), + $requestor->getMail(), "group_denied" ); } @@ -205,7 +242,7 @@ public function removeGroup($send_mail = true) { // remove any pending requests // this will silently fail if the request doesn't exist (which is what we want) - $this->SQL->removeRequests($this->pi_uid); + $this->SQL->removeJoinRequests($this->getGroupName()); // we don't need to do anything extra if the group is already deleted if (!$this->exists()) { @@ -216,15 +253,15 @@ public function removeGroup($send_mail = true) $users = $this->getGroupMembers(); // now we delete the ldap entry - $ldapPiGroupEntry = $this->getLDAPPiGroup(); - if ($ldapPiGroupEntry->exists()) { - if (!$ldapPiGroupEntry->delete()) { + $ldapGroupEntry = $this->getLDAPUnityGroup(); + if ($ldapGroupEntry->exists()) { + if (!$ldapGroupEntry->delete()) { throw new Exception("Unable to delete PI ldap group"); } - $this->REDIS->removeCacheArray("sorted_groups", "", $this->getPIUID()); + $this->REDIS->removeCacheArray("sorted_groups", "", $this->getGroupUID()); foreach ($users as $user) { - $this->REDIS->removeCacheArray($user->getUID(), "groups", $this->getPIUID()); + $this->REDIS->removeCacheArray($user->getUID(), "groups", $this->getGroupUID()); } } @@ -234,7 +271,7 @@ public function removeGroup($send_mail = true) $this->MAILER->sendMail( $user->getMail(), "group_disband", - array("group_name" => $this->pi_uid) + array("group_name" => $this->group_uid) ); } } @@ -256,26 +293,34 @@ public function approveUser($new_user, $send_mail = true) // remove request, this will fail silently if the request doesn't exist $this->removeRequest($new_user->getUID()); + // give the user the defRole of that group type + $this->SQL->assignDefRole($new_user->getUID(), $this->getGroupType(), $this->getGroupUID()); + // send email to the requestor if ($send_mail) { // send email to the user $this->MAILER->sendMail( $new_user->getMail(), "group_user_added", - array("group" => $this->pi_uid) + array("group" => $this->group_uid) ); - // send email to the PI - $this->MAILER->sendMail( - $this->getOwner()->getMail(), - "group_user_added_owner", - array( - "group" => $this->pi_uid, - "user" => $new_user->getUID(), - "name" => $new_user->getFullName(), - "email" => $new_user->getMail(), - "org" => $new_user->getOrg() + + $admins = $this->getGroupAdmins(); + + // send email to the admins + foreach ($admins as $admin) { + $this->MAILER->sendMail( + $admin->getMail(), + "group_user_added_owner", + array( + "group" => $this->group_uid, + "user" => $new_user->getUID(), + "name" => $new_user->getFullName(), + "email" => $new_user->getMail(), + "org" => $new_user->getOrg() ) - ); + ); + } } } @@ -293,21 +338,25 @@ public function denyUser($new_user, $send_mail = true) $this->MAILER->sendMail( $new_user->getMail(), "group_user_denied", - array("group" => $this->pi_uid) + array("group" => $this->group_uid) ); - // send email to the PI - $this->MAILER->sendMail( - $this->getOwner()->getMail(), - "group_user_denied_owner", - array( - "group" => $this->pi_uid, - "user" => $new_user->getUID(), - "name" => $new_user->getFullName(), - "email" => $new_user->getMail(), - "org" => $new_user->getOrg() + $admins = $this->getGroupAdmins(); + + // send email to the admins + foreach ($admins as $admin) { + $this->MAILER->sendMail( + $admin->getMail(), + "group_user_denied_owner", + array( + "group" => $this->group_uid, + "user" => $new_user->getUID(), + "name" => $new_user->getFullName(), + "email" => $new_user->getMail(), + "org" => $new_user->getOrg() ) - ); + ); + } } } @@ -317,9 +366,9 @@ public function removeUser($new_user, $send_mail = true) return; } - if ($new_user->getUID() == $this->getOwner()->getUID()) { - throw new Exception("Cannot delete group owner from group. Disband group instead"); - } + // if ($new_user->getUID() == $this->getOwner()->getUID()) { + // throw new Exception("Cannot delete group owner from group. Disband group instead"); + // } // remove request, this will fail silently if the request doesn't exist $this->removeUserFromGroup($new_user); @@ -329,21 +378,25 @@ public function removeUser($new_user, $send_mail = true) $this->MAILER->sendMail( $new_user->getMail(), "group_user_removed", - array("group" => $this->pi_uid) + array("group" => $this->group_uid) ); - // send email to the PI - $this->MAILER->sendMail( - $this->getOwner()->getMail(), - "group_user_removed_owner", - array( - "group" => $this->pi_uid, - "user" => $new_user->getUID(), - "name" => $new_user->getFullName(), - "email" => $new_user->getMail(), - "org" => $new_user->getOrg() + $admins = $this->getGroupAdmins(); + + // send email to the admins + foreach ($admins as $admin) { + $this->MAILER->sendMail( + $admin->getMail(), + "group_user_removed_owner", + array( + "group" => $this->group_uid, + "user" => $new_user->getUID(), + "name" => $new_user->getFullName(), + "email" => $new_user->getMail(), + "org" => $new_user->getOrg() ) - ); + ); + } } } @@ -369,39 +422,43 @@ public function newUserRequest($new_user, $send_mail = true) $this->MAILER->sendMail( $new_user->getMail(), "group_user_request", - array("group" => $this->pi_uid) + array("group" => $this->group_uid) ); - // send email to PI - $this->MAILER->sendMail( - $this->getOwner()->getMail(), - "group_user_request_owner", - array( - "group" => $this->pi_uid, - "user" => $new_user->getUID(), - "name" => $new_user->getFullName(), - "email" => $new_user->getMail(), - "org" => $new_user->getOrg() + $admins = $this->getGroupAdmins(); + + // send email to the admins + foreach ($admins as $admin) { + $this->MAILER->sendMail( + $admin->getMail(), + "group_user_request_owner", + array( + "group" => $this->group_uid, + "user" => $new_user->getUID(), + "name" => $new_user->getFullName(), + "email" => $new_user->getMail(), + "org" => $new_user->getOrg() ) - ); + ); + } } } public function getRequests() { - $requests = $this->SQL->getRequests($this->pi_uid); + $requests = $this->SQL->getJoinRequests($this->group_uid); $out = array(); foreach ($requests as $request) { $user = new UnityUser( - $request["uid"], + $request["requestor"], $this->LDAP, $this->SQL, $this->MAILER, $this->REDIS, $this->WEBHOOK ); - array_push($out, [$user, $request["timestamp"]]); + array_push($out, [$user, $request["requested_on"]]); } return $out; @@ -410,7 +467,7 @@ public function getRequests() public function getGroupMembers($ignorecache = false) { if (!$ignorecache) { - $cached_val = $this->REDIS->getCache($this->getPIUID(), "members"); + $cached_val = $this->REDIS->getCache($this->getGroupUID(), "members"); if (!is_null($cached_val)) { $members = $cached_val; } @@ -418,14 +475,13 @@ public function getGroupMembers($ignorecache = false) $updatecache = false; if (!isset($members)) { - $pi_group = $this->getLDAPPiGroup(); - $members = $pi_group->getAttribute("memberuid"); + $group = $this->getLDAPUnityGroup(); + $members = $group->getAttribute("memberuid"); $updatecache = true; } $out = array(); $cache_arr = array(); - $owner_uid = $this->getOwner()->getUID(); foreach ($members as $member) { $user_obj = new UnityUser( $member, @@ -441,7 +497,7 @@ public function getGroupMembers($ignorecache = false) if (!$ignorecache && $updatecache) { sort($cache_arr); - $this->REDIS->setCache($this->getPIUID(), "members", $cache_arr); + $this->REDIS->setCache($this->getGroupUID(), "members", $cache_arr); } return $out; @@ -449,8 +505,8 @@ public function getGroupMembers($ignorecache = false) public function getGroupMemberUIDs() { - $pi_group = $this->getLDAPPiGroup(); - $members = $pi_group->getAttribute("memberuid"); + $group = $this->getLDAPUnityGroup(); + $members = $group->getAttribute("memberuid"); return $members; } @@ -476,24 +532,27 @@ public function requestExists($user) private function init() { // make this user a PI - $owner = $this->getOwner(); + $requestor_uid = $this->SQL->getRequestor($this->getGroupName()); + + // give the user the defSuperRole of that group type + $this->SQL->assignSuperRole($requestor_uid, $this->getGroupType(), $this->getGroupUID()); // (1) Create LDAP PI group - $ldapPiGroupEntry = $this->getLDAPPiGroup(); + $ldapGroupEntry = $this->getLDAPUnityGroup(); - if (!$ldapPiGroupEntry->exists()) { - $nextGID = $this->LDAP->getNextPiGIDNumber($this->SQL); + if (!$ldapGroupEntry->exists()) { + $nextGID = $this->LDAP->getNextGIDNumber($this->SQL); - $ldapPiGroupEntry->setAttribute("objectclass", UnityLDAP::POSIX_GROUP_CLASS); - $ldapPiGroupEntry->setAttribute("gidnumber", strval($nextGID)); - $ldapPiGroupEntry->setAttribute("memberuid", array($owner->getUID())); + $ldapGroupEntry->setAttribute("objectclass", UnityLDAP::POSIX_GROUP_CLASS); + $ldapGroupEntry->setAttribute("gidnumber", strval($nextGID)); + $ldapGroupEntry->setAttribute("memberuid", array($requestor_uid)); - if (!$ldapPiGroupEntry->write()) { - throw new Exception("Failed to create POSIX group for " . $owner->getUID()); // this shouldn't execute + if (!$ldapGroupEntry->write()) { + throw new Exception("Failed to create POSIX group for " . $requestor_uid); // this shouldn't execute } } - $this->REDIS->appendCacheArray("sorted_groups", "", $this->getPIUID()); + $this->REDIS->appendCacheArray("sorted_groups", "", $this->getGroupUID()); // TODO if we ever make this project based, we need to update the cache here with the memberuid } @@ -501,29 +560,29 @@ private function init() private function addUserToGroup($new_user) { // Add to LDAP Group - $pi_group = $this->getLDAPPiGroup(); - $pi_group->appendAttribute("memberuid", $new_user->getUID()); + $group = $this->getLDAPUnityGroup(); + $group->appendAttribute("memberuid", $new_user->getUID()); - if (!$pi_group->write()) { + if (!$group->write()) { throw new Exception("Unable to write PI group"); } - $this->REDIS->appendCacheArray($this->getPIUID(), "members", $new_user->getUID()); - $this->REDIS->appendCacheArray($new_user->getUID(), "groups", $this->getPIUID()); + $this->REDIS->appendCacheArray($this->getGroupUID(), "members", $new_user->getUID()); + $this->REDIS->appendCacheArray($new_user->getUID(), "groups", $this->getGroupUID()); } private function removeUserFromGroup($old_user) { // Remove from LDAP Group - $pi_group = $this->getLDAPPiGroup(); - $pi_group->removeAttributeEntryByValue("memberuid", $old_user->getUID()); + $group = $this->getLDAPUnityGroup(); + $group->removeAttributeEntryByValue("memberuid", $old_user->getUID()); - if (!$pi_group->write()) { + if (!$group->write()) { throw new Exception("Unable to write PI group"); } - $this->REDIS->removeCacheArray($this->getPIUID(), "members", $old_user->getUID()); - $this->REDIS->removeCacheArray($old_user->getUID(), "groups", $this->getPIUID()); + $this->REDIS->removeCacheArray($this->getGroupUID(), "members", $old_user->getUID()); + $this->REDIS->removeCacheArray($old_user->getUID(), "groups", $this->getGroupUID()); } public function userExists($user) @@ -533,12 +592,12 @@ public function userExists($user) private function addRequest($uid) { - $this->SQL->addRequest($uid, $this->pi_uid); + $this->SQL->addJoinRequest($uid, $this->group_uid); } private function removeRequest($uid) { - $this->SQL->removeRequest($uid, $this->pi_uid); + $this->SQL->removeJoinRequest($uid, $this->group_uid); } // @@ -548,7 +607,7 @@ private function removeRequest($uid) public function getOwner() { return new UnityUser( - self::getUIDfromPIUID($this->pi_uid), + self::getUIDfromGroupUID($this->group_uid), $this->LDAP, $this->SQL, $this->MAILER, @@ -557,22 +616,163 @@ public function getOwner() ); } - public function getLDAPPiGroup() + public function getLDAPUnityGroup() { - return $this->LDAP->getPIGroupEntry($this->pi_uid); + return $this->LDAP->getUnityGroupEntry($this->group_uid); } - public static function getPIUIDfromUID($uid) + public static function getGroupUIDfromUID($uid) { return self::PI_PREFIX . $uid; } - public static function getUIDfromPIUID($pi_uid) + public static function getUIDfromGroupUID($group_uid) { - if (substr($pi_uid, 0, strlen(self::PI_PREFIX)) == self::PI_PREFIX) { - return substr($pi_uid, strlen(self::PI_PREFIX)); + if (substr($group_uid, 0, strlen(self::PI_PREFIX)) == self::PI_PREFIX) { + return substr($group_uid, strlen(self::PI_PREFIX)); } else { throw new Exception("PI netid doesn't have the correct prefix."); } } + + public function getGroupTypeColor() + { + $group_type = $this->getGroupType(); + $group_details = $this->SQL->getGroupTypeDetails($group_type); + return $group_details["color"]; + } + + public function getGroupTypeName() + { + $group_type = $this->getGroupType(); + $group_details = $this->SQL->getGroupTypeDetails($group_type); + return $group_details["name"]; + } + + public function getAvailableRoles() + { + $group_type = $this->getGroupType(); + $group_details = $this->SQL->getGroupTypeDetails($group_type); + $av_roles = $group_details["av_roles"]; + + $out = array(); + foreach ($av_roles as $role) { + $role_obj = array(); + $role_obj["slug"] = $role; + $role_obj["display_name"] = $this->SQL->getRoleName($role); + $role_obj["priority"] = $this->SQL->getPriority($role); + array_push($out, $role_obj); + } + + return $out; + } + + public function getUsersWithRole($role) + { + $gid = $this->getLDAPUnityGroup()->getAttribute("cn")[0]; + $users = $this->SQL->getUsersWithRoles($role, $gid); + + $out = array(); + foreach ($users as $user) { + $user_obj = new UnityUser( + $user, + $this->LDAP, + $this->SQL, + $this->MAILER, + $this->REDIS, + $this->WEBHOOK + ); + array_push($out, $user_obj); + } + + return $out; + } + + public function getUsersWithoutRole() + { + $gid = $this->getLDAPUnityGroup()->getAttribute("cn")[0]; + $current_users_uids = $this->getGroupMemberUIDs(); + $users = $this->SQL->getUsersWithoutRoles($gid, $current_users_uids); + + $out = array(); + foreach ($users as $user) { + $user_obj = new UnityUser( + $user, + $this->LDAP, + $this->SQL, + $this->MAILER, + $this->REDIS, + $this->WEBHOOK + ); + array_push($out, $user_obj); + } + + return $out; + } + + public function assignRole($user, $role) + { + $gid = $this->getLDAPUnityGroup()->getAttribute("cn")[0]; + $this->SQL->assignRole($role, $user->getUID(), $gid); + } + + public function revokeRole($user, $role) + { + $gid = $this->getLDAPUnityGroup()->getAttribute("cn")[0]; + $this->SQL->revokeRole($role, $user, $gid); + } + + public function getPrefix() + { + return "pi_"; + } + + public function getGroupName() + { + // get the group uid, then get the group prefix, and remove the prefix from the group uid + $group_uid = $this->getGroupUID(); + $group_prefix = $this->getPrefix(); + $group_name = substr($group_uid, strlen($group_prefix)); + return $group_name; + } + + public function getGroupType() + { + $group_uid = $this->getGroupUID(); + $group_prefix = substr($group_uid, 0, strpos($group_uid, "_")); + $type = $this->SQL->getGroupType($group_prefix . "_"); + return $type; + } + + public function getGroupAdmins() + { + $current_users_uids = $this->getGroupMemberUIDs(); + + $admins = $this->SQL->getGroupAdmins($this->getGroupUID(), $current_users_uids); + + $admins = array_map(function ($admin) { + return new UnityUser( + $admin, + $this->LDAP, + $this->SQL, + $this->MAILER, + $this->REDIS, + $this->WEBHOOK + ); + }, $admins); + + return $admins; + } + + public function getRolePriority($user) + { + $user_role = $this->SQL->getRole($user, $this->getGroupUID()); + return $this->SQL->getPriority($user_role); + } + + public function getMemberRole($user) + { + $user_role = $this->SQL->getRole($user, $this->getGroupUID()); + return $user_role; + } } diff --git a/resources/lib/UnityLDAP.php b/resources/lib/UnityLDAP.php index fc44cd4f..8d3c8506 100644 --- a/resources/lib/UnityLDAP.php +++ b/resources/lib/UnityLDAP.php @@ -32,14 +32,14 @@ class UnityLDAP extends ldapConn // string vars for OUs private $STR_USEROU; private $STR_GROUPOU; - private $STR_PIGROUPOU; + private $STR_UNITYGROUPOU; private $STR_ORGGROUPOU; private $STR_ADMINGROUP; // Instance vars for various ldapEntry objects private $userOU; private $groupOU; - private $pi_groupOU; + private $unity_groupOU; private $org_groupOU; private $adminGroup; @@ -54,7 +54,7 @@ public function __construct( $custom_user_mappings, $user_ou, $group_ou, - $pigroup_ou, + $unitygroup_ou, $orggroup_ou, $admin_group, $def_user_shell @@ -63,14 +63,14 @@ public function __construct( $this->STR_USEROU = $user_ou; $this->STR_GROUPOU = $group_ou; - $this->STR_PIGROUPOU = $pigroup_ou; + $this->STR_UNITYGROUPOU = $unitygroup_ou; $this->STR_ORGGROUPOU = $orggroup_ou; $this->STR_ADMINGROUP = $admin_group; // Get Global Entries $this->userOU = $this->getEntry($user_ou); $this->groupOU = $this->getEntry($group_ou); - $this->pi_groupOU = $this->getEntry($pigroup_ou); + $this->unity_groupOU = $this->getEntry($unitygroup_ou); $this->org_groupOU = $this->getEntry($orggroup_ou); $this->adminGroup = $this->getEntry($admin_group); @@ -92,9 +92,9 @@ public function getGroupOU() return $this->groupOU; } - public function getPIGroupOU() + public function getUnityGroupOU() { - return $this->pi_groupOU; + return $this->unity_groupOU; } public function getOrgGroupOU() @@ -129,18 +129,18 @@ public function getNextUIDNumber($UnitySQL) return $new_uid; } - public function getNextPiGIDNumber($UnitySQL) + public function getNextGIDNumber($UnitySQL) { - $max_pigid = $UnitySQL->getSiteVar('MAX_PIGID'); - $new_pigid = $max_pigid + 1; + $max_gid = $UnitySQL->getSiteVar('MAX_GID'); + $new_gid = $max_gid + 1; - while ($this->PIGIDNumInUse($new_pigid)) { - $new_pigid++; + while ($this->GIDNumInUse($new_gid)) { + $new_gid++; } - $UnitySQL->updateSiteVar('MAX_PIGID', $new_pigid); + $UnitySQL->updateSiteVar('MAX_GID', $new_gid); - return $new_pigid; + return $new_gid; } public function getNextOrgGIDNumber($UnitySQL) @@ -169,23 +169,11 @@ private function UIDNumInUse($id) return false; } - private function PIGIDNumInUse($id) - { - $pi_groups = $this->pi_groupOU->getChildrenArray(true); - foreach ($pi_groups as $pi_group) { - if ($pi_group["gidnumber"][0] == $id) { - return true; - } - } - - return false; - } - private function GIDNumInUse($id) { - $groups = $this->groupOU->getChildrenArray(true); - foreach ($groups as $group) { - if ($group["gidnumber"][0] == $id) { + $unity_groups = $this->unity_groupOU->getChildrenArray(true); + foreach ($unity_groups as $unity_group) { + if ($unity_group["gidnumber"][0] == $id) { return true; } } @@ -250,7 +238,7 @@ public function getAllUsers($UnitySQL, $UnityMailer, $UnityRedis, $UnityWebhook, return $out; } - public function getAllPIGroups($UnitySQL, $UnityMailer, $UnityRedis, $UnityWebhook, $ignorecache = false) + public function getAllUnityGroups($UnitySQL, $UnityMailer, $UnityRedis, $UnityWebhook, $ignorecache = true) { $out = array(); @@ -266,11 +254,11 @@ public function getAllPIGroups($UnitySQL, $UnityMailer, $UnityRedis, $UnityWebho } } - $pi_groups = $this->pi_groupOU->getChildren(true); + $unity_groups = $this->unity_groupOU->getChildren(true); - foreach ($pi_groups as $pi_group) { + foreach ($unity_groups as $unity_group) { array_push($out, new UnityGroup( - $pi_group->getAttribute("cn")[0], + $unity_group->getAttribute("cn")[0], $this, $UnitySQL, $UnityMailer, @@ -325,9 +313,9 @@ public function getGroupEntry($gid) return $ldap_entry; } - public function getPIGroupEntry($gid) + public function getUnityGroupEntry($gid) { - $ldap_entry = new LDAPEntry($this->getConn(), unityLDAP::RDN . "=$gid," . $this->STR_PIGROUPOU); + $ldap_entry = new LDAPEntry($this->getConn(), unityLDAP::RDN . "=$gid," . $this->STR_UNITYGROUPOU); return $ldap_entry; } @@ -336,4 +324,12 @@ public function getOrgGroupEntry($gid) $ldap_entry = new LDAPEntry($this->getConn(), unityLDAP::RDN . "=$gid," . $this->STR_ORGGROUPOU); return $ldap_entry; } + + public function getGroupType($gid) + { + // $group_entry = $this->getGroupEntry($gid); + // $type = $group_entry->getAttribute("type"); + // return $type[0]; + return "pi"; + } } diff --git a/resources/lib/UnityPerms.php b/resources/lib/UnityPerms.php index e16a66de..ac2951f1 100644 --- a/resources/lib/UnityPerms.php +++ b/resources/lib/UnityPerms.php @@ -13,7 +13,7 @@ public function __construct($SQL, $USER) $this->USER = $USER; } - public function checkApproveUser($uid, $operated_on, $group) + public function checkApproveUser($uid, $group) { if (!$this->USER->isInGroup($uid, $group)) { return false; @@ -29,16 +29,10 @@ public function checkApproveUser($uid, $operated_on, $group) return false; } - $operated_on_role = $this->SQL->getRole($operated_on, $group); - - if ($this->SQL->getPriority($operated_on_role) >= $this->SQL->getPriority($role)) { - return false; - } - return true; } - public function checkDenyUser($uid, $operated_on, $group) + public function checkDenyUser($uid, $group) { if (!$this->USER->isInGroup($uid, $group)) { return false; @@ -54,12 +48,6 @@ public function checkDenyUser($uid, $operated_on, $group) return false; } - $operated_on_role = $this->SQL->getRole($operated_on, $group); - - if ($this->SQL->getPriority($operated_on_role) >= $this->SQL->getPriority($role)) { - return false; - } - return true; } @@ -75,7 +63,7 @@ public function checkGrantRole($uid, $group, $role) $user_role = $this->SQL->getRole($uid, $group); - if ($this->SQL->hasPerm($user_role, 'unity.admin_no_grant') && $role == 'unity.admin') { + if ($this->SQL->hasPerm($user_role, 'unity.admin_no_grant') && $this->SQL->hasPerm($role, 'unity.admin')) { return false; } @@ -87,9 +75,7 @@ public function checkGrantRole($uid, $group, $role) return false; } - $role_to_grant = $this->SQL->getRole($role, $group); - - if ($this->SQL->getPriority($role_to_grant) >= $this->SQL->getPriority($user_role)) { + if ($this->SQL->getPriority($role) >= $this->SQL->getPriority($user_role)) { return false; } @@ -108,7 +94,7 @@ public function checkRevokeRole($uid, $group, $role) $user_role = $this->SQL->getRole($uid, $group); - if ($this->SQL->hasPerm($user_role, 'unity.admin_no_grant') && $role == 'unity.admin') { + if ($this->SQL->hasPerm($user_role, 'unity.admin_no_grant') && $this->SQL->hasPerm($role, 'unity.admin')) { return false; } @@ -120,9 +106,7 @@ public function checkRevokeRole($uid, $group, $role) return false; } - $role_to_revoke = $this->SQL->getRole($role, $group); - - if ($this->SQL->getPriority($role_to_revoke) >= $this->SQL->getPriority($user_role)) { + if ($this->SQL->getPriority($role) >= $this->SQL->getPriority($user_role)) { return false; } diff --git a/resources/lib/UnitySQL.php b/resources/lib/UnitySQL.php index 904ea2fd..eee568ec 100644 --- a/resources/lib/UnitySQL.php +++ b/resources/lib/UnitySQL.php @@ -19,6 +19,7 @@ class UnitySQL private const TABLE_GROUP_ROLE_ASSIGNMENTS = "groupRoleAssignments"; private const TABLE_GROUP_REQUESTS = "groupRequests"; private const TABLE_GROUP_JOIN_REQUESTS = "groupJoinRequests"; + private const TABLE_GROUP_ATTRIBUTES = "groupAttributes"; private const REQUEST_ADMIN = "admin"; @@ -309,14 +310,20 @@ public function updateSiteVar($name, $value) public function getRole($uid, $group) { $stmt = $this->conn->prepare( - "SELECT * FROM " . self::TABLE_GROUP_ROLE_ASSIGNMENTS . " WHERE user=:uid AND `group`=:group" + "SELECT * FROM " . self::TABLE_GROUP_ROLE_ASSIGNMENTS . " WHERE user=:uid AND `group`=:group_uid" ); $stmt->bindParam(":uid", $uid); - $stmt->bindParam(":group", $group); + $stmt->bindParam(":group_uid", $group); $stmt->execute(); + $roles = array(); + foreach ($stmt->fetchAll() as $row) { + $roles[] = $row['role']; + } - return $stmt->fetchAll()[0]['role']; + foreach ($roles as $role) { + return $role; + } } public function hasPerm($role, $perm) @@ -328,9 +335,18 @@ public function hasPerm($role, $perm) $stmt->execute(); - $row = $stmt->fetchAll()[0]; - $perms = explode(",", $row['perms']); - return in_array($perm, $perms); + $perms = array(); + foreach ($stmt->fetchAll() as $row) { + $perms[] = $row['perms']; + } + + foreach ($perms as $p) { + $perms = explode(",", $p); + if (in_array($perm, $perms)) { + return true; + } + } + return false; } public function getPriority($role) @@ -357,7 +373,7 @@ public function roleAvailableInGroup($uid, $group, $role) $stmt->execute(); $row = $stmt->fetchAll()[0]; - $group_slug = $row['group']; + $group_slug = substr($row['group'], 0, strpos($row['group'], "_")); $stmt = $this->conn->prepare( "SELECT * FROM " . self::TABLE_GROUP_TYPES . " WHERE slug=:slug" @@ -367,8 +383,497 @@ public function roleAvailableInGroup($uid, $group, $role) $stmt->execute(); $row = $stmt->fetchAll()[0]; - $roles = explode(",", $row['roles']); + $roles = explode(",", $row['av_roles']); return in_array($role, $roles); } + + public function getGroupRoleAssignments($uid, $group_uid) + { + $stmt = $this->conn->prepare( + "SELECT * FROM " . self::TABLE_GROUP_ROLE_ASSIGNMENTS . " WHERE user=:uid AND `group`=:group" + ); + $stmt->bindParam(":uid", $uid); + $stmt->bindParam(":group", $group_uid); + + $stmt->execute(); + + $roles = array(); + foreach ($stmt->fetchAll() as $row) { + $roles[] = $row['role']; + } + + return $roles; + } + + public function getDefaultRole($group_type) + { + $stmt = $this->conn->prepare( + "SELECT * FROM " . self::TABLE_GROUP_TYPES . " WHERE slug=:slug" + ); + $stmt->bindParam(":slug", $group_type); + + $stmt->execute(); + + $row = $stmt->fetchAll()[0]; + return $row['def_role']; + } + + public function getGroupTypeDetails($group_type) + { + $stmt = $this->conn->prepare( + "SELECT * FROM " . self::TABLE_GROUP_TYPES . " WHERE slug=:slug" + ); + $stmt->bindParam(":slug", $group_type); + + $stmt->execute(); + + $row = $stmt->fetchAll()[0]; + + $out = array(); + $out['name'] = $row['name']; + $out['color'] = $row['color']; + + $av_roles = explode(",", $row['av_roles']); + $out['av_roles'] = $av_roles; + + return $out; + } + + public function getRoleName($role) + { + $stmt = $this->conn->prepare( + "SELECT * FROM " . self::TABLE_GROUP_ROLES . " WHERE slug=:slug" + ); + $stmt->bindParam(":slug", $role); + + $stmt->execute(); + + $row = $stmt->fetchAll()[0]; + return $row['name']; + } + + public function getPermissions($roles) + { + $stmt = $this->conn->prepare( + "SELECT * FROM " . self::TABLE_GROUP_ROLES . " WHERE slug=:slug" + ); + + $perms = array(); + foreach ($roles as $role) { + $stmt->bindParam(":slug", $role); + + $stmt->execute(); + + $row = $stmt->fetchAll()[0]; + $perms = array_merge($perms, explode(",", $row['perms'])); + } + + return $perms; + } + + public function getUsersWithRoles($role, $group_uid) + { + $stmt = $this->conn->prepare( + "SELECT * FROM " . self::TABLE_GROUP_ROLE_ASSIGNMENTS . " WHERE `group`=:group AND role=:role" + ); + + $stmt->bindParam(":group", $group_uid); + $stmt->bindParam(":role", $role); + + $stmt->execute(); + + $users = array(); + foreach ($stmt->fetchAll() as $row) { + $users[] = $row['user']; + } + + return $users; + } + + public function getUsersWithoutRoles($group_uid, $curr_users_uids) + { + $stmt = $this->conn->prepare( + "SELECT * FROM " . self::TABLE_GROUP_ROLE_ASSIGNMENTS . " WHERE `group`=:group" + ); + + $stmt->bindParam(":group", $group_uid); + + $stmt->execute(); + + $users = array(); + foreach ($stmt->fetchAll() as $row) { + $users[] = $row['user']; + } + + $users = array_diff($curr_users_uids, $users); + + return $users; + } + + public function assignRole($role, $uid, $gid) + { + $stmt = $this->conn->prepare( + "INSERT INTO " . self::TABLE_GROUP_ROLE_ASSIGNMENTS . " (user, `group`, role) VALUES (:user, :group, :role)" + ); + + $stmt->bindParam(":user", $uid); + $stmt->bindParam(":group", $gid); + $stmt->bindParam(":role", $role); + + $stmt->execute(); + } + + public function revokeRole($role, $uid, $gid) + { + $stmt = $this->conn->prepare( + "DELETE FROM " . self::TABLE_GROUP_ROLE_ASSIGNMENTS . " WHERE user=:user AND `group`=:group AND role=:role" + ); + + $stmt->bindParam(":user", $uid); + $stmt->bindParam(":group", $gid); + $stmt->bindParam(":role", $role); + + $stmt->execute(); + } + + public function getGroupTypes() + { + $stmt = $this->conn->prepare( + "SELECT * FROM " . self::TABLE_GROUP_TYPES . " WHERE can_request=1" + ); + + $stmt->execute(); + + $types = array(); + foreach ($stmt->fetchAll() as $row) { + $types[] = array( + "slug" => $row['slug'], + "name" => $row['name'], + "time_limited" => $row['time_limited'], + "prefix" => $row['prefix'], + "isNameable" => $row['isNameable'], + "exclusiveOwner" => $row['exclusiveOwner'] + ); + } + + return $types; + } + + public function addGroupRequest($requestor, $group_type, $group_name, $start_date, $end_date) + { + $stmt = $this->conn->prepare( + "INSERT INTO " . self::TABLE_GROUP_REQUESTS . " (requestor, group_type, group_name, start_date, end_date) + VALUES (:requestor, :group_type, :group_name, :start_date, :end_date)" + ); + + $stmt->bindParam(":requestor", $requestor); + $stmt->bindParam(":group_type", $group_type); + $stmt->bindParam(":group_name", $group_name); + $stmt->bindParam(":start_date", $start_date); + $stmt->bindParam(":end_date", $end_date); + + $stmt->execute(); + } + + public function getPendingGroupRequests($user) + { + $stmt = $this->conn->prepare( + "SELECT * FROM " . self::TABLE_GROUP_REQUESTS . " WHERE requestor=:requestor" + ); + + $stmt->bindParam(":requestor", $user); + + $stmt->execute(); + + $requests = array(); + foreach ($stmt->fetchAll() as $row) { + $requests[] = array( + "id" => $row['id'], + "group_type" => $row['group_type'], + "group_name" => $row['group_name'], + "requested_on" => $row['requested_on'] + ); + } + + return $requests; + } + + public function getGroupRequests() + { + $stmt = $this->conn->prepare( + "SELECT * FROM " . self::TABLE_GROUP_REQUESTS + ); + + $stmt->execute(); + + $requests = array(); + foreach ($stmt->fetchAll() as $row) { + $requests[] = array( + "id" => $row['id'], + "requestor" => $row['requestor'], + "group_type" => $row['group_type'], + "group_name" => $row['group_name'], + "requested_on" => $row['requested_on'], + "start_date" => $row['start_date'], + "end_date" => $row['end_date'] + ); + } + + return $requests; + } + + public function removeGroupRequest($user) + { + $stmt = $this->conn->prepare( + "DELETE FROM " . self::TABLE_GROUP_REQUESTS . " WHERE requestor=:requestor" + ); + + $stmt->bindParam(":requestor", $user); + + $stmt->execute(); + } + + public function getRequestor($group) + { + $stmt = $this->conn->prepare( + "SELECT * FROM " . self::TABLE_GROUP_REQUESTS . " WHERE group_name=:group_name" + ); + + $stmt->bindParam(":group_name", $group); + + $stmt->execute(); + + $row = $stmt->fetch(); + + return $row['requestor']; + } + + public function groupRequestExists($user) + { + $stmt = $this->conn->prepare( + "SELECT * FROM " . self::TABLE_GROUP_REQUESTS . " WHERE requestor=:requestor" + ); + + $stmt->bindParam(":requestor", $user); + + $stmt->execute(); + + return count($stmt->fetchAll()) > 0; + } + + public function addJoinRequest($requestor, $group_uid) + { + $stmt = $this->conn->prepare( + "INSERT INTO " . self::TABLE_GROUP_JOIN_REQUESTS . " (requestor, group_name) VALUES (:requestor, :group)" + ); + + $stmt->bindParam(":requestor", $requestor); + $stmt->bindParam(":group", $group_uid); + + $stmt->execute(); + } + + public function removeJoinRequest($requestor, $group_uid) + { + $stmt = $this->conn->prepare( + "DELETE FROM " . self::TABLE_GROUP_JOIN_REQUESTS . " WHERE requestor=:requestor AND group_name=:group_name" + ); + + $stmt->bindParam(":requestor", $requestor); + $stmt->bindParam(":group_name", $group_uid); + + $stmt->execute(); + } + + public function removeJoinRequests($group_uid) + { + $stmt = $this->conn->prepare( + "DELETE FROM " . self::TABLE_GROUP_JOIN_REQUESTS . " WHERE group_name=:group_name" + ); + + $stmt->bindParam(":group_name", $group_uid); + + $stmt->execute(); + } + + public function getJoinRequests($group_uid) + { + $stmt = $this->conn->prepare( + "SELECT * FROM " . self::TABLE_GROUP_JOIN_REQUESTS . " WHERE group_name=:group_name" + ); + + $stmt->bindParam(":group_name", $group_uid); + + $stmt->execute(); + + $requests = array(); + foreach ($stmt->fetchAll() as $row) { + $requests[] = array( + "requestor" => $row['requestor'], + "requested_on" => $row['requested_on'] + ); + } + + return $requests; + } + + public function getJoinRequestsByUser($user) + { + $stmt = $this->conn->prepare( + "SELECT * FROM " . self::TABLE_GROUP_JOIN_REQUESTS . " WHERE requestor=:requestor" + ); + + $stmt->bindParam(":requestor", $user); + + $stmt->execute(); + + $requests = array(); + foreach ($stmt->fetchAll() as $row) { + $requests[] = array( + "group_name" => $row['group_name'], + "requested_on" => $row['requested_on'] + ); + } + + return $requests; + } + + public function cancelJoinRequest($user, $group_uid) + { + $stmt = $this->conn->prepare( + "DELETE FROM " . self::TABLE_GROUP_JOIN_REQUESTS . " WHERE requestor=:requestor AND group_name=:group_name" + ); + + $stmt->bindParam(":requestor", $user); + $stmt->bindParam(":group_name", $group_uid); + + $stmt->execute(); + } + + public function assignSuperRole($user, $group_type, $group_uid) + { + $stmt = $this->conn->prepare( + "SELECT defSuperRole FROM " . self::TABLE_GROUP_TYPES . " WHERE slug=:slug" + ); + + $stmt->bindParam(":slug", $group_type); + + $stmt->execute(); + + $row = $stmt->fetch(); + + $this->assignRole($row['defSuperRole'], $user, $group_uid); + } + + public function getGroupAdmins($group_uid, $users) + { + $admins = array(); + foreach ($users as $user) { + $role = $this->getRole($user, $group_uid); + if ($this->hasPerm($role, "unity.admin")) { + $admins[] = $user; + } + } + return $admins; + } + + public function assignDefRole($user, $group_type, $group_uid) + { + // get the defRole property from the group types table using the $group as slug. then assign the user that role. + $stmt = $this->conn->prepare( + "SELECT def_role FROM " . self::TABLE_GROUP_TYPES . " WHERE slug=:slug" + ); + + $stmt->bindParam(":slug", $group_type); + + $stmt->execute(); + + $row = $stmt->fetch(); + + $this->assignRole($row['def_role'], $user, $group_uid); + } + + public function PIRequestExists($user) + { + $stmt = $this->conn->prepare( + "SELECT * FROM " . self::TABLE_GROUP_REQUESTS . " WHERE requestor=:requestor AND group_type='pi'" + ); + + $stmt->bindParam(":requestor", $user); + + $stmt->execute(); + + return count($stmt->fetchAll()) > 0; + } + + public function getGroupType($prefix) + { + $stmt = $this->conn->prepare( + "SELECT * FROM " . self::TABLE_GROUP_TYPES . " WHERE prefix=:prefix" + ); + + $stmt->bindParam(":prefix", $prefix); + + $stmt->execute(); + + $row = $stmt->fetch(); + + return $row['slug'] ?? null; + } + + public function setGroupAttributes($group_id, $user) + { + $stmt = $this->conn->prepare( + "SELECT * FROM " . self::TABLE_GROUP_REQUESTS . " WHERE requestor=:requestor" + ); + + $stmt->bindParam(":requestor", $user); + + $stmt->execute(); + + $row = $stmt->fetch(); + $group_type = $row['group_type']; + $start_date = $row['start_date']; + $end_date = $row['end_date']; + + $stmt = $this->conn->prepare( + "INSERT INTO " . self::TABLE_GROUP_ATTRIBUTES . " (group_id, group_type, start_date, end_date) + VALUES (:group_id, :group_type, :start_date, :end_date)" + ); + + $stmt->bindParam(":group_id", $group_id); + $stmt->bindParam(":group_type", $group_type); + $stmt->bindParam(":start_date", $start_date); + $stmt->bindParam(":end_date", $end_date); + + $stmt->execute(); + } + + public function modifyGroupAttribute($group_id, $attribute, $value) + { + $stmt = $this->conn->prepare( + "UPDATE " . self::TABLE_GROUP_ATTRIBUTES . " SET " . $attribute . "=:value WHERE group_id=:group_id" + ); + + $stmt->bindParam(":group_id", $group_id); + $stmt->bindParam(":value", $value); + + $stmt->execute(); + } + + public function getGroupAttribute($group_id, $attribute) + { + $stmt = $this->conn->prepare( + "SELECT * FROM " . self::TABLE_GROUP_ATTRIBUTES . " WHERE `group_id`=:group_id" + ); + + $stmt->bindParam(":group_id", $group_id); + + $stmt->execute(); + + $row = $stmt->fetch(); + + return $row[$attribute] ?? null; + } } diff --git a/resources/lib/UnityUser.php b/resources/lib/UnityUser.php index 4f88eac6..d0f90e97 100644 --- a/resources/lib/UnityUser.php +++ b/resources/lib/UnityUser.php @@ -572,13 +572,24 @@ public function isAdmin() */ public function isPI() { - return $this->getPIGroup()->exists(); + $groups = $this->getGroups(); + foreach ($groups as $group) { + if ($group->getGroupType() == "pi") { + $admins = $group->getGroupAdmins(); + foreach ($admins as $admin) { + if ($admin->getUID() == $this->getUID()) { + return true; + } + } + } + } + return false; } - public function getPIGroup() + public function getGroup() { return new UnityGroup( - UnityGroup::getPIUIDfromUID($this->uid), + UnityGroup::getGroupUIDfromUID($this->uid), $this->LDAP, $this->SQL, $this->MAILER, @@ -627,14 +638,14 @@ public function getGroups($ignorecache = false) } } - $all_pi_groups = $this->LDAP->getAllPIGroups($this->SQL, $this->MAILER, $this->REDIS, $ignorecache); + $all_unity_groups = $this->LDAP->getAllUnityGroups($this->SQL, $this->MAILER, $this->REDIS, $ignorecache); $cache_arr = array(); - foreach ($all_pi_groups as $pi_group) { - if (in_array($this->getUID(), $pi_group->getGroupMemberUIDs())) { - array_push($out, $pi_group); - array_push($cache_arr, $pi_group->getPIUID()); + foreach ($all_unity_groups as $unity_group) { + if (in_array($this->getUID(), $unity_group->getGroupMemberUIDs())) { + array_push($out, $unity_group); + array_push($cache_arr, $unity_group->getGroupUID()); } } @@ -696,4 +707,73 @@ public function isInGroup($uid, $group) return in_array($uid, $group_checked->getGroupMemberUIDs()); } + + public function getGroupRoles($group_uid) + { + $uid = $this->getUID(); + $roles = $this->SQL->getGroupRoleAssignments($uid, $group_uid); + if (count($roles) == 0) { + $group_type = $this->LDAP->getGroupType($group_uid); + $def_role = $this->SQL->getDefaultRole($group_type); + $roles = array($def_role); + } + + $role_names = array(); + foreach ($roles as $role) { + $role_names[] = $this->SQL->getRoleName($role); + } + + return $role_names; + } + + public function hasPermission($group_uid, $permission) + { + $uid = $this->getUID(); + $roles = $this->SQL->getGroupRoleAssignments($uid, $group_uid); + if (count($roles) == 0) { + $group_type = $this->LDAP->getGroupType($group_uid); + $def_role = $this->SQL->getDefaultRole($group_type); + $roles = array($def_role); + } + + $permissions = $this->SQL->getPermissions($roles); + $bool = in_array($permission, $permissions); + + if (in_array("unity.admin", $permissions) || in_array("unity.admin_no_grant", $permissions)) { + $bool = true; + } + + return $bool; + } + + public function getRequestableGroupTypes() + { + return $this->SQL->getGroupTypes(); + } + + public function checkGroupName($group_name) + { + $groups = $this->LDAP->getAllUnityGroups($this->SQL, $this->MAILER, $this->REDIS, $this->WEBHOOK); + foreach ($groups as $group) { + if ($group->getGroupName() == $group_name) { + return "not available"; + } + } + return "available"; + } + + public function getPendingGroupRequests() + { + return $this->SQL->getPendingGroupRequests($this->getUID()); + } + + public function getTypeNameFromSlug($types, $slug) + { + foreach ($types as $type) { + if ($type['slug'] == $slug) { + return $type['name']; + } + } + return null; + } } diff --git a/resources/mail/group_request_admin.php b/resources/mail/group_request_admin.php index ab987a03..90a71cf8 100644 --- a/resources/mail/group_request_admin.php +++ b/resources/mail/group_request_admin.php @@ -18,4 +18,4 @@ Email

-

You can approve this account here.

\ No newline at end of file +

You can approve this account here.

\ No newline at end of file diff --git a/resources/mail/group_user_request_owner.php b/resources/mail/group_user_request_owner.php index a6bc53b8..5b14ea72 100644 --- a/resources/mail/group_user_request_owner.php +++ b/resources/mail/group_user_request_owner.php @@ -6,7 +6,7 @@

Hello,

-

A user has requested to join your PI group, . The details of the user are below:

+

A user has requested to join your group, . The details of the user are below:

Username @@ -19,4 +19,7 @@

You can approve or deny this user on the - my users page

\ No newline at end of file + "> + group details + page +

\ No newline at end of file diff --git a/resources/templates/header.php b/resources/templates/header.php index ac765663..2b0d49fb 100644 --- a/resources/templates/header.php +++ b/resources/templates/header.php @@ -64,12 +64,14 @@ // Menu Items for Present Users echo "Support"; echo "Account Settings"; - echo "My PIs"; + echo "My Groups"; + echo "Request New Group"; - if (isset($_SESSION["is_pi"]) && $_SESSION["is_pi"]) { - // PI only pages - echo "My Users"; - } + + // if (isset($_SESSION["is_pi"]) && $_SESSION["is_pi"]) { + // // PI only pages + // echo "My Users"; + // } // additional branding items $num_additional_items = count($CONFIG["menuitems_secure"]["labels"]); @@ -83,7 +85,7 @@ echo ""; // Admin only pages echo "User Management"; - echo "PI Management"; + echo "Group Management"; echo "Cluster Notices"; echo "Content Management"; } diff --git a/tools/docker-dev/identity/bootstrap.ldif b/tools/docker-dev/identity/bootstrap.ldif index 962fc9e7..56c65bac 100644 --- a/tools/docker-dev/identity/bootstrap.ldif +++ b/tools/docker-dev/identity/bootstrap.ldif @@ -9262,12 +9262,12 @@ memberuid: user494_org8_test objectclass: posixGroup objectclass: top -dn: ou=pi_groups,dc=unityhpc,dc=test +dn: ou=unity_groups,dc=unityhpc,dc=test objectclass: organizationalUnit objectclass: top -ou: pi_groups +ou: unity_groups -dn: cn=pi_user36_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user36_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user36_org2_test gidnumber: 10206 memberuid: user36_org2_test @@ -9275,7 +9275,7 @@ memberuid: user912_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user42_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user42_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user42_org1_test gidnumber: 10264 memberuid: user42_org1_test @@ -9347,14 +9347,14 @@ memberuid: user1177_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user45_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user45_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user45_org1_test gidnumber: 10243 memberuid: user45_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user51_org3_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user51_org3_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user51_org3_test gidnumber: 10222 memberuid: user51_org3_test @@ -9362,7 +9362,7 @@ memberuid: user934_org3_test objectclass: posixGroup objectclass: top -dn: cn=pi_user52_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user52_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user52_org1_test gidnumber: 10151 memberuid: user52_org1_test @@ -9380,7 +9380,7 @@ memberuid: user348_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user57_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user57_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user57_org2_test gidnumber: 10132 memberuid: user57_org2_test @@ -9388,14 +9388,14 @@ memberuid: user67_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user66_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user66_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user66_org2_test gidnumber: 10199 memberuid: user66_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user70_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user70_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user70_org1_test gidnumber: 10082 memberuid: user70_org1_test @@ -9409,7 +9409,7 @@ memberuid: user41_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user72_org3_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user72_org3_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user72_org3_test gidnumber: 10223 memberuid: user72_org3_test @@ -9417,7 +9417,7 @@ memberuid: user1223_org3_test objectclass: posixGroup objectclass: top -dn: cn=pi_user78_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user78_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user78_org1_test gidnumber: 10157 memberuid: user78_org1_test @@ -9425,14 +9425,14 @@ memberuid: user526_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user93_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user93_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user93_org1_test gidnumber: 10101 memberuid: user93_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user94_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user94_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user94_org1_test gidnumber: 10088 memberuid: user94_org1_test @@ -9447,7 +9447,7 @@ memberuid: user1196_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user113_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user113_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user113_org1_test gidnumber: 10099 memberuid: user113_org1_test @@ -9455,7 +9455,7 @@ memberuid: user272_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user126_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user126_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user126_org2_test gidnumber: 10077 memberuid: user126_org2_test @@ -9467,7 +9467,7 @@ memberuid: user839_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user130_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user130_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user130_org1_test gidnumber: 10008 memberuid: user130_org1_test @@ -9479,7 +9479,7 @@ memberuid: user734_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user135_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user135_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user135_org1_test gidnumber: 10063 memberuid: user135_org1_test @@ -9488,7 +9488,7 @@ memberuid: user574_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user138_org3_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user138_org3_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user138_org3_test gidnumber: 10116 memberuid: user138_org3_test @@ -9499,7 +9499,7 @@ memberuid: user850_org3_test objectclass: posixGroup objectclass: top -dn: cn=pi_user149_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user149_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user149_org1_test gidnumber: 10071 memberuid: user149_org1_test @@ -9507,7 +9507,7 @@ memberuid: user263_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user150_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user150_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user150_org1_test gidnumber: 10254 memberuid: user150_org1_test @@ -9516,14 +9516,14 @@ memberuid: user208_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user162_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user162_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user162_org1_test gidnumber: 10228 memberuid: user162_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user163_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user163_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user163_org1_test gidnumber: 10179 memberuid: user163_org1_test @@ -9532,14 +9532,14 @@ memberuid: user749_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user166_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user166_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user166_org2_test gidnumber: 10165 memberuid: user166_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user167_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user167_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user167_org1_test gidnumber: 10009 memberuid: user167_org1_test @@ -9548,14 +9548,14 @@ memberuid: user690_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user176_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user176_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user176_org2_test gidnumber: 10216 memberuid: user176_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user181_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user181_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user181_org1_test gidnumber: 10245 memberuid: user181_org1_test @@ -9563,7 +9563,7 @@ memberuid: user909_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user182_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user182_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user182_org1_test gidnumber: 10150 memberuid: user182_org1_test @@ -9572,7 +9572,7 @@ memberuid: user529_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user187_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user187_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user187_org1_test gidnumber: 10103 memberuid: user187_org1_test @@ -9583,14 +9583,14 @@ memberuid: user757_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user188_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user188_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user188_org1_test gidnumber: 10143 memberuid: user188_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user190_org7_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user190_org7_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user190_org7_test gidnumber: 10260 memberuid: user190_org7_test @@ -9599,7 +9599,7 @@ memberuid: user1164_org7_test objectclass: posixGroup objectclass: top -dn: cn=pi_user191_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user191_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user191_org2_test gidnumber: 10181 memberuid: user191_org2_test @@ -9607,7 +9607,7 @@ memberuid: user1113_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user194_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user194_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user194_org1_test gidnumber: 10079 memberuid: user194_org1_test @@ -9625,14 +9625,14 @@ memberuid: user508_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user5_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user5_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user5_org2_test gidnumber: 10135 memberuid: user5_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user197_org3_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user197_org3_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user197_org3_test gidnumber: 10230 memberuid: user197_org3_test @@ -9641,7 +9641,7 @@ memberuid: user748_org3_test objectclass: posixGroup objectclass: top -dn: cn=pi_user198_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user198_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user198_org1_test gidnumber: 10154 memberuid: user198_org1_test @@ -9653,7 +9653,7 @@ memberuid: user317_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user200_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user200_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user200_org2_test gidnumber: 10275 memberuid: user200_org2_test @@ -9661,21 +9661,21 @@ memberuid: user662_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user201_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user201_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user201_org1_test gidnumber: 10010 memberuid: user201_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user205_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user205_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user205_org1_test gidnumber: 10274 memberuid: user205_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user206_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user206_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user206_org1_test gidnumber: 10048 memberuid: user206_org1_test @@ -9687,14 +9687,14 @@ memberuid: user772_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user207_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user207_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user207_org1_test gidnumber: 10220 memberuid: user207_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user212_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user212_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user212_org1_test gidnumber: 10074 memberuid: user212_org1_test @@ -9708,14 +9708,14 @@ memberuid: user894_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user214_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user214_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user214_org1_test gidnumber: 10145 memberuid: user214_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user216_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user216_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user216_org1_test gidnumber: 10005 memberuid: user216_org1_test @@ -9730,7 +9730,7 @@ memberuid: user472_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user219_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user219_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user219_org1_test gidnumber: 10012 memberuid: user219_org1_test @@ -9741,14 +9741,14 @@ memberuid: user364_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user226_org3_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user226_org3_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user226_org3_test gidnumber: 10164 memberuid: user226_org3_test objectclass: posixGroup objectclass: top -dn: cn=pi_user9_org3_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user9_org3_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user9_org3_test gidnumber: 10094 memberuid: user9_org3_test @@ -9756,14 +9756,14 @@ memberuid: user33_org3_test objectclass: posixGroup objectclass: top -dn: cn=pi_user242_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user242_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user242_org1_test gidnumber: 10052 memberuid: user242_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user247_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user247_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user247_org1_test gidnumber: 10126 memberuid: user247_org1_test @@ -9771,7 +9771,7 @@ memberuid: user178_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user252_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user252_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user252_org1_test gidnumber: 10261 memberuid: user252_org1_test @@ -9782,14 +9782,14 @@ memberuid: user918_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user253_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user253_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user253_org1_test gidnumber: 10013 memberuid: user253_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user256_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user256_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user256_org1_test gidnumber: 10006 memberuid: user256_org1_test @@ -9813,14 +9813,14 @@ memberuid: user280_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user264_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user264_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user264_org1_test gidnumber: 10073 memberuid: user264_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user266_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user266_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user266_org1_test gidnumber: 10162 memberuid: user266_org1_test @@ -9828,21 +9828,21 @@ memberuid: user111_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user268_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user268_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user268_org1_test gidnumber: 10239 memberuid: user268_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user274_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user274_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user274_org2_test gidnumber: 10283 memberuid: user274_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user277_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user277_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user277_org1_test gidnumber: 10014 memberuid: user277_org1_test @@ -9853,7 +9853,7 @@ memberuid: user217_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user278_org3_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user278_org3_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user278_org3_test gidnumber: 10180 memberuid: user278_org3_test @@ -9861,14 +9861,14 @@ memberuid: user20_org3_test objectclass: posixGroup objectclass: top -dn: cn=pi_user288_org7_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user288_org7_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user288_org7_test gidnumber: 10234 memberuid: user288_org7_test objectclass: posixGroup objectclass: top -dn: cn=pi_user291_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user291_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user291_org1_test gidnumber: 10201 memberuid: user291_org1_test @@ -9878,21 +9878,21 @@ memberuid: user441_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user292_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user292_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user292_org2_test gidnumber: 10229 memberuid: user292_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user295_org3_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user295_org3_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user295_org3_test gidnumber: 10277 memberuid: user295_org3_test objectclass: posixGroup objectclass: top -dn: cn=pi_user303_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user303_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user303_org1_test gidnumber: 10209 memberuid: user303_org1_test @@ -9901,14 +9901,14 @@ memberuid: user389_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user304_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user304_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user304_org1_test gidnumber: 10248 memberuid: user304_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user309_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user309_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user309_org1_test gidnumber: 10015 memberuid: user309_org1_test @@ -9919,7 +9919,7 @@ memberuid: user447_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user312_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user312_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user312_org1_test gidnumber: 10155 memberuid: user312_org1_test @@ -9929,7 +9929,7 @@ memberuid: user556_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user315_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user315_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user315_org2_test gidnumber: 10112 memberuid: user315_org2_test @@ -9938,7 +9938,7 @@ memberuid: user866_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user326_org3_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user326_org3_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user326_org3_test gidnumber: 10173 memberuid: user326_org3_test @@ -9946,7 +9946,7 @@ memberuid: user883_org3_test objectclass: posixGroup objectclass: top -dn: cn=pi_user329_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user329_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user329_org1_test gidnumber: 10136 memberuid: user329_org1_test @@ -9955,14 +9955,14 @@ memberuid: user148_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user331_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user331_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user331_org1_test gidnumber: 10227 memberuid: user331_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user336_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user336_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user336_org1_test gidnumber: 10137 memberuid: user336_org1_test @@ -9970,7 +9970,7 @@ memberuid: user478_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user338_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user338_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user338_org1_test gidnumber: 10267 memberuid: user338_org1_test @@ -9978,7 +9978,7 @@ memberuid: user1149_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user342_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user342_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user342_org1_test gidnumber: 10090 memberuid: user342_org1_test @@ -9992,7 +9992,7 @@ memberuid: user535_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user345_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user345_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user345_org1_test gidnumber: 10186 memberuid: user345_org1_test @@ -10000,14 +10000,14 @@ memberuid: user1084_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user346_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user346_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user346_org2_test gidnumber: 10246 memberuid: user346_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user347_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user347_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user347_org2_test gidnumber: 10081 memberuid: user347_org2_test @@ -10015,14 +10015,14 @@ memberuid: user24_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user354_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user354_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user354_org1_test gidnumber: 10016 memberuid: user354_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user371_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user371_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user371_org1_test gidnumber: 10066 memberuid: user371_org1_test @@ -10036,14 +10036,14 @@ memberuid: user1024_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user372_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user372_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user372_org1_test gidnumber: 10053 memberuid: user372_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user373_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user373_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user373_org1_test gidnumber: 10065 memberuid: user373_org1_test @@ -10056,7 +10056,7 @@ memberuid: user1286_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user382_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user382_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user382_org1_test gidnumber: 10219 memberuid: user382_org1_test @@ -10064,14 +10064,14 @@ memberuid: user590_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user386_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user386_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user386_org1_test gidnumber: 10197 memberuid: user386_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user391_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user391_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user391_org1_test gidnumber: 10098 memberuid: user391_org1_test @@ -10080,14 +10080,14 @@ memberuid: user874_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user393_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user393_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user393_org1_test gidnumber: 10017 memberuid: user393_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user395_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user395_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user395_org1_test gidnumber: 10122 memberuid: user395_org1_test @@ -10095,7 +10095,7 @@ memberuid: user993_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user398_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user398_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user398_org1_test gidnumber: 10169 memberuid: user398_org1_test @@ -10103,7 +10103,7 @@ memberuid: user394_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user400_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user400_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user400_org1_test gidnumber: 10170 memberuid: user400_org1_test @@ -10113,7 +10113,7 @@ memberuid: user653_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user404_org3_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user404_org3_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user404_org3_test gidnumber: 10152 memberuid: user404_org3_test @@ -10121,14 +10121,14 @@ memberuid: user145_org3_test objectclass: posixGroup objectclass: top -dn: cn=pi_user407_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user407_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user407_org1_test gidnumber: 10238 memberuid: user407_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user415_org3_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user415_org3_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user415_org3_test gidnumber: 10002 memberuid: user415_org3_test @@ -10138,7 +10138,7 @@ memberuid: user333_org3_test objectclass: posixGroup objectclass: top -dn: cn=pi_user416_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user416_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user416_org1_test gidnumber: 10279 memberuid: user416_org1_test @@ -10146,7 +10146,7 @@ memberuid: user952_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user420_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user420_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user420_org1_test gidnumber: 10147 memberuid: user420_org1_test @@ -10154,7 +10154,7 @@ memberuid: user977_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user423_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user423_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user423_org1_test gidnumber: 10252 memberuid: user423_org1_test @@ -10162,14 +10162,14 @@ memberuid: user1211_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user424_org3_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user424_org3_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user424_org3_test gidnumber: 10011 memberuid: user424_org3_test objectclass: posixGroup objectclass: top -dn: cn=pi_user424_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user424_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user424_org2_test gidnumber: 10040 memberuid: user424_org2_test @@ -10184,7 +10184,7 @@ memberuid: user1002_org3_test objectclass: posixGroup objectclass: top -dn: cn=pi_user426_org3_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user426_org3_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user426_org3_test gidnumber: 10177 memberuid: user426_org3_test @@ -10194,7 +10194,7 @@ memberuid: user202_org3_test objectclass: posixGroup objectclass: top -dn: cn=pi_user432_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user432_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user432_org2_test gidnumber: 10212 memberuid: user432_org2_test @@ -10202,7 +10202,7 @@ memberuid: user595_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user433_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user433_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user433_org1_test gidnumber: 10156 memberuid: user433_org1_test @@ -10210,14 +10210,14 @@ memberuid: user209_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user436_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user436_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user436_org2_test gidnumber: 10236 memberuid: user436_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user438_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user438_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user438_org1_test gidnumber: 10001 memberuid: user341_org1_test @@ -10232,7 +10232,7 @@ memberuid: user661_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user439_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user439_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user439_org2_test gidnumber: 10205 memberuid: user439_org2_test @@ -10242,7 +10242,7 @@ memberuid: user1133_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user440_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user440_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user440_org1_test gidnumber: 10060 memberuid: user440_org1_test @@ -10252,7 +10252,7 @@ memberuid: user146_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user442_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user442_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user442_org1_test gidnumber: 10263 memberuid: user442_org1_test @@ -10261,7 +10261,7 @@ memberuid: user1053_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user446_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user446_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user446_org1_test gidnumber: 10047 memberuid: user446_org1_test @@ -10282,7 +10282,7 @@ memberuid: user240_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user452_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user452_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user452_org1_test gidnumber: 10003 memberuid: user452_org1_test @@ -10291,7 +10291,7 @@ memberuid: user746_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user453_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user453_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user453_org1_test gidnumber: 10118 memberuid: user453_org1_test @@ -10300,7 +10300,7 @@ memberuid: user555_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user458_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user458_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user458_org1_test gidnumber: 10089 memberuid: user458_org1_test @@ -10315,7 +10315,7 @@ memberuid: user910_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user460_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user460_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user460_org1_test gidnumber: 10172 memberuid: user460_org1_test @@ -10323,14 +10323,14 @@ memberuid: user172_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user466_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user466_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user466_org2_test gidnumber: 10166 memberuid: user466_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user467_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user467_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user467_org2_test gidnumber: 10129 memberuid: user467_org2_test @@ -10339,7 +10339,7 @@ memberuid: user259_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user480_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user480_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user480_org1_test gidnumber: 10168 memberuid: user480_org1_test @@ -10347,7 +10347,7 @@ memberuid: user900_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user483_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user483_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user483_org1_test gidnumber: 10141 memberuid: user483_org1_test @@ -10385,7 +10385,7 @@ memberuid: user1061_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user487_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user487_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user487_org2_test gidnumber: 10194 memberuid: user487_org2_test @@ -10401,7 +10401,7 @@ memberuid: user648_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user496_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user496_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user496_org1_test gidnumber: 10087 memberuid: user496_org1_test @@ -10432,7 +10432,7 @@ memberuid: user557_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user500_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user500_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user500_org1_test gidnumber: 10093 memberuid: user500_org1_test @@ -10455,7 +10455,7 @@ memberuid: user953_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user502_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user502_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user502_org1_test gidnumber: 10203 memberuid: user502_org1_test @@ -10465,7 +10465,7 @@ memberuid: user82_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user507_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user507_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user507_org2_test gidnumber: 10110 memberuid: user507_org2_test @@ -10479,14 +10479,14 @@ memberuid: user5_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user513_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user513_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user513_org1_test gidnumber: 10108 memberuid: user513_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user517_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user517_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user517_org1_test gidnumber: 10251 memberuid: user517_org1_test @@ -10495,14 +10495,14 @@ memberuid: user616_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user519_org7_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user519_org7_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user519_org7_test gidnumber: 10259 memberuid: user519_org7_test objectclass: posixGroup objectclass: top -dn: cn=pi_user528_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user528_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user528_org1_test gidnumber: 10104 memberuid: user528_org1_test @@ -10510,7 +10510,7 @@ memberuid: user799_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user530_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user530_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user530_org1_test gidnumber: 10095 memberuid: user530_org1_test @@ -10521,14 +10521,14 @@ memberuid: user402_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user532_org7_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user532_org7_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user532_org7_test gidnumber: 10174 memberuid: user532_org7_test objectclass: posixGroup objectclass: top -dn: cn=pi_user534_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user534_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user534_org1_test gidnumber: 10085 memberuid: user534_org1_test @@ -10540,7 +10540,7 @@ memberuid: user896_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user543_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user543_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user543_org1_test gidnumber: 10111 memberuid: user543_org1_test @@ -10601,7 +10601,7 @@ memberuid: user960_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1_org1_test gidnumber: 10000 memberuid: user4_org1_test @@ -10622,7 +10622,7 @@ memberuid: user697_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user546_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user546_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user546_org1_test gidnumber: 10193 memberuid: user546_org1_test @@ -10630,7 +10630,7 @@ memberuid: user103_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user550_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user550_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user550_org1_test gidnumber: 10187 memberuid: user550_org1_test @@ -10638,7 +10638,7 @@ memberuid: user1107_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user551_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user551_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user551_org1_test gidnumber: 10019 memberuid: user551_org1_test @@ -10651,14 +10651,14 @@ memberuid: user1023_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user554_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user554_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user554_org2_test gidnumber: 10241 memberuid: user554_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user559_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user559_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user559_org1_test gidnumber: 10004 memberuid: user559_org1_test @@ -10666,7 +10666,7 @@ memberuid: user509_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user560_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user560_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user560_org1_test gidnumber: 10057 memberuid: user560_org1_test @@ -10675,7 +10675,7 @@ memberuid: user589_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user561_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user561_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user561_org1_test gidnumber: 10054 memberuid: user561_org1_test @@ -10684,14 +10684,14 @@ memberuid: user25_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user564_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user564_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user564_org1_test gidnumber: 10123 memberuid: user564_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user565_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user565_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user565_org1_test gidnumber: 10018 memberuid: user565_org1_test @@ -10724,7 +10724,7 @@ memberuid: user1167_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user569_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user569_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user569_org1_test gidnumber: 10106 memberuid: user569_org1_test @@ -10740,7 +10740,7 @@ memberuid: user143_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user575_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user575_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user575_org1_test gidnumber: 10092 memberuid: user575_org1_test @@ -10748,28 +10748,28 @@ memberuid: user863_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user580_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user580_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user580_org1_test gidnumber: 10119 memberuid: user580_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user582_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user582_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user582_org1_test gidnumber: 10051 memberuid: user582_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user586_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user586_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user586_org1_test gidnumber: 10020 memberuid: user586_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user591_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user591_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user591_org1_test gidnumber: 10139 memberuid: user591_org1_test @@ -10780,7 +10780,7 @@ memberuid: user281_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user592_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user592_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user592_org2_test gidnumber: 10235 memberuid: user592_org2_test @@ -10788,7 +10788,7 @@ memberuid: user410_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user601_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user601_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user601_org1_test gidnumber: 10080 memberuid: user601_org1_test @@ -10810,14 +10810,14 @@ memberuid: user1147_org9_test objectclass: posixGroup objectclass: top -dn: cn=pi_user608_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user608_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user608_org1_test gidnumber: 10070 memberuid: user608_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user615_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user615_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user615_org1_test gidnumber: 10021 memberuid: user615_org1_test @@ -10829,21 +10829,21 @@ memberuid: user838_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user626_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user626_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user626_org1_test gidnumber: 10107 memberuid: user626_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user635_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user635_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user635_org1_test gidnumber: 10175 memberuid: user635_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user636_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user636_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user636_org2_test gidnumber: 10195 memberuid: user636_org2_test @@ -10851,7 +10851,7 @@ memberuid: user694_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user641_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user641_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user641_org1_test gidnumber: 10084 memberuid: user641_org1_test @@ -10861,7 +10861,7 @@ memberuid: user409_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user647_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user647_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user647_org1_test gidnumber: 10115 memberuid: user647_org1_test @@ -10870,7 +10870,7 @@ memberuid: user800_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user656_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user656_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user656_org1_test gidnumber: 10064 memberuid: user656_org1_test @@ -10878,7 +10878,7 @@ memberuid: user80_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user659_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user659_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user659_org1_test gidnumber: 10144 memberuid: user659_org1_test @@ -10886,14 +10886,14 @@ memberuid: user265_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user663_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user663_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user663_org2_test gidnumber: 10202 memberuid: user663_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user666_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user666_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user666_org1_test gidnumber: 10125 memberuid: user666_org1_test @@ -10904,7 +10904,7 @@ memberuid: user379_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user670_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user670_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user670_org1_test gidnumber: 10062 memberuid: user670_org1_test @@ -10912,7 +10912,7 @@ memberuid: user195_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user674_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user674_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user674_org1_test gidnumber: 10217 memberuid: user674_org1_test @@ -10920,7 +10920,7 @@ memberuid: user680_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user676_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user676_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user676_org1_test gidnumber: 10058 memberuid: user676_org1_test @@ -10932,7 +10932,7 @@ memberuid: user1085_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user677_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user677_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user677_org1_test gidnumber: 10127 memberuid: user677_org1_test @@ -10942,7 +10942,7 @@ memberuid: user484_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user681_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user681_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user681_org1_test gidnumber: 10042 memberuid: user681_org1_test @@ -10967,7 +10967,7 @@ memberuid: user267_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user688_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user688_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user688_org1_test gidnumber: 10113 memberuid: user688_org1_test @@ -10982,7 +10982,7 @@ memberuid: user618_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user695_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user695_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user695_org2_test gidnumber: 10211 memberuid: user695_org2_test @@ -10991,7 +10991,7 @@ memberuid: user541_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user699_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user699_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user699_org1_test gidnumber: 10075 memberuid: user699_org1_test @@ -11000,14 +11000,14 @@ memberuid: user44_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user703_org11_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user703_org11_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user703_org11_test gidnumber: 10207 memberuid: user703_org11_test objectclass: posixGroup objectclass: top -dn: cn=pi_user714_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user714_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user714_org2_test gidnumber: 10044 memberuid: user714_org2_test @@ -11016,7 +11016,7 @@ memberuid: user538_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user717_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user717_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user717_org2_test gidnumber: 10200 memberuid: user717_org2_test @@ -11025,7 +11025,7 @@ memberuid: user929_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user720_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user720_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user720_org1_test gidnumber: 10161 memberuid: user720_org1_test @@ -11034,7 +11034,7 @@ memberuid: user470_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user722_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user722_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user722_org1_test gidnumber: 10091 memberuid: user722_org1_test @@ -11045,7 +11045,7 @@ memberuid: user88_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user724_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user724_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user724_org1_test gidnumber: 10045 memberuid: user724_org1_test @@ -11053,7 +11053,7 @@ memberuid: user864_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user725_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user725_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user725_org2_test gidnumber: 10198 memberuid: user725_org2_test @@ -11061,7 +11061,7 @@ memberuid: user876_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user727_org7_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user727_org7_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user727_org7_test gidnumber: 10266 memberuid: user727_org7_test @@ -11069,7 +11069,7 @@ memberuid: user1192_org7_test objectclass: posixGroup objectclass: top -dn: cn=pi_user730_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user730_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user730_org1_test gidnumber: 10072 memberuid: user730_org1_test @@ -11082,7 +11082,7 @@ memberuid: user451_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user733_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user733_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user733_org1_test gidnumber: 10036 memberuid: user733_org1_test @@ -11093,7 +11093,7 @@ memberuid: user951_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user736_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user736_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user736_org1_test gidnumber: 10083 memberuid: user736_org1_test @@ -11146,14 +11146,14 @@ memberuid: user109_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user737_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user737_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user737_org1_test gidnumber: 10039 memberuid: user737_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user743_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user743_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user743_org1_test gidnumber: 10069 memberuid: user743_org1_test @@ -11162,7 +11162,7 @@ memberuid: user1098_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user744_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user744_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user744_org1_test gidnumber: 10022 memberuid: user744_org1_test @@ -11171,7 +11171,7 @@ memberuid: user787_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user751_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user751_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user751_org1_test gidnumber: 10130 memberuid: user751_org1_test @@ -11189,21 +11189,21 @@ memberuid: user1034_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user758_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user758_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user758_org1_test gidnumber: 10278 memberuid: user758_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user764_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user764_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user764_org1_test gidnumber: 10237 memberuid: user764_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user765_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user765_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user765_org1_test gidnumber: 10067 memberuid: user765_org1_test @@ -11224,7 +11224,7 @@ memberuid: user1157_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user777_org3_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user777_org3_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user777_org3_test gidnumber: 10102 memberuid: user777_org3_test @@ -11236,7 +11236,7 @@ memberuid: user766_org3_test objectclass: posixGroup objectclass: top -dn: cn=pi_user782_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user782_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user782_org1_test gidnumber: 10059 memberuid: user782_org1_test @@ -11244,7 +11244,7 @@ memberuid: user1162_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user783_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user783_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user783_org1_test gidnumber: 10167 memberuid: user783_org1_test @@ -11253,7 +11253,7 @@ memberuid: user991_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user784_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user784_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user784_org1_test gidnumber: 10281 memberuid: user784_org1_test @@ -11261,7 +11261,7 @@ memberuid: user228_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user785_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user785_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user785_org1_test gidnumber: 10023 memberuid: user785_org1_test @@ -11273,7 +11273,7 @@ memberuid: user1256_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user786_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user786_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user786_org1_test gidnumber: 10024 memberuid: user786_org1_test @@ -11283,14 +11283,14 @@ memberuid: user942_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user788_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user788_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user788_org2_test gidnumber: 10191 memberuid: user788_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user789_org3_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user789_org3_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user789_org3_test gidnumber: 10007 memberuid: user789_org3_test @@ -11303,14 +11303,14 @@ memberuid: user630_org3_test objectclass: posixGroup objectclass: top -dn: cn=pi_user795_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user795_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user795_org1_test gidnumber: 10178 memberuid: user795_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user796_org11_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user796_org11_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user796_org11_test gidnumber: 10133 memberuid: user796_org11_test @@ -11318,7 +11318,7 @@ memberuid: user710_org11_test objectclass: posixGroup objectclass: top -dn: cn=pi_user798_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user798_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user798_org1_test gidnumber: 10035 memberuid: user798_org1_test @@ -11326,14 +11326,14 @@ memberuid: user756_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user801_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user801_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user801_org1_test gidnumber: 10271 memberuid: user801_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user803_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user803_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user803_org1_test gidnumber: 10025 memberuid: user803_org1_test @@ -11341,7 +11341,7 @@ memberuid: user1058_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user805_org3_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user805_org3_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user805_org3_test gidnumber: 10242 memberuid: user805_org3_test @@ -11351,14 +11351,14 @@ memberuid: user673_org3_test objectclass: posixGroup objectclass: top -dn: cn=pi_user809_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user809_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user809_org2_test gidnumber: 10190 memberuid: user809_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user817_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user817_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user817_org1_test gidnumber: 10026 memberuid: user817_org1_test @@ -11370,21 +11370,21 @@ memberuid: user504_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user830_org11_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user830_org11_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user830_org11_test gidnumber: 10100 memberuid: user830_org11_test objectclass: posixGroup objectclass: top -dn: cn=pi_user832_org14_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user832_org14_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user832_org14_test gidnumber: 10268 memberuid: user832_org14_test objectclass: posixGroup objectclass: top -dn: cn=pi_user833_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user833_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user833_org1_test gidnumber: 10218 memberuid: user833_org1_test @@ -11395,14 +11395,14 @@ memberuid: user763_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user834_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user834_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user834_org2_test gidnumber: 10224 memberuid: user834_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user848_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user848_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user848_org1_test gidnumber: 10225 memberuid: user848_org1_test @@ -11410,14 +11410,14 @@ memberuid: user284_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user849_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user849_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user849_org1_test gidnumber: 10160 memberuid: user849_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user857_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user857_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user857_org1_test gidnumber: 10027 memberuid: user857_org1_test @@ -11426,7 +11426,7 @@ memberuid: user708_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user859_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user859_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user859_org1_test gidnumber: 10158 memberuid: user859_org1_test @@ -11434,49 +11434,49 @@ memberuid: user96_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user865_org7_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user865_org7_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user865_org7_test gidnumber: 10221 memberuid: user865_org7_test objectclass: posixGroup objectclass: top -dn: cn=pi_user868_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user868_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user868_org1_test gidnumber: 10076 memberuid: user868_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user870_org3_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user870_org3_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user870_org3_test gidnumber: 10233 memberuid: user870_org3_test objectclass: posixGroup objectclass: top -dn: cn=pi_user872_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user872_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user872_org1_test gidnumber: 10038 memberuid: user872_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user873_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user873_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user873_org2_test gidnumber: 10142 memberuid: user873_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user875_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user875_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user875_org1_test gidnumber: 10185 memberuid: user875_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user877_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user877_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user877_org1_test gidnumber: 10028 memberuid: user877_org1_test @@ -11496,21 +11496,21 @@ memberuid: user562_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user878_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user878_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user878_org2_test gidnumber: 10214 memberuid: user878_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user879_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user879_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user879_org1_test gidnumber: 10037 memberuid: user879_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user881_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user881_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user881_org1_test gidnumber: 10086 memberuid: user881_org1_test @@ -11519,7 +11519,7 @@ memberuid: user220_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user882_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user882_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user882_org1_test gidnumber: 10215 memberuid: user882_org1_test @@ -11528,7 +11528,7 @@ memberuid: user238_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user885_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user885_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user885_org1_test gidnumber: 10029 memberuid: user885_org1_test @@ -11537,28 +11537,28 @@ memberuid: user490_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user886_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user886_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user886_org1_test gidnumber: 10121 memberuid: user886_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user890_org3_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user890_org3_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user890_org3_test gidnumber: 10182 memberuid: user890_org3_test objectclass: posixGroup objectclass: top -dn: cn=pi_user905_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user905_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user905_org1_test gidnumber: 10272 memberuid: user905_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user915_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user915_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user915_org1_test gidnumber: 10184 memberuid: user915_org1_test @@ -11566,28 +11566,28 @@ memberuid: user431_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user917_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user917_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user917_org1_test gidnumber: 10280 memberuid: user917_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user928_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user928_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user928_org1_test gidnumber: 10050 memberuid: user928_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user931_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user931_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user931_org1_test gidnumber: 10253 memberuid: user931_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user933_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user933_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user933_org2_test gidnumber: 10153 memberuid: user933_org2_test @@ -11597,7 +11597,7 @@ memberuid: user1050_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user935_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user935_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user935_org1_test gidnumber: 10114 memberuid: user935_org1_test @@ -11606,7 +11606,7 @@ memberuid: user115_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user936_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user936_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user936_org1_test gidnumber: 10061 memberuid: user936_org1_test @@ -11614,7 +11614,7 @@ memberuid: user831_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user937_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user937_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user937_org1_test gidnumber: 10171 memberuid: user937_org1_test @@ -11623,7 +11623,7 @@ memberuid: user356_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user938_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user938_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user938_org1_test gidnumber: 10068 memberuid: user938_org1_test @@ -11632,7 +11632,7 @@ memberuid: user1153_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user940_org3_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user940_org3_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user940_org3_test gidnumber: 10183 memberuid: user940_org3_test @@ -11641,7 +11641,7 @@ memberuid: user945_org3_test objectclass: posixGroup objectclass: top -dn: cn=pi_user955_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user955_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user955_org2_test gidnumber: 10105 memberuid: user955_org2_test @@ -11651,7 +11651,7 @@ memberuid: user140_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user957_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user957_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user957_org1_test gidnumber: 10247 memberuid: user957_org1_test @@ -11662,7 +11662,7 @@ memberuid: user1174_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user962_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user962_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user962_org1_test gidnumber: 10204 memberuid: user962_org1_test @@ -11672,7 +11672,7 @@ memberuid: user624_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user967_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user967_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user967_org1_test gidnumber: 10096 memberuid: user967_org1_test @@ -11683,14 +11683,14 @@ memberuid: user1159_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user968_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user968_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user968_org2_test gidnumber: 10120 memberuid: user968_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user975_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user975_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user975_org1_test gidnumber: 10176 memberuid: user975_org1_test @@ -11702,7 +11702,7 @@ memberuid: user218_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user979_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user979_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user979_org2_test gidnumber: 10232 memberuid: user979_org2_test @@ -11714,7 +11714,7 @@ memberuid: user985_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1005_org3_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1005_org3_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1005_org3_test gidnumber: 10262 memberuid: user1005_org3_test @@ -11722,7 +11722,7 @@ memberuid: user203_org3_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1009_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1009_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1009_org1_test gidnumber: 10034 memberuid: user1009_org1_test @@ -11730,14 +11730,14 @@ memberuid: user474_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1018_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1018_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1018_org2_test gidnumber: 10255 memberuid: user1018_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1019_org3_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1019_org3_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1019_org3_test gidnumber: 10149 memberuid: user1019_org3_test @@ -11747,7 +11747,7 @@ memberuid: user646_org3_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1022_org3_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1022_org3_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1022_org3_test gidnumber: 10163 memberuid: user1022_org3_test @@ -11755,7 +11755,7 @@ memberuid: user159_org3_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1028_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1028_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1028_org1_test gidnumber: 10134 memberuid: user1028_org1_test @@ -11766,7 +11766,7 @@ memberuid: user447_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1029_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1029_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1029_org1_test gidnumber: 10148 memberuid: user1029_org1_test @@ -11774,7 +11774,7 @@ memberuid: user903_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1033_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1033_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1033_org1_test gidnumber: 10196 memberuid: user1033_org1_test @@ -11785,14 +11785,14 @@ memberuid: user79_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1039_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1039_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1039_org1_test gidnumber: 10256 memberuid: user1039_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1045_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1045_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1045_org1_test gidnumber: 10030 memberuid: user1045_org1_test @@ -11801,21 +11801,21 @@ memberuid: user1154_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1053_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1053_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1053_org1_test gidnumber: 10258 memberuid: user1053_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1056_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1056_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1056_org2_test gidnumber: 10270 memberuid: user1056_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1062_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1062_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1062_org1_test gidnumber: 10097 memberuid: user1062_org1_test @@ -11830,7 +11830,7 @@ memberuid: user1090_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1076_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1076_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1076_org1_test gidnumber: 10276 memberuid: user1076_org1_test @@ -11840,7 +11840,7 @@ memberuid: user494_org8_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1077_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1077_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1077_org2_test gidnumber: 10131 memberuid: user1077_org2_test @@ -11851,35 +11851,35 @@ memberuid: user525_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1079_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1079_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1079_org1_test gidnumber: 10159 memberuid: user1079_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1082_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1082_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1082_org1_test gidnumber: 10056 memberuid: user1082_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1101_org14_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1101_org14_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1101_org14_test gidnumber: 10269 memberuid: user1101_org14_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1103_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1103_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1103_org2_test gidnumber: 10240 memberuid: user1103_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1109_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1109_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1109_org2_test gidnumber: 10192 memberuid: user1109_org2_test @@ -11887,7 +11887,7 @@ memberuid: user520_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1110_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1110_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1110_org2_test gidnumber: 10257 memberuid: user1110_org2_test @@ -11895,7 +11895,7 @@ memberuid: user183_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1111_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1111_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1111_org1_test gidnumber: 10138 memberuid: user1111_org1_test @@ -11907,14 +11907,14 @@ memberuid: user671_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1118_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1118_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1118_org1_test gidnumber: 10033 memberuid: user1118_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1123_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1123_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1123_org1_test gidnumber: 10140 memberuid: user1123_org1_test @@ -11928,7 +11928,7 @@ memberuid: user806_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user11_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user11_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user11_org1_test gidnumber: 10031 memberuid: user11_org1_test @@ -11942,14 +11942,14 @@ memberuid: user804_org12_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1128_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1128_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1128_org1_test gidnumber: 10284 memberuid: user1128_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1129_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1129_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1129_org1_test gidnumber: 10189 memberuid: user1129_org1_test @@ -11957,14 +11957,14 @@ memberuid: user861_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1130_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1130_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1130_org1_test gidnumber: 10117 memberuid: user1130_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1140_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1140_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1140_org1_test gidnumber: 10078 memberuid: user1140_org1_test @@ -11975,14 +11975,14 @@ memberuid: user76_org5_test objectclass: posixGroup objectclass: top -dn: cn=pi_user7_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user7_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user7_org1_test gidnumber: 10124 memberuid: user7_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1165_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1165_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1165_org1_test gidnumber: 10055 memberuid: user1165_org1_test @@ -11991,14 +11991,14 @@ memberuid: user1299_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1171_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1171_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1171_org1_test gidnumber: 10250 memberuid: user1171_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1175_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1175_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1175_org1_test gidnumber: 10046 memberuid: user1175_org1_test @@ -12009,7 +12009,7 @@ memberuid: user956_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1176_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1176_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1176_org1_test gidnumber: 10188 memberuid: user1176_org1_test @@ -12018,7 +12018,7 @@ memberuid: user314_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1182_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1182_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1182_org2_test gidnumber: 10128 memberuid: user1182_org2_test @@ -12026,28 +12026,28 @@ memberuid: user1189_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1185_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1185_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1185_org1_test gidnumber: 10213 memberuid: user1185_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1187_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1187_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1187_org1_test gidnumber: 10208 memberuid: user1187_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user13_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user13_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user13_org1_test gidnumber: 10226 memberuid: user13_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1191_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1191_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1191_org2_test gidnumber: 10231 memberuid: user1191_org2_test @@ -12055,14 +12055,14 @@ memberuid: user594_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1201_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1201_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1201_org1_test gidnumber: 10249 memberuid: user1201_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1227_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1227_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1227_org1_test gidnumber: 10244 memberuid: user1227_org1_test @@ -12070,7 +12070,7 @@ memberuid: user260_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1233_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1233_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1233_org1_test gidnumber: 10273 memberuid: user1233_org1_test @@ -12078,14 +12078,14 @@ memberuid: user465_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1234_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1234_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1234_org1_test gidnumber: 10282 memberuid: user1234_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1235_org3_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1235_org3_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1235_org3_test gidnumber: 10041 memberuid: user1235_org3_test @@ -12094,7 +12094,7 @@ memberuid: user313_org3_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1246_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1246_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1246_org2_test gidnumber: 10049 memberuid: user1246_org2_test @@ -12111,14 +12111,14 @@ memberuid: user69_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1255_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1255_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1255_org1_test gidnumber: 10146 memberuid: user1255_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1260_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1260_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1260_org2_test gidnumber: 10043 memberuid: user1260_org2_test @@ -12126,7 +12126,7 @@ memberuid: user1215_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1280_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1280_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1280_org1_test gidnumber: 10109 memberuid: user1280_org1_test @@ -12136,7 +12136,7 @@ memberuid: user1012_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1292_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1292_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1292_org1_test gidnumber: 10032 memberuid: user1292_org1_test @@ -12161,7 +12161,7 @@ memberuid: user255_org1_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1293_org2_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1293_org2_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1293_org2_test gidnumber: 10265 memberuid: user1293_org2_test @@ -12169,7 +12169,7 @@ memberuid: user537_org2_test objectclass: posixGroup objectclass: top -dn: cn=pi_user1298_org1_test,ou=pi_groups,dc=unityhpc,dc=test +dn: cn=pi_user1298_org1_test,ou=unity_groups,dc=unityhpc,dc=test cn: pi_user1298_org1_test gidnumber: 10210 memberuid: user1298_org1_test diff --git a/tools/docker-dev/sql/bootstrap.sql b/tools/docker-dev/sql/bootstrap.sql index 96f8ad77..5ce37559 100644 --- a/tools/docker-dev/sql/bootstrap.sql +++ b/tools/docker-dev/sql/bootstrap.sql @@ -3,7 +3,7 @@ -- https://www.phpmyadmin.net/ -- -- Host: 127.0.0.1 --- Generation Time: Jul 13, 2023 at 02:29 AM +-- Generation Time: Aug 15, 2023 at 04:28 PM -- Server version: 10.3.38-MariaDB-0ubuntu0.20.04.1 -- PHP Version: 7.4.3-4ubuntu2.19 @@ -88,8 +88,8 @@ CREATE TABLE `groupRequests` ( `group_name` varchar(1000) NOT NULL, `requestor` varchar(1000) NOT NULL, `requested_on` timestamp NOT NULL DEFAULT current_timestamp(), - `start_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', - `end_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' + `start_date` timestamp NULL DEFAULT NULL, + `end_date` timestamp NULL DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -- -------------------------------------------------------- @@ -120,6 +120,16 @@ CREATE TABLE `groupRoles` ( `perms` varchar(1000) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; +-- +-- Dumping data for table `groupRoles` +-- + +INSERT INTO `groupRoles` (`id`, `name`, `slug`, `priority`, `color`, `perms`) VALUES +(1, 'Member Approve', 'member_approve', 50, '', 'unity.approve_user,unity.deny_user'), +(2, 'Member', 'member', 20, '', ''), +(3, 'Owner', 'owner', 100, '', 'unity.admin'), +(4, 'TA', 'ta', 60, '', 'unity.grant_role,unity.revoke_role'); + -- -------------------------------------------------------- -- @@ -134,9 +144,22 @@ CREATE TABLE `groupTypes` ( `time_limited` tinyint(1) NOT NULL, `def_role` varchar(1000) NOT NULL, `av_roles` varchar(1000) NOT NULL, - `can_request` tinyint(1) NOT NULL + `can_request` tinyint(1) NOT NULL, + `prefix` varchar(1000) NOT NULL, + `defSuperRole` varchar(1000) NOT NULL, + `isNameable` tinyint(1) NOT NULL, + `exclusiveOwner` tinyint(1) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; +-- +-- Dumping data for table `groupTypes` +-- + +INSERT INTO `groupTypes` (`id`, `name`, `slug`, `color`, `time_limited`, `def_role`, `av_roles`, `can_request`, `prefix`, `defSuperRole`, `isNameable`, `exclusiveOwner`) VALUES +(1, 'PI', 'pi', '#800000', 0, 'member', 'member,owner,member_approve,ta', 1, 'pi_', 'owner', 0, 1), +(2, 'Class', 'class', '#800000', 1, 'member', 'member,owner,member_approve,ta', 1, 'class_', 'owner', 1, 0), +(3, 'Center', 'center', '#800000', 0, 'member', 'member,owner,member_approve,ta', 1, 'center_', 'owner', 1, 0); + -- -------------------------------------------------------- -- @@ -203,6 +226,12 @@ CREATE TABLE `sitevars` ( `value` varchar(1000) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; +-- +-- Dumping data for table `sitevars` +-- +INSERT INTO `sitevars` (`id`, `name`, `value`) VALUES +(1, 'MAX_GID', 50000); + -- -------------------------------------------------------- -- @@ -218,6 +247,20 @@ CREATE TABLE `sso_log` ( `org` varchar(300) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; +-- ------------------------------------------------------ + +-- +-- Table structure for table `groupAttributes` +-- + +CREATE TABLE `groupAttributes` ( + `id` int(11) NOT NULL, + `group_type` varchar(1000) NOT NULL, + `group_id` varchar(1000) NOT NULL, + `start_date` timestamp NULL DEFAULT NULL, + `end_date` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + -- -- Indexes for dumped tables -- @@ -300,6 +343,12 @@ ALTER TABLE `sitevars` ALTER TABLE `sso_log` ADD PRIMARY KEY (`id`); +-- +-- Indexes for table `groupAttributes` +-- +ALTER TABLE `groupAttributes` + ADD PRIMARY KEY (`id`); + -- -- AUTO_INCREMENT for dumped tables -- @@ -381,6 +430,12 @@ ALTER TABLE `sitevars` -- ALTER TABLE `sso_log` MODIFY `id` int(10) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8; + +-- +-- AUTO_INCREMENT for table `groupAttributes` +-- +ALTER TABLE `groupAttributes` + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; COMMIT; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; diff --git a/webroot/admin/ajax/get_group_members.php b/webroot/admin/ajax/get_group_members.php index ebf6e25f..073f643b 100644 --- a/webroot/admin/ajax/get_group_members.php +++ b/webroot/admin/ajax/get_group_members.php @@ -8,11 +8,11 @@ die(); } -if (!isset($_GET["pi_uid"])) { - die("PI UID not set"); +if (!isset($_GET["group_uid"])) { + die("Group UID not set"); } -$group = new UnityGroup($_GET["pi_uid"], $LDAP, $SQL, $MAILER, $REDIS, $WEBHOOK); +$group = new UnityGroup($_GET["group_uid"], $LDAP, $SQL, $MAILER, $REDIS, $WEBHOOK); $members = $group->getGroupMembers(); $requests = $group->getRequests(); @@ -38,7 +38,7 @@ $member->getUID() . " from this group?\");'> - + "; echo ""; @@ -63,7 +63,7 @@ onsubmit='return confirm(\"Are you sure you want to approve " . $request->getUID() . "?\");'> - + "; echo ""; diff --git a/webroot/admin/pi-mgmt.php b/webroot/admin/group-mgmt.php similarity index 56% rename from webroot/admin/pi-mgmt.php rename to webroot/admin/group-mgmt.php index 1b145656..82b52ede 100644 --- a/webroot/admin/pi-mgmt.php +++ b/webroot/admin/group-mgmt.php @@ -18,12 +18,18 @@ case "req": if ($_POST["action"] == "Approve") { // approve group - $group = $form_user->getPIGroup(); - $group->approveGroup($OPERATOR); + $group_type = $_POST["group_type"]; + $group_name = $_POST["group_name"]; + $group_uid = $group_type . "_" . $group_name; + $group = new UnityGroup($group_uid, $LDAP, $SQL, $MAILER, $REDIS, $WEBHOOK); + $group->approveGroup($_POST["uid"], $OPERATOR); } elseif ($_POST["action"] == "Deny") { // deny group - $group = $form_user->getPIGroup(); - $group->denyGroup($OPERATOR); + $group_type = $_POST["group_type"]; + $group_name = $_POST["group_name"]; + $group_uid = $group_type . "_" . $group_name; + $group = new UnityGroup($group_uid, $LDAP, $SQL, $MAILER, $REDIS, $WEBHOOK); + $group->denyGroup($_POST["uid"], $OPERATOR); } break; @@ -59,37 +65,53 @@ include $LOC_HEADER; ?> -

PI Management

+

Group Management


-
Pending PI Requests
+
Pending Group Requests
- - + + + + + getRequests(); + $requests = $SQL->getGroupRequests(); + $types = $USER->getRequestableGroupTypes(); foreach ($requests as $request) { - $request_user = new UnityUser($request["uid"], $LDAP, $SQL, $MAILER, $REDIS, $WEBHOOK); + $request_user = new UnityUser($request["requestor"], $LDAP, $SQL, $MAILER, $REDIS, $WEBHOOK); echo ""; + echo ""; + echo ""; echo ""; echo ""; + if ($request['start_date'] == null || $request['end_date'] == null) { + echo ""; + } else { + echo ""; + } echo ""; - echo ""; + echo ""; echo "
NameUnity IDGroup NameGroup TypeRequestorRequestor UIDStart/End Dates Mail Requested On Actions
" . $request['group_name'] . "
" . + $USER->getTypeNameFromSlug($types, $request['group_type']) . "
" . $request_user->getFirstname() . " " . $request_user->getLastname() . "" . $request_user->getUID() . "" . date("jS F, Y", strtotime($request['start_date'])) . " - " + . date("jS F, Y", strtotime($request['end_date'])) . "" . $request_user->getMail() . "" . date("jS F, Y", strtotime($request['timestamp'])) . "" . date("jS F, Y", strtotime($request['requested_on'])) . ""; echo "
+ + -
List of PIs
+
List of Groups
- - - + + getAllPIGroups($SQL, $MAILER, $REDIS, $WEBHOOK); + $accounts = $LDAP->getAllUnityGroups($SQL, $MAILER, $REDIS, $WEBHOOK); usort($accounts, function ($a, $b) { - return strcmp($a->getPIUID(), $b->getPIUID()); + return strcmp($a->getGroupUID(), $b->getGroupUID()); }); foreach ($accounts as $pi_group) { - $pi_user = $pi_group->getOwner(); - - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; + echo ""; + echo ""; + echo ""; @@ -158,7 +178,12 @@ } }); - var ajax_url = "/admin/ajax/get_group_members.php?pi_uid="; + $("button.viewGroup").click(function() { + $pi = $(this).parent().parent().find("input[name='pi']").val(); + window.location.href = "/panel/view_group.php?group=" + $pi; + }); + + var ajax_url = "/admin/ajax/get_group_members.php?group_uid="; "; $cur_user_groups = $user->getGroups(); foreach ($cur_user_groups as $cur_group) { - echo "" . $cur_group->getPIUID() . ""; + echo "" . $cur_group->getGroupUID() . ""; if ($cur_group !== array_key_last($cur_user_groups)) { echo '
'; } diff --git a/webroot/js/tables.js b/webroot/js/tables.js index ed0de340..02c8ce34 100644 --- a/webroot/js/tables.js +++ b/webroot/js/tables.js @@ -13,7 +13,7 @@ $("button.btnExpand").click(function() { var pi_wrapper = $(this).parent(); // parent column (td) var piRow = pi_wrapper.parent(); // parent row (tr) var piTree = piRow.parent(); // parent table (table) - var pi_uid = pi_wrapper.next().html(); + var group_uid = pi_wrapper.next().html(); if ($(this).hasClass("btnExpanded")) { // already expanded @@ -32,7 +32,7 @@ $("button.btnExpand").click(function() { $("button.btnExpanded").trigger("click"); // not expanded $.ajax({ - url: ajax_url + pi_uid, + url: ajax_url + group_uid, success: function(result) { console.log(result); piRow.after(result); diff --git a/webroot/panel/account.php b/webroot/panel/account.php index 70bd0983..fa4ec1d5 100644 --- a/webroot/panel/account.php +++ b/webroot/panel/account.php @@ -65,8 +65,8 @@ break; case "pi_request": if (!$USER->isPI()) { - if (!$SQL->requestExists($USER->getUID())) { - $USER->getPIGroup()->requestGroup($SEND_PIMESG_TO_ADMINS); + if (!$SQL->PIRequestExists($USER->getUID())) { + UnitySite::redirect($CONFIG["site"]["prefix"] . "/panel/new_group.php"); } } break; @@ -112,7 +112,7 @@ echo "

You are curently a user on the Unity Cluster

"; } else { echo "

You are currently not assigned to any PI, and will be - unable to use the cluster. Go to the My PIs + unable to use the cluster. Go to the My Groups page to join a PI, or click on the button below if you are a PI

"; echo "

Students should not request a PI account.

"; } @@ -134,7 +134,7 @@ ""; - if ($SQL->requestExists($USER->getUID())) { + if ($SQL->PIRequestExists($USER->getUID())) { echo ""; echo ""; } else { diff --git a/webroot/panel/ajax/check_group_name.php b/webroot/panel/ajax/check_group_name.php new file mode 100644 index 00000000..099d5c26 --- /dev/null +++ b/webroot/panel/ajax/check_group_name.php @@ -0,0 +1,12 @@ +checkGroupName($group_name); + +echo $is_available; diff --git a/webroot/panel/ajax/get_group_members.php b/webroot/panel/ajax/get_group_members.php index 92015cbf..4937db68 100644 --- a/webroot/panel/ajax/get_group_members.php +++ b/webroot/panel/ajax/get_group_members.php @@ -4,11 +4,11 @@ use UnityWebPortal\lib\UnityGroup; -if (!isset($_GET["pi_uid"])) { - die("PI UID not set"); +if (!isset($_GET["group_uid"])) { + die("Group UID not set"); } -$group = new UnityGroup($_GET["pi_uid"], $LDAP, $SQL, $MAILER, $REDIS, $WEBHOOK); +$group = new UnityGroup($_GET["group_uid"], $LDAP, $SQL, $MAILER, $REDIS, $WEBHOOK); $members = $group->getGroupMembers(); // verify that the user querying is actually in the group diff --git a/webroot/panel/groups.php b/webroot/panel/groups.php index ec6ac6d4..09383564 100644 --- a/webroot/panel/groups.php +++ b/webroot/panel/groups.php @@ -39,6 +39,9 @@ // Remove PI form $pi_account->removeUser($USER); break; + case "cancelRequest": + $SQL->cancelJoinRequest($USER->getUID(), $_POST["group_uid_to_cancel"]); + break; } } } @@ -46,32 +49,36 @@ include $LOC_HEADER; ?> -

My Principal Investigators

+

My Groups


getGroups(); - -$requests = $SQL->getRequestsByUser($USER->getUID()); +$groups = $USER->getGroups(true); -$req_filtered = array(); -foreach ($requests as $request) { - if ($request["request_for"] != "admin") { // put this in config later for gypsum - array_push($req_filtered, $request); - } -} +$requests = $SQL->getJoinRequestsByUser($USER->getUID()); -if (count($req_filtered) > 0) { +if (count($requests) > 0) { echo "
Pending Requests
"; echo "
NameUnity IDMailGroup TypeGroup Name Actions
" . $USER->getTypeNameFromSlug($types, $pi_group->getGroupType()) . "
" . $pi_group->getGroupName() . ""; echo " + onsubmit='return confirm(\"Are you sure you want to remove " . $pi_group->getGroupUID() . "?\")'> - + + "; echo "
"; - foreach ($req_filtered as $request) { - $requested_account = new UnityGroup($request["request_for"], $LDAP, $SQL, $MAILER, $REDIS, $WEBHOOK); - $requested_owner = $requested_account->getOwner(); + foreach ($requests as $request) { + $requested_account = new UnityGroup($request["group_name"], $LDAP, $SQL, $MAILER, $REDIS, $WEBHOOK); echo ""; - echo ""; - echo ""; - echo ""; - echo ""; + echo ""; + echo ""; + echo ""; + echo ""; echo ""; echo ""; } @@ -84,13 +91,13 @@ echo "
Current Groups
"; -if ($USER->isPI() && count($groups) == 1) { - echo "You are only a member of your own PI group. - Navigate to the my users page to see your group."; -} +// if ($USER->isPI() && count($groups) == 1) { +// echo "You are only a member of your own PI group. +// Navigate to the my users page to see your group."; +// } if (count($groups) == 0) { - echo "You are not a member of any groups. Request to join a PI using the button below, + echo "You are not a member of any groups. Request to join a group using the button below, or request your own PI account on the account settings page"; } @@ -98,25 +105,21 @@ echo "
" . $requested_owner->getFirstname() . " " . $requested_owner->getLastname() . "" . $requested_account->getPIUID() . "" . $requested_owner->getMail() . "" . date("jS F, Y", strtotime($request['timestamp'])) . " +
" + . $requested_account->getGroupTypeName() . "
" . $requested_account->getGroupUID() . "" . date("jS F, Y", strtotime($request['requested_on'])) . ""; + echo + " + + + + "; + echo "
"; foreach ($groups as $group) { - $owner = $group->getOwner(); - - if ($USER->getUID() == $owner->getUID()) { - continue; - } - - echo ""; - echo - ""; - echo ""; - echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; echo ""; echo ""; @@ -128,7 +131,7 @@ accDeletionRequestExists($USER->getUID())) { echo ""; - echo ""; + echo ""; } else { echo ""; } @@ -145,6 +148,16 @@ openModal("Add New PI", "/panel/modal/new_pi.php"); }); + $("button.viewGroup").click(function() { + $pi = $(this).parent().parent().find("input[name='pi']").val(); + window.location.href = "/panel/view_group.php?group=" + $pi; + }); + + $("tr.viewGroup").click(function() { + $pi = $(this).find("input[name='pi']").val(); + window.location.href = "/panel/view_group.php?group=" + $pi; + }); + 0) { @@ -158,7 +171,7 @@ } ?> - var ajax_url = "/panel/ajax/get_group_members.php?pi_uid="; + var ajax_url = "/panel/ajax/get_group_members.php?group_uid=";