Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Roles.php
Go to the documentation of this file.
1 <?php
7 
9 
14 class Roles extends \Magento\Backend\Block\Widget\Grid\Extended
15 {
21  protected $_coreRegistry = null;
22 
26  protected $_userRolesFactory;
27 
31  protected $_jsonEncoder;
32 
41  public function __construct(
42  \Magento\Backend\Block\Template\Context $context,
43  \Magento\Backend\Helper\Data $backendHelper,
44  \Magento\Framework\Json\EncoderInterface $jsonEncoder,
45  \Magento\Authorization\Model\ResourceModel\Role\CollectionFactory $userRolesFactory,
46  \Magento\Framework\Registry $coreRegistry,
47  array $data = []
48  ) {
49  $this->_jsonEncoder = $jsonEncoder;
50  $this->_userRolesFactory = $userRolesFactory;
51  $this->_coreRegistry = $coreRegistry;
52  parent::__construct($context, $backendHelper, $data);
53  }
54 
60  protected function _construct()
61  {
62  parent::_construct();
63  $this->setId('permissionsUserRolesGrid');
64  $this->setDefaultSort('sort_order');
65  $this->setDefaultDir('asc');
66  $this->setTitle(__('User Roles Information'));
67  $this->setUseAjax(true);
68  }
69 
74  protected function _addColumnFilterToCollection($column)
75  {
76  if ($column->getId() == 'assigned_user_role') {
77  $userRoles = $this->getSelectedRoles();
78  if (empty($userRoles)) {
79  $userRoles = 0;
80  }
81  if ($column->getFilter()->getValue()) {
82  $this->getCollection()->addFieldToFilter('role_id', ['in' => $userRoles]);
83  } else {
84  if ($userRoles) {
85  $this->getCollection()->addFieldToFilter('role_id', ['nin' => $userRoles]);
86  }
87  }
88  } else {
89  parent::_addColumnFilterToCollection($column);
90  }
91  return $this;
92  }
93 
97  protected function _prepareCollection()
98  {
99  $collection = $this->_userRolesFactory->create();
100  $collection->setRolesFilter();
101  $this->setCollection($collection);
102  return parent::_prepareCollection();
103  }
104 
108  protected function _prepareColumns()
109  {
110  $this->addColumn(
111  'assigned_user_role',
112  [
113  'header_css_class' => 'data-grid-actions-cell',
114  'header' => __('Assigned'),
115  'type' => 'radio',
116  'html_name' => 'roles[]',
117  'values' => $this->getSelectedRoles(),
118  'align' => 'center',
119  'index' => 'role_id'
120  ]
121  );
122 
123  $this->addColumn('role_name', ['header' => __('Role'), 'index' => 'role_name']);
124 
125  return parent::_prepareColumns();
126  }
127 
131  public function getGridUrl()
132  {
133  $userPermissions = $this->_coreRegistry->registry('permissions_user');
134  return $this->getUrl('*/*/rolesGrid', ['user_id' => $userPermissions->getUserId()]);
135  }
136 
141  public function getSelectedRoles($json = false)
142  {
143  if ($this->getRequest()->getParam('user_roles') != "") {
144  return $this->getRequest()->getParam('user_roles');
145  }
146  /* @var $user \Magento\User\Model\User */
147  $user = $this->_coreRegistry->registry('permissions_user');
148  //checking if we have this data and we
149  //don't need load it through resource model
150  if ($user->hasData('roles')) {
151  $userRoles = $user->getData('roles');
152  } else {
153  $userRoles = $user->getRoles();
154  }
155 
156  if ($json) {
157  $jsonRoles = [];
158  foreach ($userRoles as $roleId) {
159  $jsonRoles[$roleId] = 0;
160  }
161  return $this->_jsonEncoder->encode((object)$jsonRoles);
162  } else {
163  return $userRoles;
164  }
165  }
166 }
__()
Definition: __.php:13
$user
Definition: dummy_user.php:13
$roleId
Definition: webapi_user.php:22
getParam($paramName, $default=null)
Definition: Grid.php:729
__construct(\Magento\Backend\Block\Template\Context $context, \Magento\Backend\Helper\Data $backendHelper, \Magento\Framework\Json\EncoderInterface $jsonEncoder, \Magento\Authorization\Model\ResourceModel\Role\CollectionFactory $userRolesFactory, \Magento\Framework\Registry $coreRegistry, array $data=[])
Definition: Roles.php:41