/**
  * Add action method
  *
  * @return void
  */
 public function add()
 {
     $this->prepareView('members/admin/add.phtml');
     $this->view->title = 'Members Admin : Add';
     $fields = $this->application->config()['forms']['Phire\\Members\\Form\\MembersAdmin'];
     $roles = \Phire\Table\Roles::findAll();
     foreach ($roles->rows() as $role) {
         $dupe = Table\Members::findBy(['role_id' => $role->id]);
         if (!isset($dupe->id)) {
             $fields[0]['role_id']['value'][$role->id] = $role->name;
         }
     }
     $fields[1]['name']['attributes']['onkeyup'] = "phire.createSlug('/' + this.value, '#uri');";
     $this->view->form = new Form\MembersAdmin($fields);
     if ($this->request->isPost()) {
         $this->view->form->addFilter('htmlentities', [ENT_QUOTES, 'UTF-8'])->setFieldValues($this->request->getPost());
         if ($this->view->form->isValid()) {
             $this->view->form->clearFilters()->addFilter('html_entity_decode', [ENT_QUOTES, 'UTF-8'])->filter();
             $member = new Model\MembersAdmin();
             $member->save($this->view->form->getFields());
             $this->view->id = $member->id;
             $this->sess->setRequestValue('saved', true);
             $this->redirect(BASE_PATH . APP_URI . '/members/edit/' . $member->id);
         }
     }
     $this->send();
 }
Beispiel #2
0
 /**
  * Bootstrap the module
  *
  * @param  Application $application
  * @return void
  */
 public static function bootstrap(Application $application)
 {
     $path = BASE_PATH . APP_URI;
     if ($path == '') {
         $path = '/';
     }
     $cookie = Cookie::getInstance(['path' => $path]);
     if (isset($cookie->phire)) {
         $phire = (array) $cookie->phire;
         if (!isset($phire['fields_media_library'])) {
             $phire['fields_media_library'] = $application->module('phire-fields')->config()['media_library'];
         }
         $cookie->set('phire', $phire);
     }
     $modules = $application->modules();
     $roles = \Phire\Table\Roles::findAll();
     foreach ($roles->rows() as $role) {
         if (isset($modules['phire-fields']) && isset($modules['phire-fields']->config()['models']) && isset($modules['phire-fields']->config()['models']['Phire\\Model\\User']) && isset($modules['phire-fields']->config()['models']['Phire\\Model\\Role'])) {
             $models = $modules['phire-fields']->config()['models'];
             $models['Phire\\Model\\User'][] = ['type_field' => 'role_id', 'type_value' => $role->id, 'type_name' => $role->name];
             $models['Phire\\Model\\Role'][] = ['type_field' => 'id', 'type_value' => $role->id, 'type_name' => $role->name];
             $application->module('phire-fields')->mergeConfig(['models' => $models]);
         }
     }
     foreach ($modules as $module => $config) {
         if ($module != 'phire-fields' && isset($config['models'])) {
             $application->module('phire-fields')->mergeConfig(['models' => $config['models']]);
         }
     }
 }
 /**
  * Constructor
  *
  * Instantiate the form object
  *
  * @param  int    $id
  * @param  array  $fields
  * @param  string $action
  * @param  string $method
  * @return SessionConfig
  */
 public function __construct($id = null, array $fields, $action = null, $method = 'post')
 {
     $configs = \Phire\Sessions\Table\UserSessionConfig::findAll();
     $configsAry = [];
     foreach ($configs->rows() as $config) {
         $configsAry[] = $config->role_id;
     }
     $roles = Table\Roles::findAll();
     $roleValues = ['----' => '----'];
     foreach ($roles->rows() as $role) {
         if (!in_array($role->id, $configsAry) || $id == $role->id) {
             $roleValues[$role->id] = $role->name;
         }
     }
     $fields[0]['role_id']['value'] = $roleValues;
     parent::__construct($fields, $action, $method);
     $this->setAttribute('id', 'session-form');
     $this->setIndent('    ');
 }
 /**
  * Determine if roles are available to create configs for
  *
  * @return int
  */
 public function rolesAvailable()
 {
     return Table\UserSessionConfig::findAll()->count() < \Phire\Table\Roles::findAll()->count();
 }
Beispiel #5
0
 /**
  * Get all user roles
  *
  * @return array
  */
 public function getRoles()
 {
     $roles = Table\Roles::findAll()->rows();
     $rolesAry = [];
     foreach ($roles as $role) {
         $rolesAry[$role->id] = $role->name;
     }
     $rolesAry[0] = '[Blocked]';
     return $rolesAry;
 }
Beispiel #6
0
 /**
  * Get count of user roles
  *
  * @return int
  */
 public function getCount()
 {
     return Table\Roles::findAll()->count();
 }
Beispiel #7
0
 /**
  * Initialize the ACL service
  *
  * @return Module
  */
 public function initAcl()
 {
     $roles = Table\Roles::findAll()->rows();
     $resources = $this->application->config()['resources'];
     foreach ($roles as $role) {
         $roleName = str_replace(' ', '-', strtolower($role->name));
         $resources['role-' . $role->id . '|role-' . $roleName] = ['edit', 'remove'];
         $resources['users-of-role-' . $role->id . '|users-of-role-' . $roleName] = ['index', 'add', 'edit', 'remove'];
     }
     $this->application->mergeConfig(['resources' => $resources]);
     foreach ($this->application->config()['resources'] as $resource => $permissions) {
         if (strpos($resource, '|') !== false) {
             $resource = substr($resource, 0, strpos($resource, '|'));
         }
         $this->application->getService('acl')->addResource(new Resource($resource));
     }
     $allRoles = [];
     foreach ($roles as $role) {
         $r = new Role($role->name);
         $allRoles[$role->id] = $r;
         $this->application->getService('acl')->addRole($r);
         if (null !== $role->permissions) {
             $role->permissions = unserialize($role->permissions);
         }
         if (null === $role->permissions || is_array($role->permissions) && count($role->permissions) == 0) {
             $this->application->getService('acl')->allow($role->name);
         } else {
             if (count($role->permissions['allow']) > 0) {
                 foreach ($role->permissions['allow'] as $allow) {
                     $this->application->getService('acl')->allow($role->name, $allow['resource'], $allow['permission']);
                 }
             } else {
                 $this->application->getService('acl')->allow($role->name);
             }
             if (count($role->permissions['deny']) > 0) {
                 foreach ($role->permissions['deny'] as $deny) {
                     $this->application->getService('acl')->deny($role->name, $deny['resource'], $deny['permission']);
                 }
             }
         }
     }
     // Set up parent/child roles
     foreach ($allRoles as $id => $child) {
         $r = \Phire\Table\Roles::findById($id);
         if (isset($r->id) && null !== $r->parent_id && isset($allRoles[$r->parent_id])) {
             $child->setParent($allRoles[$r->parent_id]);
         }
     }
     // Set the acl in the main nav object
     $this->application->getService('nav.phire')->setAcl($this->application->getService('acl'));
     return $this;
 }