add role to user
This commit is contained in:
parent
bdd5a94b3f
commit
43d5598f23
@ -65,7 +65,7 @@ class UserController extends \backend\controllers\BackendController
|
|||||||
|
|
||||||
$this->updateAccountAssignments($model);
|
$this->updateAccountAssignments($model);
|
||||||
|
|
||||||
// return $this->redirect(['view', 'id' => $model->id]);
|
return $this->redirect(['index' ]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -10,6 +10,8 @@ class UserCreate extends User{
|
|||||||
public $password_repeat;
|
public $password_repeat;
|
||||||
public $selected_accounts = [];
|
public $selected_accounts = [];
|
||||||
|
|
||||||
|
public $role;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
@ -28,6 +30,9 @@ class UserCreate extends User{
|
|||||||
['username' ,'unique' ],
|
['username' ,'unique' ],
|
||||||
[['password_plain' ,'password_repeat'] ,'string','min' =>6 ],
|
[['password_plain' ,'password_repeat'] ,'string','min' =>6 ],
|
||||||
[['password_repeat'] ,'validatePasswordRepeat' ],
|
[['password_repeat'] ,'validatePasswordRepeat' ],
|
||||||
|
|
||||||
|
[['role'], 'required'],
|
||||||
|
[['role'], 'string', 'max' => 20],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -66,9 +71,9 @@ class UserCreate extends User{
|
|||||||
|
|
||||||
public function afterSave($insert, $changedAttributes){
|
public function afterSave($insert, $changedAttributes){
|
||||||
parent::afterSave($insert, $changedAttributes);
|
parent::afterSave($insert, $changedAttributes);
|
||||||
// $am = Yii::$app->authManager;
|
$am = Yii::$app->authManager;
|
||||||
// $role = $am->getRole('admin');
|
$role = $am->getRole($this->role);
|
||||||
// Yii::$app->authManager->assign($role, $this->id);
|
Yii::$app->authManager->assign($role, $this->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -10,6 +10,8 @@ class UserUpdate extends User {
|
|||||||
public $password_repeat;
|
public $password_repeat;
|
||||||
public $selected_accounts = [];
|
public $selected_accounts = [];
|
||||||
|
|
||||||
|
public $role;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
* @formatter:off
|
* @formatter:off
|
||||||
@ -28,7 +30,9 @@ class UserUpdate extends User {
|
|||||||
$this->addError($attribute, 'Invalid array');
|
$this->addError($attribute, 'Invalid array');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
[['role'], 'required'],
|
||||||
|
[['role'], 'string', 'max' => 20],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,10 +72,11 @@ class UserUpdate extends User {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public function afterSave($insert, $changedAttributes) {
|
public function afterSave($insert, $changedAttributes){
|
||||||
parent::afterSave ( $insert, $changedAttributes );
|
parent::afterSave($insert, $changedAttributes);
|
||||||
// $am = Yii::$app->authManager;
|
$am = Yii::$app->authManager;
|
||||||
// $role = $am->getRole('admin');
|
$am->revokeAll($this->id);
|
||||||
// Yii::$app->authManager->assign($role, $this->id);
|
$role = $am->getRole($this->role);
|
||||||
|
Yii::$app->authManager->assign($role, $this->id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3,15 +3,21 @@
|
|||||||
use yii\helpers\Html;
|
use yii\helpers\Html;
|
||||||
use yii\widgets\ActiveForm;
|
use yii\widgets\ActiveForm;
|
||||||
use yii\grid\GridView;
|
use yii\grid\GridView;
|
||||||
use yii\base\Widget;
|
|
||||||
use yii\base\Object;
|
|
||||||
use yii\data\ArrayDataProvider;
|
use yii\data\ArrayDataProvider;
|
||||||
|
use common\components\RoleDefinition;
|
||||||
|
|
||||||
/* @var $this yii\web\View */
|
/* @var $this yii\web\View */
|
||||||
/* @var $model common\models\User */
|
/* @var $model common\models\User */
|
||||||
/* @var $form yii\widgets\ActiveForm */
|
/* @var $form yii\widgets\ActiveForm */
|
||||||
?>
|
?>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$roleOptions = RoleDefinition::roleLabels();
|
||||||
|
asort($roleOptions);
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
<div class="user-form">
|
<div class="user-form">
|
||||||
|
|
||||||
<?php $form = ActiveForm::begin(); ?>
|
<?php $form = ActiveForm::begin(); ?>
|
||||||
@ -21,6 +27,7 @@ use yii\data\ArrayDataProvider;
|
|||||||
<?= $form->field($model, 'email')->textInput() ?>
|
<?= $form->field($model, 'email')->textInput() ?>
|
||||||
<?= $form->field($model, 'password_plain')->passwordInput() ?>
|
<?= $form->field($model, 'password_plain')->passwordInput() ?>
|
||||||
<?= $form->field($model, 'password_repeat')->passwordInput() ?>
|
<?= $form->field($model, 'password_repeat')->passwordInput() ?>
|
||||||
|
<?= $form->field($model, 'role')->dropDownList($roleOptions) ?>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
use yii\helpers\Html;
|
use yii\helpers\Html;
|
||||||
use yii\grid\GridView;
|
use yii\grid\GridView;
|
||||||
|
use common\components\RoleDefinition;
|
||||||
|
|
||||||
/* @var $this yii\web\View */
|
/* @var $this yii\web\View */
|
||||||
/* @var $searchModel frontend\models\UserSearch */
|
/* @var $searchModel frontend\models\UserSearch */
|
||||||
@ -28,6 +29,15 @@ $this->params['breadcrumbs'][] = $this->title;
|
|||||||
'email:email',
|
'email:email',
|
||||||
'created_at:datetime',
|
'created_at:datetime',
|
||||||
|
|
||||||
|
[
|
||||||
|
'attribute' => 'role',
|
||||||
|
'value' => function ($model){
|
||||||
|
$roles = \Yii::$app->authManager->getRolesByUser($model->id );
|
||||||
|
|
||||||
|
return implode(', ', array_map(function ($role) { return sprintf("%s", RoleDefinition::getRoleLabel($role->name)); }, $roles ));
|
||||||
|
}
|
||||||
|
] ,
|
||||||
|
|
||||||
['class' => 'yii\grid\ActionColumn',
|
['class' => 'yii\grid\ActionColumn',
|
||||||
'template' => '{view} {update}'
|
'template' => '{view} {update}'
|
||||||
],
|
],
|
||||||
|
|||||||
@ -25,6 +25,10 @@ $this->params['breadcrumbs'][] = $this->title;
|
|||||||
'email:email',
|
'email:email',
|
||||||
'statusHuman',
|
'statusHuman',
|
||||||
'created_at:datetime',
|
'created_at:datetime',
|
||||||
|
[
|
||||||
|
'attribute' => 'role',
|
||||||
|
'value' => $model->roleString
|
||||||
|
]
|
||||||
],
|
],
|
||||||
]) ?>
|
]) ?>
|
||||||
|
|
||||||
|
|||||||
@ -1,10 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace common\components;
|
namespace common\components;
|
||||||
|
|
||||||
use yii\base\InvalidConfigException;
|
|
||||||
use Yii;
|
|
||||||
use yii\base\Model;
|
|
||||||
|
|
||||||
class Helper
|
class Helper
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -27,4 +23,28 @@ class Helper
|
|||||||
$query->andFilterWhere([ '<' , $field , $end ] );
|
$query->andFilterWhere([ '<' , $field , $end ] );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function roleLabels(){
|
||||||
|
return [
|
||||||
|
'reception' => Yii::t('common/role' ,'Reception'),
|
||||||
|
'admin' => Yii::t('common/role' ,'Administrator'),
|
||||||
|
'employee' => Yii::t('common/role' ,'Alkalmazott'),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function roleDefinitions(){
|
||||||
|
return [
|
||||||
|
'employee' => [
|
||||||
|
'canAllow' => [ 'employee'],
|
||||||
|
],
|
||||||
|
'admin' => [
|
||||||
|
'canAllow' => ['admin','reception','employee'],
|
||||||
|
],
|
||||||
|
'reception' => [
|
||||||
|
'canAllow' => [ ],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
65
common/components/RoleDefinition.php
Normal file
65
common/components/RoleDefinition.php
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
<?php
|
||||||
|
namespace common\components;
|
||||||
|
|
||||||
|
use \Yii;
|
||||||
|
|
||||||
|
class RoleDefinition{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static function roleLabels(){
|
||||||
|
return [
|
||||||
|
'reception' => Yii::t('common/role' ,'Reception'),
|
||||||
|
'admin' => Yii::t('common/role' ,'Administrator'),
|
||||||
|
'employee' => Yii::t('common/role' ,'Employee'),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getRoleLabel($role){
|
||||||
|
$result = null;
|
||||||
|
$roleLabels = self::roleLabels();
|
||||||
|
if ( array_key_exists($role, $roleLabels)){
|
||||||
|
$result = $roleLabels[$role];
|
||||||
|
}
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static function roleDefinitions(){
|
||||||
|
return [
|
||||||
|
'employee' => [
|
||||||
|
'canAllow' => [ 'employee'],
|
||||||
|
],
|
||||||
|
'admin' => [
|
||||||
|
'canAllow' => ['admin','reception','employee'],
|
||||||
|
],
|
||||||
|
'reception' => [
|
||||||
|
'canAllow' => [ ],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static function getRoleDefinition($role){
|
||||||
|
$defs = self::roleDefinitions();
|
||||||
|
$result = null;
|
||||||
|
if ( array_key_exists($role, $defs)){
|
||||||
|
$result = $defs[$role];
|
||||||
|
}
|
||||||
|
$result = $defs[$role];
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getRolesCanAllow($role){
|
||||||
|
$result = [];
|
||||||
|
$def = self::getRoleDefinition($role);
|
||||||
|
if ( isset($def)){
|
||||||
|
$result = $def['canAllow'];
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -6,6 +6,7 @@ use yii\base\NotSupportedException;
|
|||||||
use yii\behaviors\TimestampBehavior;
|
use yii\behaviors\TimestampBehavior;
|
||||||
use yii\db\ActiveRecord;
|
use yii\db\ActiveRecord;
|
||||||
use yii\web\IdentityInterface;
|
use yii\web\IdentityInterface;
|
||||||
|
use common\components\RoleDefinition;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* User model
|
* User model
|
||||||
@ -212,10 +213,27 @@ class User extends ActiveRecord implements IdentityInterface
|
|||||||
'username' => Yii::t('backend/user', 'Username'),
|
'username' => Yii::t('backend/user', 'Username'),
|
||||||
'email' => Yii::t('backend/user', 'E-Mail'),
|
'email' => Yii::t('backend/user', 'E-Mail'),
|
||||||
'created_at' => Yii::t('backend/user', 'Created at'),
|
'created_at' => Yii::t('backend/user', 'Created at'),
|
||||||
|
'role' => Yii::t('backend/user', 'Role'),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @return \yii\rbac\Role[]*/
|
||||||
|
public function getRoles(){
|
||||||
|
$roles = \Yii::$app->authManager->getRolesByUser($this->id );
|
||||||
|
return $roles;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
* */
|
||||||
|
public function getRoleString(){
|
||||||
|
$roles = \Yii::$app->authManager->getRolesByUser($this->id );
|
||||||
|
|
||||||
|
return implode(', ', array_map(function ($role) { return sprintf("%s", RoleDefinition::getRoleLabel($role->name)); }, $roles ));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* $param int $forceIncludeAccount id warehouse, that should be included in list, even if it is inactive
|
* $param int $forceIncludeAccount id warehouse, that should be included in list, even if it is inactive
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user