예제 #1
0
 /**
  * Deletes permissions from all groups
  * @param  string $permission The permission to delete
  * @return boolean
  */
 public static function deletePermission($permission)
 {
     // Init
     $group_list = SentrySetup::getGroups();
     $group_list = Helpers::array_collate($group_list);
     $actions = [$permission];
     foreach ($group_list as $key => $val) {
         $permissions[$key][] = 0;
     }
     $input = compact('actions', 'permissions');
     try {
         SentrySetup::savePermissions($input);
         return true;
     } catch (Exception $e) {
         throw new Exception();
     }
 }
 public function getPermissions($group = '')
 {
     // Init
     $page = 'permissions';
     $page_title = 'Permissions';
     $group_permissions_list = config('sentrysetup.group_permission_values');
     $empty_permissions = true;
     $delete_permission = Input::get('del', '');
     try {
         // Delete
         if ($delete_permission) {
             $success = SentrySetup::deletePermission($delete_permission);
             return redirect('sentry-setup/permissions')->with('success', $success);
         }
         // List
         $group_list = SentrySetup::getGroups();
         // Bounce
         if (!$group_list) {
             return redirect('sentry-setup/m/emptygroups');
         }
         if ($group) {
             /*
             $group       = SentrySetup::findGroupByName($group);
             $permissions = $group->getPermissions();
             $permissions = SentrySetup::categorizePermissions($permissions);
             ksort($permissions);
             
             $data = compact('page', 'page_title', 'results', 'group', 'permissions', 'group_permissions_list');
             return view('sentrysetup::permissions', $data);
             */
         } else {
             foreach ($group_list as $val) {
                 $group = Sentry::findGroupById($val->id);
                 $permissions = $group->getPermissions();
                 $results[$val->name] = SentrySetup::categorizePermissions($permissions);
                 // Check if there are any permissions at all (for display purposes)
                 if ($empty_permissions) {
                     $empty_permissions = $permissions ? false : true;
                 }
                 foreach ($permissions as $key => $val) {
                     $str = explode('.', $key)[0];
                     $category_list[$str] = $str;
                 }
             }
             // krumo($group_list);
             // krumo($category_list);
             // krumo($results);
             // Bouncer
             if ($empty_permissions) {
                 return redirect('sentry-setup/m/emptypermissions');
             }
             // Labels
             $label_list = SentrySetup::getLabels();
             $label_list = Helpers::array_consolidate($label_list, 'short');
             $data_arr = [];
             foreach ($category_list as $cat) {
                 foreach ($results as $val) {
                     if (isset($val[$cat])) {
                         // kd($label_list);
                         $label = isset($label_list[$cat]['label']) ? trim($label_list[$cat]['label'] . " ({$cat})") : "({$cat})";
                         foreach ($val[$cat] as $k => $v) {
                             $data_arr[$label][$k] = $k;
                         }
                     }
                 }
             }
             // Sort
             $sort = array_keys($data_arr);
             asort($sort);
             foreach ($sort as $val) {
                 $sorted[$val] = $data_arr[$val];
             }
             $data_arr = $sorted;
             foreach ($data_arr as $val) {
                 foreach ($val as $v) {
                     $action_list[] = $v;
                 }
             }
             $action_list = array_flip($action_list);
             foreach ($action_list as $key => $val) {
                 $action_list[$key] = explode('.', $key)[0];
             }
             $permissions_list = [];
             foreach ($action_list as $key => $val) {
                 foreach ($results as $v) {
                     if (isset($v[$val][$key])) {
                         $permissions_list[$key][] = $v[$val][$key];
                     } else {
                         $permissions_list[$key][] = 0;
                     }
                 }
             }
             // krumo($permissions_list);
             $data = compact('page', 'page_title', 'group_list', 'data_arr', 'permissions_list');
             return view('sentrysetup::permissions', $data);
         }
     } catch (Exception $e) {
         $data = compact('page', 'page_title');
         return view('sentrysetup::permissions', $data)->with('fail', 'Unable to show your Permissions. Try again in a few seconds.');
     }
 }