Exemple #1
0
 /**
  * @return SJB_SubAdminAcl
  */
 public static function getInstance($reload = false)
 {
     if (null === self::$instance || $reload) {
         self::$instance = new self();
     }
     return self::$instance;
 }
Exemple #2
0
 public function execute()
 {
     $tp = SJB_System::getTemplateProcessor();
     $subAdminSID = SJB_Request::getVar('subadmin', 0);
     if (!empty($subAdminSID) && ($adminInfo = SJB_SubAdminManager::getSubAdminInfoBySID($subAdminSID))) {
         $editedSubAdminInfo = $_REQUEST;
         $subAdminInfo = array_merge($adminInfo, $editedSubAdminInfo);
         // create subAdmin object
         $oSubAdmin = SJB_ObjectMother::createSubAdmin($subAdminInfo);
         $oSubAdmin->setSID($adminInfo['sid']);
         $oSubAdmin->makePropertyNotRequired("password");
         // permissions
         $acl = SJB_SubAdminAcl::getInstance();
         $type = 'subadmin';
         $resources = $acl->getResources();
         $perms = SJB_SubAdminAcl::getAllPermissions($type, $oSubAdmin->getSID());
         // /permissions
         SJB_SubAdminAcl::mergePermissionsWithResources($resources, $perms);
         $registration_form = SJB_ObjectMother::createForm($oSubAdmin);
         $action = SJB_Request::getVar('action', '');
         $registration_form->registerTags($tp);
         $errors = array();
         if ('save' == $action || $action == 'apply') {
             if ($adminInfo['username'] == $subAdminInfo['username']) {
                 $oSubAdmin->deleteProperty('username');
             }
             if ($adminInfo['email'] == $subAdminInfo['email']) {
                 $oSubAdmin->deleteProperty('email');
             }
             if ($registration_form->isDataValid($errors)) {
                 $password_value = $oSubAdmin->getPropertyValue('password');
                 if (empty($password_value['original'])) {
                     $oSubAdmin->deleteProperty('password');
                 }
                 // save subAdmin
                 SJB_SubAdminManager::saveSubAdmin($oSubAdmin);
                 $role = $oSubAdmin->getSID();
                 SJB_Acl::clearPermissions($type, $role);
                 foreach ($resources as $name => $resource) {
                     SJB_SubAdminAcl::allow($name, $type, $role, SJB_SubAdminAcl::definePermission($name), SJB_Array::get($resource, 'params', ''));
                 }
                 SJB_FlashMessages::getInstance()->addMessage('CHANGES_SAVED');
                 if ($action == 'save') {
                     SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . "/manage-subadmins/");
                 }
             }
             SJB_SubAdminAcl::mergePermissionsWithRequest($resources);
         }
         SJB_SubAdminAcl::prepareSubPermissions($resources);
         $tp->assign("errors", $errors);
         $tp->assign("form_fields", $registration_form->getFormFieldsInfo());
         $tp->assign('groups', SJB_SubAdminAcl::getPermissionGroups());
         $tp->assign('resources', $resources);
         $tp->assign('type', $type);
         $tp->assign('sid', $subAdminInfo['sid']);
         $tp->display('add_subadmin.tpl');
     }
 }
Exemple #3
0
 public function execute()
 {
     $tp = SJB_System::getTemplateProcessor();
     $oSubAdmin = SJB_ObjectMother::createSubAdmin($_REQUEST);
     $registration_form = SJB_ObjectMother::createForm($oSubAdmin);
     $registration_form->registerTags($tp);
     $form_submitted = SJB_Request::getVar('action', '') == 'add';
     $errors = array();
     $acl = SJB_SubAdminAcl::getInstance();
     $type = 'subadmin';
     $resources = $acl->getResources();
     SJB_SubAdminAcl::mergePermissionsWithResources($resources);
     switch (SJB_Request::getVar('action')) {
         case 'save':
             if ($registration_form->isDataValid($errors)) {
                 SJB_SubAdminManager::saveSubAdmin($oSubAdmin);
                 $role = $oSubAdmin->getSID();
                 SJB_Acl::clearPermissions($type, $role);
                 foreach ($resources as $name => $resource) {
                     SJB_SubAdminAcl::allow($name, $type, $role, SJB_SubAdminAcl::definePermission($name), SJB_Request::getVar($name . '_params'));
                 }
                 // get new defined permissions for notification letter
                 $permissions = SJB_SubAdminAcl::getAllPermissions($type, $role);
                 $resources = $acl->getResources();
                 SJB_SubAdminAcl::mergePermissionsWithResources($resources, $permissions);
                 SJB_Notifications::sendSubAdminRegistrationLetter($oSubAdmin, SJB_Request::get(), $resources);
                 SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . '/manage-subadmins/');
             }
             break;
         case 'delete':
             $subadmins = SJB_Request::getVar('subadmin', array());
             foreach ($subadmins as $subadmin_sid) {
                 $username = SJB_SubAdminManager::getUserNameBySubAdminSID($subadmin_sid);
                 SJB_SubAdminManager::deleteSubAdminByUserName($username);
             }
             SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . '/manage-subadmins/');
             break;
         default:
             break;
     }
     $tp->assign('errors', $errors);
     $tp->assign('form_fields', $registration_form->getFormFieldsInfo());
     $aPermissionGroups = SJB_SubAdminAcl::getPermissionGroups();
     if ('save' == SJB_Request::getVar('action', '')) {
         SJB_SubAdminAcl::mergePermissionsWithRequest($resources);
     }
     SJB_SubAdminAcl::prepareSubPermissions($resources);
     $tp->assign('groups', $aPermissionGroups);
     $tp->assign('resources', $resources);
     $tp->assign('type', $type);
     $tp->assign('role', 0);
     $tp->display('add_subadmin.tpl');
 }
Exemple #4
0
 private function mark_active_itemsPermissionWith(&$arr, SJB_SubAdminAcl $acl, $subAdminSID)
 {
     if (empty($arr)) {
         return array();
     }
     foreach ($arr as $key => $items) {
         $arr[$key]['active'] = false;
         foreach ($items as $item_key => $item) {
             $allowed = false;
             if (is_array($item['perm_label'])) {
                 foreach ($item['perm_label'] as $permLabel) {
                     if ($acl->isAllowed($permLabel, $subAdminSID, 'subadmin')) {
                         $allowed = true;
                         break;
                     }
                 }
             } else {
                 // check permission for subadmins
                 if ($acl->isAllowed($item['perm_label'], $subAdminSID, 'subadmin')) {
                     $allowed = true;
                 }
             }
             if (!$allowed) {
                 // remove menu from menu list
                 unset($arr[$key][$item_key]);
                 continue;
             }
             $arr[$key][$item_key]['active'] = false;
             $item['highlight'][] = $item['reference'];
             $this->removeSimilarHighlight($arr, $item, $key, $item_key);
         }
         $arr[$key]['id'] = str_replace(' ', '_', $key);
         if (empty($arr[$key]) || count($arr[$key]) == 2) {
             unset($arr[$key]);
         }
     }
     return $arr;
 }
Exemple #5
0
 public function execute()
 {
     $type = 'subadmin';
     $role = SJB_SubAdmin::getSubAdminSID();
     // get new defined permissions for notification letter
     $acl = SJB_SubAdminAcl::getInstance();
     $permissions = SJB_SubAdminAcl::getAllPermissions($type, $role);
     $resources = $acl->getResources();
     SJB_SubAdminAcl::mergePermissionsWithResources($resources, $permissions);
     $tp = SJB_System::getTemplateProcessor();
     $tp->assign('permissions', $resources);
     $tp->assign('admin_email', SJB_Settings::getSettingByName('notification_email'));
     $tp->display('../miscellaneous/subadmin-error.tpl');
 }
Exemple #6
0
 /**
  *
  * @param string $notification
  * @return array | boolean
  */
 public static function getIfSubAdminsNotifiedOn($notification)
 {
     $aSubAdmins = self::getAllSubAdminsInfo();
     if (is_array($aSubAdmins)) {
         $aSubAdminEmail = array();
         $acl = SJB_SubAdminAcl::getInstance();
         foreach ($aSubAdmins as $subAdmin) {
             if ($acl->isAllowed($notification, $subAdmin['sid'], true)) {
                 $aSubAdminEmail[] = $subAdmin['email'];
             }
         }
         return $aSubAdminEmail;
     }
     return false;
 }
Exemple #7
0
 /**
  * get SJB_Function instance by function name and module name
  *
  * @param $script_filename
  * @param $function_name
  * @param $module_name
  * @param SJB_Acl $acl
  * @param array $params
  * $param int $aclRoleID
  * @return SJB_Function
  */
 public function getFunction($function_name, $module_name, $params = array())
 {
     $aclRoleID = null;
     $adminAccessType = SJB_System::getSystemSettings('SYSTEM_ACCESS_TYPE') == SJB_System::getSystemSettings('ADMIN_ACCESS_TYPE');
     $accessTypePrefix = $adminAccessType ? 'Admin_' : '';
     if ($adminAccessType && SJB_SubAdmin::admin_authed()) {
         $aclRoleID = SJB_SubAdmin::getSubAdminSID();
         $acl = SJB_SubAdminAcl::getInstance();
     } else {
         $acl = SJB_Acl::getInstance();
         $cu = SJB_UserManager::getCurrentUser();
         if (!empty($cu) && $cu->isSubuser()) {
             $cu = $cu->getSubuserInfo();
             $aclRoleID = SJB_Array::get($cu, 'sid');
         }
     }
     $functionPart = $this->getCamelCaseName($function_name);
     $modulePart = $this->getCamelCaseName($module_name);
     $className = 'SJB_' . $accessTypePrefix . $modulePart . '_' . $functionPart;
     return new $className($acl, $params, $aclRoleID);
 }
 public function execute()
 {
     $tp = SJB_System::getTemplateProcessor();
     $subAdminSID = SJB_SubAdmin::getSubAdminSID();
     if (!empty($subAdminSID) && ($adminInfo = SJB_SubAdmin::getSubAdminInfo())) {
         // save sub admin notifications via ajax;
         SJB_SubAdminManager::SaveSubAdminNotifications($subAdminSID, SJB_Request::getVar('name', ''), SJB_Request::getVar('value'));
         $message = '';
         $editedSubAdminInfo = $_REQUEST;
         $subAdminNewInfo = array_merge($adminInfo, $editedSubAdminInfo);
         // create subAdmin object
         $oSubAdmin = SJB_ObjectMother::createSubAdmin($subAdminNewInfo);
         $oSubAdmin->setSID($adminInfo['sid']);
         $oSubAdmin->makePropertyNotRequired("username");
         $oSubAdmin->makePropertyNotRequired("email");
         $oSubAdmin->makePropertyNotRequired("password");
         $oSubAdmin->addProperty(array('id' => 'password_cur', 'caption' => 'Current Password', 'type' => 'password', 'length' => '20', 'is_system' => true, 'order' => 1));
         $oSubAdmin->setPropertyValue('password_cur', SJB_Request::getVar('password_cur', ''));
         // permissions
         $acl = SJB_SubAdminAcl::getInstance();
         $type = 'subadmin';
         $resources = $acl->getResources();
         $perms = SJB_SubAdminAcl::getAllPermissions($type, $oSubAdmin->getSID());
         // /permissions
         SJB_SubAdminAcl::mergePermissionsWithResources($resources, $perms);
         $errors = array();
         $action = SJB_Request::getVar('action', '');
         if ('save' == $action) {
             $registration_form = SJB_ObjectMother::createForm($oSubAdmin);
             $registration_form->registerTags($tp);
             if ($adminInfo['email'] == $subAdminNewInfo['email']) {
                 $oSubAdmin->deleteProperty('email');
             }
             $password_value = $oSubAdmin->getPropertyValue('password');
             if (!empty($password_value['original'])) {
                 $currentPass = $oSubAdmin->getPropertyValue('password_cur');
                 if (!empty($currentPass)) {
                     if (!SJB_SubAdmin::checkCurrentPassword($currentPass)) {
                         $oSubAdmin->deleteProperty('password');
                         $errors['CurrentPassword'] = '******';
                     }
                 } else {
                     $oSubAdmin->deleteProperty('password');
                     $errors['CurrentPassword'] = '******';
                 }
             } else {
                 $oSubAdmin->deleteProperty('password');
             }
             $oSubAdmin->deleteProperty('password_cur');
             if (empty($errors) && $registration_form->isDataValid($errors)) {
                 SJB_SubAdminManager::saveSubAdmin($oSubAdmin);
                 SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . '/edit-profile/?saved=1');
             }
         }
         $oSubAdmin->deleteProperty('password');
         $oSubAdmin->deleteProperty('password_cur');
         $oSubAdmin->addProperty(array('id' => 'password_cur', 'caption' => 'Current Password', 'type' => 'password_cur', 'length' => '20', 'is_system' => true, 'order' => 1));
         $oSubAdmin->addProperty(array('id' => 'password', 'caption' => 'New Password', 'type' => 'password', 'length' => '20', 'is_system' => true, 'order' => 1));
         $registration_form = SJB_ObjectMother::createForm($oSubAdmin);
         $registration_form->registerTags($tp);
         $registration_form->makeDisabled('username');
         $tp->assign("saved", SJB_Request::getVar('saved', false));
         $tp->assign("errors", $errors);
         $tp->assign("form_fields", $registration_form->getFormFieldsInfo());
         $tp->assign('groups', SJB_SubAdminAcl::getPermissionGroups());
         $tp->assign('notifications', SJB_SubAdminAcl::getSubAdminNotifications($resources, $perms));
         $tp->assign('resources', $resources);
         $tp->assign('type', $type);
         $tp->assign('sid', $subAdminNewInfo['sid']);
         $tp->assign('message', $message);
         $tp->display("edit_subadmin_profile.tpl");
     }
 }