예제 #1
0
 /**
  * Check if user has access to current route
  *
  * @param Action $action the action to be executed.
  *
  * @return boolean whether the action should continue to be executed.
  */
 public function beforeAction($action)
 {
     if ($action->id == 'captcha') {
         return true;
     }
     $route = '/' . $action->uniqueId;
     if (Route::isFreeAccess($route, $action)) {
         return true;
     }
     if (Yii::$app->user->isGuest) {
         $this->denyAccess();
     }
     // If user has been deleted, then destroy session and redirect to home page
     if (!Yii::$app->user->isGuest and Yii::$app->user->identity === null) {
         Yii::$app->getSession()->destroy();
         $this->denyAccess();
     }
     // Superadmin owns everyone
     if (Yii::$app->user->isSuperadmin) {
         return true;
     }
     if (Yii::$app->user->identity and Yii::$app->user->identity->status != User::STATUS_ACTIVE) {
         Yii::$app->user->logout();
         Yii::$app->getResponse()->redirect(Yii::$app->getHomeUrl());
     }
     if (User::canRoute($route)) {
         return true;
     }
     if (isset($this->denyCallback)) {
         call_user_func($this->denyCallback, null, $action);
     } else {
         $this->denyAccess();
     }
     return false;
 }
예제 #2
0
 /**
  * Hide link if user hasn't access to it
  *
  * @inheritdoc
  */
 public static function a($text, $url = null, $options = [])
 {
     if (in_array($url, [null, '', '#'])) {
         return parent::a($text, $url, $options);
     }
     return User::canRoute($url) ? parent::a($text, $url, $options) : '';
 }
예제 #3
0
 /**
  * List of items for backend side menu
  *
  * @return array
  */
 public static function getSideMenuItems()
 {
     $output = ['17' => ['label' => '<i class="fa fa-pagelines"></i> ' . ContentModule::t('app', 'Page templates'), 'url' => ['/content/content-template/index'], 'visible' => Yii::$app->getModule('content')->enableTemplates && User::canRoute(['/content/content-template/index'])], '18' => ['label' => '<i class="fa fa-code-fork"></i> ' . ContentModule::t('app', 'Template widgets'), 'url' => ['/content/content-template-widget/index'], 'visible' => Yii::$app->getModule('content')->enableTemplates && User::canRoute(['/content/content-template-widget/index'])], '19' => ['label' => '<i class="fa fa-table"></i> ' . ContentModule::t('app', 'Manage menus'), 'url' => ['/content/content-menu/index']]];
     $menus = ContentMenu::getListOfMenus();
     krsort($menus);
     foreach ($menus as $menu) {
         array_unshift($output, $menu);
     }
     return $output;
 }
예제 #4
0
 /**
  * @param array $items
  *
  * @return bool
  */
 protected function ensureVisibility(&$items)
 {
     $allVisible = false;
     foreach ($items as &$item) {
         if (isset($item['url']) and !in_array($item['url'], ['', '#']) and !isset($item['visible'])) {
             $item['visible'] = User::canRoute($item['url']);
         }
         if (isset($item['items'])) {
             // If not children are visible - make invisible this node
             if (!$this->ensureVisibility($item['items']) and !isset($item['visible'])) {
                 $item['visible'] = false;
             }
         }
         if (isset($item['label']) and (!isset($item['visible']) or $item['visible'] === true)) {
             $allVisible = true;
         }
     }
     return $allVisible;
 }
예제 #5
0
?>
				</div>
			</div>


			<?php 
Pjax::begin(['id' => 'user-grid-pjax']);
?>

			<?php 
echo GridView::widget(['id' => 'user-grid', 'dataProvider' => $dataProvider, 'pager' => ['options' => ['class' => 'pagination pagination-sm'], 'hideOnSinglePage' => true, 'lastPageLabel' => '>>', 'firstPageLabel' => '<<'], 'filterModel' => $searchModel, 'layout' => '{items}<div class="row"><div class="col-sm-8">{pager}</div><div class="col-sm-4 text-right">{summary}' . GridBulkActions::widget(['gridId' => 'user-grid', 'actions' => [Url::to(['bulk-activate', 'attribute' => 'status']) => GridBulkActions::t('app', 'Activate'), Url::to(['bulk-deactivate', 'attribute' => 'status']) => GridBulkActions::t('app', 'Deactivate'), '----' => [Url::to(['bulk-delete']) => GridBulkActions::t('app', 'Delete')]]]) . '</div></div>', 'columns' => [['class' => 'yii\\grid\\SerialColumn', 'options' => ['style' => 'width:10px']], ['class' => 'webvimark\\components\\StatusColumn', 'attribute' => 'superadmin', 'visible' => Yii::$app->user->isSuperadmin], ['attribute' => 'username', 'value' => function (User $model) {
    return Html::a($model->username, ['view', 'id' => $model->id], ['data-pjax' => 0]);
}, 'format' => 'raw'], ['attribute' => 'email', 'format' => 'raw', 'visible' => User::hasPermission('viewUserEmail')], ['class' => 'webvimark\\components\\StatusColumn', 'attribute' => 'email_confirmed', 'visible' => User::hasPermission('viewUserEmail')], ['attribute' => 'gridRoleSearch', 'filter' => ArrayHelper::map(Role::getAvailableRoles(Yii::$app->user->isSuperAdmin), 'name', 'description'), 'value' => function (User $model) {
    return implode(', ', ArrayHelper::map($model->roles, 'name', 'description'));
}, 'format' => 'raw', 'visible' => User::hasPermission('viewUserRoles')], ['attribute' => 'registration_ip', 'value' => function (User $model) {
    return Html::a($model->registration_ip, "http://ipinfo.io/" . $model->registration_ip, ["target" => "_blank"]);
}, 'format' => 'raw', 'visible' => User::hasPermission('viewRegistrationIp')], ['value' => function (User $model) {
    return GhostHtml::a(UserManagementModule::t('back', 'Roles and permissions'), ['/user-management/user-permission/set', 'id' => $model->id], ['class' => 'btn btn-sm btn-primary', 'data-pjax' => 0]);
}, 'format' => 'raw', 'visible' => User::canRoute('/user-management/user-permission/set'), 'options' => ['width' => '10px']], ['value' => function (User $model) {
    return GhostHtml::a(UserManagementModule::t('back', 'Change password'), ['change-password', 'id' => $model->id], ['class' => 'btn btn-sm btn-default', 'data-pjax' => 0]);
}, 'format' => 'raw', 'options' => ['width' => '10px']], ['class' => 'webvimark\\components\\StatusColumn', 'attribute' => 'status', 'optionsArray' => [[User::STATUS_ACTIVE, UserManagementModule::t('back', 'Active'), 'success'], [User::STATUS_INACTIVE, UserManagementModule::t('back', 'Inactive'), 'warning'], [User::STATUS_BANNED, UserManagementModule::t('back', 'Banned'), 'danger']]], ['class' => 'yii\\grid\\CheckboxColumn', 'options' => ['style' => 'width:10px']], ['class' => 'yii\\grid\\ActionColumn', 'contentOptions' => ['style' => 'width:70px; text-align:center;']]]]);
?>

			<?php 
Pjax::end();
?>

		</div>
	</div>
</div>
예제 #6
0
 * @var $widget webvimark\ybc\content\models\ContentTemplateWidget
 */
use webvimark\modules\UserManagement\models\User;
use yii\helpers\Html;
?>

<div class="widget-element" data-widget-id="<?php 
echo $widget->id;
?>
">
	<div class="panel panel-warning">
		<div class="panel-heading">
			<strong>

				<?php 
if ($widget->has_settings == 1 && $widget->link_to_settings && User::canRoute(Yii::$app->homeUrl . ltrim($widget->link_to_settings, '/'))) {
    ?>
					<?php 
    echo Html::a("<i class='fa fa-cogs'></i>", Yii::$app->homeUrl . ltrim($widget->link_to_settings, '/'), ['target' => '_blank', 'class' => 'tn']);
    ?>

				<?php 
} else {
    ?>
					<i class='fa fa-th'></i>

				<?php 
}
?>

				<span>