From fb14316c265979351d8ab84010ad6a7787294af6 Mon Sep 17 00:00:00 2001 From: Vitalii Dovhyi Date: Thu, 20 Jun 2019 11:07:05 +0300 Subject: [PATCH 01/12] fix work module with DA/user --- components/AuthHelper.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/components/AuthHelper.php b/components/AuthHelper.php index 4ef8c1e2..773472f5 100644 --- a/components/AuthHelper.php +++ b/components/AuthHelper.php @@ -350,6 +350,16 @@ private static function getControllerRoutes($module, $namespace, $prefix, &$resu $className = $namespace . Inflector::id2camel($id) . 'Controller'; if ( strpos($className, '-') === false && class_exists($className) && is_subclass_of($className, 'yii\base\Controller') ) { + if($className =='Da\User\Controller\AbstractAuthItemController') continue; + if($prefix . $id =='admin') continue; + if($prefix . $id =='permission') continue; + if($prefix . $id =='profile') continue; + if($prefix . $id =='recovery') continue; + if($prefix . $id =='registration') continue; + if($prefix . $id =='role') continue; + if($prefix . $id =='security') continue; + if($prefix . $id =='settings') continue; + $controller = new $className($prefix . $id, $module); self::getActionRoutes($controller, $result); $result[] = '/' . $controller->uniqueId . '/*'; From 0c301e62194143f21d19e4e84dd896864442d608 Mon Sep 17 00:00:00 2001 From: Vitalii Dovhyi Date: Thu, 20 Jun 2019 11:27:14 +0300 Subject: [PATCH 02/12] fix composer.json --- composer.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index ede8ce9c..532405ba 100644 --- a/composer.json +++ b/composer.json @@ -1,9 +1,9 @@ { - "name": "webvimark/module-user-management", + "name": "xvetx/module-user-management", "description": "User with improved RBAC", "autoload": { "psr-4": { - "webvimark\\modules\\UserManagement\\": "" + "xvetx\\modules\\UserManagement\\": "" } }, "require": { From cedb245d4ba1f76bb0889e2468e314fe69c3bae3 Mon Sep 17 00:00:00 2001 From: Vitalii Dovhyi Date: Thu, 20 Jun 2019 11:39:16 +0300 Subject: [PATCH 03/12] new readme --- README.md | 269 +----------------------------------------------------- 1 file changed, 1 insertion(+), 268 deletions(-) diff --git a/README.md b/README.md index b1be3183..885e2c2b 100644 --- a/README.md +++ b/README.md @@ -1,268 +1 @@ -User management module for Yii 2 -===== - -Perks ---- - -* User management -* RBAC (roles, permissions and stuff) with web interface -* Registration, authorization, password recovery and so on -* Visit log -* Optimised (zero DB queries during usual user workflow) -* Nice widgets like GhostMenu or GhostHtml::a where elements are visible only if user has access to route where they point - - -Installation ------------- - -The preferred way to install this extension is through [composer](http://getcomposer.org/download/). - -Either run - -``` -composer require webvimark/module-user-management -``` - -or add - -``` -"webvimark/module-user-management": "^1" -``` - -to the require section of your `composer.json` file. - -Configuration ---- - -1) In your config/web.php - -```php - -'components'=>[ - 'user' => [ - 'class' => 'webvimark\modules\UserManagement\components\UserConfig', - - // Comment this if you don't want to record user logins - 'on afterLogin' => function($event) { - \webvimark\modules\UserManagement\models\UserVisitLog::newVisitor($event->identity->id); - } - ], -], - -'modules'=>[ - 'user-management' => [ - 'class' => 'webvimark\modules\UserManagement\UserManagementModule', - - // 'enableRegistration' => true, - - // Add regexp validation to passwords. Default pattern does not restrict user and can enter any set of characters. - // The example below allows user to enter : - // any set of characters - // (?=\S{8,}): of at least length 8 - // (?=\S*[a-z]): containing at least one lowercase letter - // (?=\S*[A-Z]): and at least one uppercase letter - // (?=\S*[\d]): and at least one number - // $: anchored to the end of the string - - //'passwordRegexp' => '^\S*(?=\S{8,})(?=\S*[a-z])(?=\S*[A-Z])(?=\S*[\d])\S*$', - - - // Here you can set your handler to change layout for any controller or action - // Tip: you can use this event in any module - 'on beforeAction'=>function(yii\base\ActionEvent $event) { - if ( $event->action->uniqueId == 'user-management/auth/login' ) - { - $event->action->controller->layout = 'loginLayout.php'; - }; - }, - ], -], - -``` - -To learn about events check: - -* http://www.yiiframework.com/doc-2.0/guide-concept-events.html -* http://www.yiiframework.com/doc-2.0/guide-concept-configurations.html#configuration-format - -Layout handler example in *AuthHelper::layoutHandler()* - -To see full list of options check *UserManagementModule* file - - -2) In your config/console.php (this is needed for migrations and working with console) - -```php - -'modules'=>[ - 'user-management' => [ - 'class' => 'webvimark\modules\UserManagement\UserManagementModule', - 'controllerNamespace'=>'vendor\webvimark\modules\UserManagement\controllers', // To prevent yii help from crashing - ], -], - -``` - -3) Run migrations - -```php - -./yii migrate --migrationPath=vendor/webvimark/module-user-management/migrations/ - -``` - -4) In you base controller - -```php - -public function behaviors() -{ - return [ - 'ghost-access'=> [ - 'class' => 'webvimark\modules\UserManagement\components\GhostAccessControl', - ], - ]; -} - -``` - -Where you can go ------ - -```php - -false, - 'activateParents'=>true, - 'items' => [ - [ - 'label' => 'Backend routes', - 'items'=>UserManagementModule::menuItems() - ], - [ - 'label' => 'Frontend routes', - 'items'=>[ - ['label'=>'Login', 'url'=>['/user-management/auth/login']], - ['label'=>'Logout', 'url'=>['/user-management/auth/logout']], - ['label'=>'Registration', 'url'=>['/user-management/auth/registration']], - ['label'=>'Change own password', 'url'=>['/user-management/auth/change-own-password']], - ['label'=>'Password recovery', 'url'=>['/user-management/auth/password-recovery']], - ['label'=>'E-mail confirmation', 'url'=>['/user-management/auth/confirm-email']], - ], - ], - ], -]); -?> - -``` - -First steps ---- - -From the menu above at first you'll se only 2 element: "Login" and "Logout" because you have no permission to visit other urls -and to render menu we using **GhostMenu::widget()**. It's render only element that active user can visit. - -Also same functionality has **GhostNav::widget()** and **GhostHtml:a()** - -1) Login as superadmin/superadmin - -2) Go to "Permissions" and play there - -3) Go to "Roles" and play there - -4) Go to "User" and play there - -5) Relax - - -Usage ---- - -You controllers may have two properties that will make whole controller or selected action accessible to everyone - -```php -public $freeAccess = true; - -``` - -Or - -```php -public $freeAccessActions = ['first-action', 'another-action']; - -``` - -Here are list of the useful helpers. For detailed explanation look in the corresponding functions. - -```php - -User::hasRole($roles, $superAdminAllowed = true) -User::hasPermission($permission, $superAdminAllowed = true) -User::canRoute($route, $superAdminAllowed = true) - -User::assignRole($userId, $roleName) -User::revokeRole($userId, $roleName) - -User::getCurrentUser($fromSingleton = true) - -``` - -Role, Permission and Route all have following methods - -```php - -Role::create($name, $description = null, $groupCode = null, $ruleName = null, $data = null) -Role::addChildren($parentName, $childrenNames, $throwException = false) -Role::removeChildren($parentName, $childrenNames) - -``` - - -Events ------- - -Events can be handled via config file like following - -```php - -'modules'=>[ - 'user-management' => [ - 'class' => 'webvimark\modules\UserManagement\UserManagementModule', - 'on afterRegistration' => function(UserAuthEvent $event) { - // Here you can do your own stuff like assign roles, send emails and so on - }, - ], -], - -``` - -List of supported events can be found in *UserAuthEvent* class - -FAQ ---- - -**Question**: Do you have API docs? - -**Answer**: Check this one http://opensource.id5.com.br/webvimark/doc/index.html (Credits to [lukBarros](https://github.com/lukBarros)) - -**Question**: I want users to register and login with they e-mails! Mmmmm... And they should confirm it too! - -**Answer**: See configuration properties *$useEmailAsLogin* and *$emailConfirmationRequired* - -**Question**: I want to have profile for user with avatar, birthday and stuff. What should I do ? - -**Answer**: Profiles are to project-specific, so you'll have to implement them yourself (but you can find example here - https://github.com/webvimark/user-management/wiki/Profile-and-custom-registration). Here is how to do it without modifying this module - -1) Create table and model for profile, that have user_id (connect with "user" table) - -2) Check AuthController::actionRegistration() how it works (*you can skip this part*) - -3) Define your layout for registration. Check example in *AuthHelper::layoutHandler()*. Now use theming to change registraion.php file - -4) Define your own UserManagementModule::$registrationFormClass. In this class you can do whatever you want like validating custom forms and saving profiles - -5) Create your controller where user can view profiles +This is a fork of webvimark/user-management-module \ No newline at end of file From 4f89d6c36840f0c1bf38733d75c34b43caaa40cf Mon Sep 17 00:00:00 2001 From: Vitalii Dovhyi Date: Thu, 20 Jun 2019 11:52:30 +0300 Subject: [PATCH 04/12] Change to namespace xvetx from webvimark for forking --- README.md | 2 +- UserManagementModule.php | 6 +++--- components/AbstractItemEvent.php | 2 +- components/AuthHelper.php | 12 ++++++------ components/GhostAccessControl.php | 6 +++--- components/GhostHtml.php | 6 +++--- components/GhostMenu.php | 6 +++--- components/GhostNav.php | 6 +++--- components/UserAuthEvent.php | 10 +++++----- components/UserConfig.php | 6 +++--- components/UserIdentity.php | 4 ++-- controllers/AuthController.php | 16 ++++++++-------- controllers/AuthItemGroupController.php | 10 +++++----- controllers/PermissionController.php | 18 +++++++++--------- controllers/RoleController.php | 16 ++++++++-------- controllers/UserController.php | 10 +++++----- controllers/UserPermissionController.php | 10 +++++----- controllers/UserVisitLogController.php | 10 +++++----- ...140809_072112_insert_superadmin_to_user.php | 2 +- ...4_insert_common_permisison_to_auth_item.php | 2 +- ...07_001649_create_basic_user_permissions.php | 8 ++++---- models/User.php | 12 ++++++------ models/UserVisitLog.php | 4 ++-- models/forms/ChangeOwnPasswordForm.php | 6 +++--- models/forms/ConfirmEmailForm.php | 6 +++--- models/forms/LoginForm.php | 6 +++--- models/forms/PasswordRecoveryForm.php | 6 +++--- models/forms/RegistrationForm.php | 8 ++++---- models/rbacDB/AbstractItem.php | 8 ++++---- models/rbacDB/AuthItemGroup.php | 4 ++-- models/rbacDB/Permission.php | 4 ++-- models/rbacDB/Role.php | 4 ++-- models/rbacDB/Route.php | 4 ++-- models/rbacDB/search/AbstractItemSearch.php | 8 ++++---- models/rbacDB/search/AuthItemGroupSearch.php | 4 ++-- models/rbacDB/search/PermissionSearch.php | 2 +- models/rbacDB/search/RoleSearch.php | 2 +- models/search/UserSearch.php | 6 +++--- models/search/UserVisitLogSearch.php | 8 ++++---- views/auth-item-group/_form.php | 4 ++-- views/auth-item-group/create.php | 4 ++-- views/auth-item-group/index.php | 6 +++--- views/auth-item-group/update.php | 4 ++-- views/auth-item-group/view.php | 4 ++-- views/auth/changeOwnPassword.php | 4 ++-- views/auth/changeOwnPasswordSuccess.php | 2 +- views/auth/confirmEmail.php | 4 ++-- views/auth/confirmEmailSuccess.php | 4 ++-- views/auth/login.php | 6 +++--- views/auth/passwordRecovery.php | 4 ++-- views/auth/passwordRecoverySuccess.php | 2 +- views/auth/registration.php | 4 ++-- .../registrationWaitForEmailConfirmation.php | 4 ++-- views/layouts/loginLayout.php | 2 +- views/mail/emailConfirmationMail.php | 2 +- views/mail/passwordRecoveryMail.php | 2 +- views/mail/registrationEmailConfirmation.php | 2 +- views/permission/_form.php | 6 +++--- views/permission/create.php | 4 ++-- views/permission/index.php | 10 +++++----- views/permission/update.php | 4 ++-- views/permission/view.php | 4 ++-- views/role/_form.php | 6 +++--- views/role/create.php | 4 ++-- views/role/index.php | 10 +++++----- views/role/update.php | 4 ++-- views/role/view.php | 6 +++--- views/user-permission/set.php | 8 ++++---- views/user-visit-log/index.php | 4 ++-- views/user-visit-log/view.php | 4 ++-- views/user/_form.php | 6 +++--- views/user/_search.php | 2 +- views/user/changePassword.php | 4 ++-- views/user/create.php | 4 ++-- views/user/index.php | 10 +++++----- views/user/update.php | 6 +++--- views/user/view.php | 10 +++++----- 77 files changed, 225 insertions(+), 225 deletions(-) diff --git a/README.md b/README.md index 885e2c2b..ec2e4e52 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -This is a fork of webvimark/user-management-module \ No newline at end of file +This is a fork of webvimark/user-management-module \ No newline at end of file diff --git a/UserManagementModule.php b/UserManagementModule.php index 75717919..47842242 100644 --- a/UserManagementModule.php +++ b/UserManagementModule.php @@ -1,6 +1,6 @@ ['webvimark\modules\UserManagement\components\AuthHelper', 'layoutHandler'], + * 'on beforeAction'=>['xvetx\modules\UserManagement\components\AuthHelper', 'layoutHandler'], * * @param \yii\base\ActionEvent $event */ diff --git a/components/GhostAccessControl.php b/components/GhostAccessControl.php index fd7d7e5b..d48ca3e9 100644 --- a/components/GhostAccessControl.php +++ b/components/GhostAccessControl.php @@ -1,9 +1,9 @@ User::canRoute($item['url') will be added * - * @package webvimark\modules\UserManagement\components + * @package xvetx\modules\UserManagement\components */ class GhostMenu extends Menu { diff --git a/components/GhostNav.php b/components/GhostNav.php index 2417705e..ceaa85c1 100644 --- a/components/GhostNav.php +++ b/components/GhostNav.php @@ -1,7 +1,7 @@ User::canRoute($item['url') will be added * - * @package webvimark\modules\UserManagement\components + * @package xvetx\modules\UserManagement\components */ class GhostNav extends Nav { diff --git a/components/UserAuthEvent.php b/components/UserAuthEvent.php index c713a20e..887ed4f6 100644 --- a/components/UserAuthEvent.php +++ b/components/UserAuthEvent.php @@ -1,10 +1,10 @@ 'webvimark\modules\UserManagement\models\User', + 'targetClass' => 'xvetx\modules\UserManagement\models\User', 'targetAttribute' => 'username', ], diff --git a/models/rbacDB/AbstractItem.php b/models/rbacDB/AbstractItem.php index fae8ae59..0f4a7b50 100644 --- a/models/rbacDB/AbstractItem.php +++ b/models/rbacDB/AbstractItem.php @@ -1,9 +1,9 @@ diff --git a/views/auth-item-group/create.php b/views/auth-item-group/create.php index f1214c58..394c6cd6 100644 --- a/views/auth-item-group/create.php +++ b/views/auth-item-group/create.php @@ -1,11 +1,11 @@ title = UserManagementModule::t('back', 'Creating permission group'); diff --git a/views/auth-item-group/index.php b/views/auth-item-group/index.php index 51a37134..edde11bc 100644 --- a/views/auth-item-group/index.php +++ b/views/auth-item-group/index.php @@ -1,7 +1,7 @@ title = UserManagementModule::t('back', 'Permission groups'); diff --git a/views/auth-item-group/update.php b/views/auth-item-group/update.php index 1d3520c7..f2ff5c31 100644 --- a/views/auth-item-group/update.php +++ b/views/auth-item-group/update.php @@ -1,11 +1,11 @@ title = UserManagementModule::t('back', 'Editing permission group') . ': ' . $model->name; diff --git a/views/auth-item-group/view.php b/views/auth-item-group/view.php index b3b289a3..e95fb68f 100644 --- a/views/auth-item-group/view.php +++ b/views/auth-item-group/view.php @@ -1,12 +1,12 @@ title = $model->name; diff --git a/views/auth/changeOwnPassword.php b/views/auth/changeOwnPassword.php index 9985fec8..fffda333 100644 --- a/views/auth/changeOwnPassword.php +++ b/views/auth/changeOwnPassword.php @@ -1,12 +1,12 @@ title = UserManagementModule::t('back', 'Change own password'); diff --git a/views/auth/changeOwnPasswordSuccess.php b/views/auth/changeOwnPasswordSuccess.php index 88e0a4f9..a8b209c8 100644 --- a/views/auth/changeOwnPasswordSuccess.php +++ b/views/auth/changeOwnPasswordSuccess.php @@ -1,6 +1,6 @@ title = UserManagementModule::t('front', 'Confirm E-mail'); diff --git a/views/auth/confirmEmailSuccess.php b/views/auth/confirmEmailSuccess.php index 7bd4c0e7..403d3944 100644 --- a/views/auth/confirmEmailSuccess.php +++ b/views/auth/confirmEmailSuccess.php @@ -1,11 +1,11 @@ title = UserManagementModule::t('front', 'E-mail confirmed'); diff --git a/views/auth/login.php b/views/auth/login.php index 25d7b088..d5a2d0c7 100644 --- a/views/auth/login.php +++ b/views/auth/login.php @@ -1,11 +1,11 @@ diff --git a/views/auth/passwordRecovery.php b/views/auth/passwordRecovery.php index b834c6d0..d07a5385 100644 --- a/views/auth/passwordRecovery.php +++ b/views/auth/passwordRecovery.php @@ -1,13 +1,13 @@ title = UserManagementModule::t('front', 'Password recovery'); diff --git a/views/auth/passwordRecoverySuccess.php b/views/auth/passwordRecoverySuccess.php index bc7b678f..aa8dac11 100644 --- a/views/auth/passwordRecoverySuccess.php +++ b/views/auth/passwordRecoverySuccess.php @@ -1,6 +1,6 @@ title = UserManagementModule::t('front', 'Registration'); diff --git a/views/auth/registrationWaitForEmailConfirmation.php b/views/auth/registrationWaitForEmailConfirmation.php index 05805288..53d0afc1 100644 --- a/views/auth/registrationWaitForEmailConfirmation.php +++ b/views/auth/registrationWaitForEmailConfirmation.php @@ -1,10 +1,10 @@ title = UserManagementModule::t('front', 'Registration - confirm your e-mail'); diff --git a/views/layouts/loginLayout.php b/views/layouts/loginLayout.php index a728287d..c906f962 100644 --- a/views/layouts/loginLayout.php +++ b/views/layouts/loginLayout.php @@ -1,6 +1,6 @@ title = UserManagementModule::t('back', 'Permission creation'); $this->params['breadcrumbs'][] = ['label' => UserManagementModule::t('back', 'Permissions'), 'url' => ['index']]; diff --git a/views/permission/index.php b/views/permission/index.php index 4f8796a2..6d778d35 100644 --- a/views/permission/index.php +++ b/views/permission/index.php @@ -1,10 +1,10 @@ title = UserManagementModule::t('back', 'Permissions'); diff --git a/views/permission/update.php b/views/permission/update.php index b2736079..f84ce8af 100644 --- a/views/permission/update.php +++ b/views/permission/update.php @@ -1,10 +1,10 @@ title = UserManagementModule::t('back', 'Editing permission: ') . ' ' . $model->name; $this->params['breadcrumbs'][] = ['label' => UserManagementModule::t('back', 'Permissions'), 'url' => ['index']]; diff --git a/views/permission/view.php b/views/permission/view.php index a28af200..7bc5cf77 100644 --- a/views/permission/view.php +++ b/views/permission/view.php @@ -9,8 +9,8 @@ * @var yii\rbac\Permission $item */ -use webvimark\modules\UserManagement\components\GhostHtml; -use webvimark\modules\UserManagement\UserManagementModule; +use xvetx\modules\UserManagement\components\GhostHtml; +use xvetx\modules\UserManagement\UserManagementModule; use yii\helpers\ArrayHelper; use yii\helpers\Html; diff --git a/views/role/_form.php b/views/role/_form.php index 764e92ff..b0637082 100644 --- a/views/role/_form.php +++ b/views/role/_form.php @@ -1,10 +1,10 @@ title = UserManagementModule::t('back', 'Role creation'); $this->params['breadcrumbs'][] = ['label' => UserManagementModule::t('back', 'Roles'), 'url' => ['index']]; diff --git a/views/role/index.php b/views/role/index.php index 6d09e1b3..53f35e01 100644 --- a/views/role/index.php +++ b/views/role/index.php @@ -1,10 +1,10 @@ title = UserManagementModule::t('back', 'Roles'); diff --git a/views/role/update.php b/views/role/update.php index 8c28b7b1..aa66ab19 100644 --- a/views/role/update.php +++ b/views/role/update.php @@ -1,10 +1,10 @@ title = UserManagementModule::t('back', 'Editing role: ') . ' ' . $model->name; $this->params['breadcrumbs'][] = ['label' => UserManagementModule::t('back', 'Roles'), 'url' => ['index']]; diff --git a/views/role/view.php b/views/role/view.php index 2754628e..8528f255 100644 --- a/views/role/view.php +++ b/views/role/view.php @@ -10,9 +10,9 @@ * @var yii\rbac\Role $role */ -use webvimark\modules\UserManagement\components\GhostHtml; -use webvimark\modules\UserManagement\models\rbacDB\Role; -use webvimark\modules\UserManagement\UserManagementModule; +use xvetx\modules\UserManagement\components\GhostHtml; +use xvetx\modules\UserManagement\models\rbacDB\Role; +use xvetx\modules\UserManagement\UserManagementModule; use yii\helpers\ArrayHelper; use yii\helpers\Html; diff --git a/views/user-permission/set.php b/views/user-permission/set.php index 462a72d2..6e44615a 100644 --- a/views/user-permission/set.php +++ b/views/user-permission/set.php @@ -2,12 +2,12 @@ /** * @var yii\web\View $this * @var array $permissionsByGroup - * @var webvimark\modules\UserManagement\models\User $user + * @var xvetx\modules\UserManagement\models\User $user */ -use webvimark\modules\UserManagement\components\GhostHtml; -use webvimark\modules\UserManagement\models\rbacDB\Role; -use webvimark\modules\UserManagement\UserManagementModule; +use xvetx\modules\UserManagement\components\GhostHtml; +use xvetx\modules\UserManagement\models\rbacDB\Role; +use xvetx\modules\UserManagement\UserManagementModule; use yii\bootstrap\BootstrapPluginAsset; use yii\helpers\ArrayHelper; use yii\helpers\Html; diff --git a/views/user-visit-log/index.php b/views/user-visit-log/index.php index 4d70a702..abb1f3e0 100644 --- a/views/user-visit-log/index.php +++ b/views/user-visit-log/index.php @@ -1,7 +1,7 @@ title = UserManagementModule::t('back', 'Visit log'); diff --git a/views/user-visit-log/view.php b/views/user-visit-log/view.php index ce7a0731..e6290f17 100644 --- a/views/user-visit-log/view.php +++ b/views/user-visit-log/view.php @@ -1,12 +1,12 @@ title = $model->id; diff --git a/views/user/_form.php b/views/user/_form.php index e828d60f..45c99ccd 100644 --- a/views/user/_form.php +++ b/views/user/_form.php @@ -1,14 +1,14 @@ diff --git a/views/user/_search.php b/views/user/_search.php index d5f0c455..a67415e2 100644 --- a/views/user/_search.php +++ b/views/user/_search.php @@ -5,7 +5,7 @@ /** * @var yii\web\View $this - * @var webvimark\modules\UserManagement\models\search\UserSearch $model + * @var xvetx\modules\UserManagement\models\search\UserSearch $model * @var yii\widgets\ActiveForm $form */ ?> diff --git a/views/user/changePassword.php b/views/user/changePassword.php index 1ec181c0..94242daf 100644 --- a/views/user/changePassword.php +++ b/views/user/changePassword.php @@ -1,12 +1,12 @@ title = UserManagementModule::t('back', 'Changing password for user: ') . ' ' . $model->username; diff --git a/views/user/create.php b/views/user/create.php index f890c518..f04dffa1 100644 --- a/views/user/create.php +++ b/views/user/create.php @@ -1,11 +1,11 @@ title = UserManagementModule::t('back', 'User creation'); diff --git a/views/user/index.php b/views/user/index.php index 2c5a6565..68281e0f 100644 --- a/views/user/index.php +++ b/views/user/index.php @@ -1,9 +1,9 @@ title = UserManagementModule::t('back', 'Users'); diff --git a/views/user/update.php b/views/user/update.php index 0a4ef0a1..e9248de6 100644 --- a/views/user/update.php +++ b/views/user/update.php @@ -1,14 +1,14 @@ title = UserManagementModule::t('back', 'Editing user: ') . ' ' . $model->username; diff --git a/views/user/view.php b/views/user/view.php index 5623a29b..af9244e1 100644 --- a/views/user/view.php +++ b/views/user/view.php @@ -1,16 +1,16 @@ title = $model->username; From 9326b18f769f1c13e9dab3b6c0c6cec97fff3f6e Mon Sep 17 00:00:00 2001 From: Vitalii Dovhyi Date: Thu, 20 Jun 2019 11:56:16 +0300 Subject: [PATCH 05/12] change composer.json --- composer.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/composer.json b/composer.json index 532405ba..375d3de6 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,18 @@ { "name": "xvetx/module-user-management", + "type": "yii2-extension", + "keywords": ["yii2","yii2-user","user-management"], "description": "User with improved RBAC", + "authors": [ + { + "name": "Xvetx", + "email": "xvetx2013t@gmail.com" + }, + { + "name": "webvimark" + } + ], + "license": "BSD-3-Clause", "autoload": { "psr-4": { "xvetx\\modules\\UserManagement\\": "" From ec356de32147765dd4026b511bb0fcc3d8033709 Mon Sep 17 00:00:00 2001 From: Vitalii Dovhyi Date: Thu, 20 Jun 2019 14:18:05 +0300 Subject: [PATCH 06/12] change webvimark/components to xvetx/components --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 375d3de6..a89d6a4c 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,7 @@ } }, "require": { - "webvimark/components": "^1.0.0", + "xvetx/components": "^1.0.0", "webvimark/bootstrap-switch": "^1.0.0", "ikimea/browser": "1.12.0", "webvimark/date-range-picker": "^1.0.0", From e5cfae11a3d557627ef60fbfbed9832740b2d439 Mon Sep 17 00:00:00 2001 From: Vitalii Dovhyi Date: Thu, 20 Jun 2019 14:34:23 +0300 Subject: [PATCH 07/12] change webvimart\components to xvetx\components\ --- controllers/AuthController.php | 2 +- controllers/AuthItemGroupController.php | 2 +- controllers/PermissionController.php | 2 +- controllers/RoleController.php | 2 +- controllers/UserController.php | 2 +- controllers/UserPermissionController.php | 2 +- controllers/UserVisitLogController.php | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/controllers/AuthController.php b/controllers/AuthController.php index e16ee5a6..208070ec 100644 --- a/controllers/AuthController.php +++ b/controllers/AuthController.php @@ -2,7 +2,7 @@ namespace xvetx\modules\UserManagement\controllers; -use webvimark\components\BaseController; +use xvetx\components\BaseController; use xvetx\modules\UserManagement\components\UserAuthEvent; use xvetx\modules\UserManagement\models\forms\ChangeOwnPasswordForm; use xvetx\modules\UserManagement\models\forms\ConfirmEmailForm; diff --git a/controllers/AuthItemGroupController.php b/controllers/AuthItemGroupController.php index 0cdbbde0..e62f4c31 100644 --- a/controllers/AuthItemGroupController.php +++ b/controllers/AuthItemGroupController.php @@ -5,7 +5,7 @@ use xvetx\modules\UserManagement\models\rbacDB\AuthItemGroup; use xvetx\modules\UserManagement\models\rbacDB\search\AuthItemGroupSearch; use Yii; -use webvimark\components\AdminDefaultController; +use xvetx\components\AdminDefaultController; /** * AuthItemGroupController implements the CRUD actions for AuthItemGroup model. diff --git a/controllers/PermissionController.php b/controllers/PermissionController.php index 7e2d12c3..24750944 100644 --- a/controllers/PermissionController.php +++ b/controllers/PermissionController.php @@ -8,7 +8,7 @@ use xvetx\modules\UserManagement\models\rbacDB\Permission; use xvetx\modules\UserManagement\models\rbacDB\Route; use xvetx\modules\UserManagement\models\rbacDB\search\PermissionSearch; -use webvimark\components\AdminDefaultController; +use xvetx\components\AdminDefaultController; use xvetx\modules\UserManagement\UserManagementModule; use Yii; diff --git a/controllers/RoleController.php b/controllers/RoleController.php index 9b45df7b..51336bb3 100644 --- a/controllers/RoleController.php +++ b/controllers/RoleController.php @@ -6,7 +6,7 @@ use xvetx\modules\UserManagement\models\rbacDB\Permission; use xvetx\modules\UserManagement\models\rbacDB\Role; use xvetx\modules\UserManagement\models\rbacDB\search\RoleSearch; -use webvimark\components\AdminDefaultController; +use xvetx\components\AdminDefaultController; use xvetx\modules\UserManagement\UserManagementModule; use Yii; use yii\rbac\DbManager; diff --git a/controllers/UserController.php b/controllers/UserController.php index 20bd8d58..fec2b265 100644 --- a/controllers/UserController.php +++ b/controllers/UserController.php @@ -2,7 +2,7 @@ namespace xvetx\modules\UserManagement\controllers; -use webvimark\components\AdminDefaultController; +use xvetx\components\AdminDefaultController; use Yii; use xvetx\modules\UserManagement\models\User; use xvetx\modules\UserManagement\models\search\UserSearch; diff --git a/controllers/UserPermissionController.php b/controllers/UserPermissionController.php index eabfc7e1..eeddd198 100644 --- a/controllers/UserPermissionController.php +++ b/controllers/UserPermissionController.php @@ -2,7 +2,7 @@ namespace xvetx\modules\UserManagement\controllers; -use webvimark\components\BaseController; +use xvetx\components\BaseController; use xvetx\modules\UserManagement\models\rbacDB\Permission; use xvetx\modules\UserManagement\models\rbacDB\Role; use xvetx\modules\UserManagement\models\User; diff --git a/controllers/UserVisitLogController.php b/controllers/UserVisitLogController.php index 66bd48ab..959a6770 100644 --- a/controllers/UserVisitLogController.php +++ b/controllers/UserVisitLogController.php @@ -5,7 +5,7 @@ use Yii; use xvetx\modules\UserManagement\models\UserVisitLog; use xvetx\modules\UserManagement\models\search\UserVisitLogSearch; -use webvimark\components\AdminDefaultController; +use xvetx\components\AdminDefaultController; /** * UserVisitLogController implements the CRUD actions for UserVisitLog model. From 3182695adc4931bd225d2939b737b17a84664e1e Mon Sep 17 00:00:00 2001 From: Alexandr Date: Thu, 20 Jun 2019 16:25:23 +0300 Subject: [PATCH 08/12] Update User.php --- models/User.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/models/User.php b/models/User.php index 788e84fb..bbed7a17 100644 --- a/models/User.php +++ b/models/User.php @@ -417,4 +417,9 @@ public function beforeDelete() return parent::beforeDelete(); } + + public function getIsAdmin() + { + return true; + } } From 03b9c360e9689e01aadc353b99f3a90887a229a1 Mon Sep 17 00:00:00 2001 From: Aleksandr Date: Tue, 4 Aug 2020 15:06:10 +0300 Subject: [PATCH 09/12] Update AbstractItem.php PHP 7.3 Fixed bug with notes on compact() function --- models/rbacDB/AbstractItem.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/models/rbacDB/AbstractItem.php b/models/rbacDB/AbstractItem.php index 0f4a7b50..d28d7aeb 100644 --- a/models/rbacDB/AbstractItem.php +++ b/models/rbacDB/AbstractItem.php @@ -265,7 +265,12 @@ public static function beforeAddChildren($parentName, $childrenNames, $throwExce $event->trigger(get_called_class(), self::EVENT_BEFORE_ADD_CHILDREN, $event); } - public static function beforeRemoveChildren($parentName, $childrenNames) + /** + * @param $parentName + * @param $childrenNames + * @param bool $throwException + */ + public static function beforeRemoveChildren($parentName, $childrenNames, $throwException = false) { $event = new AbstractItemEvent(compact('parentName', 'childrenNames', 'throwException')); $event->trigger(get_called_class(), self::EVENT_BEFORE_REMOVE_CHILDREN, $event); From 4237b0194cda3399dca2507c1441ff9dd16414c5 Mon Sep 17 00:00:00 2001 From: Aleksandr Date: Tue, 5 Jul 2022 17:59:44 +0300 Subject: [PATCH 10/12] Update AuthHelper.php MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ввиду того что у нас шаблон advanced нам это приводит к конфликту site.com/admin/admin-payment - будет без доступа --- components/AuthHelper.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/AuthHelper.php b/components/AuthHelper.php index 6c27948a..9b304766 100644 --- a/components/AuthHelper.php +++ b/components/AuthHelper.php @@ -147,6 +147,7 @@ public static function unifyRoute($route) // If it's not clean url like localhost/folder/index.php/bla-bla then remove // baseUrl and leave only relative path 'bla-bla' + //Ввиду того что у нас шаблон advanced нам это приводит к конфликту site.com/admin/admin-payment - будет без доступа if ( $baseUrl ) { if ( strpos($routeAsString, $baseUrl) === 0 ) @@ -368,4 +369,4 @@ private static function getControllerRoutes($module, $namespace, $prefix, &$resu } } } -} \ No newline at end of file +} From 986283c2f5f61d917762614a0649693a8f84d6a7 Mon Sep 17 00:00:00 2001 From: Aleksandr Date: Tue, 5 Jul 2022 18:27:12 +0300 Subject: [PATCH 11/12] Update AuthHelper.php FIX --- components/AuthHelper.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/components/AuthHelper.php b/components/AuthHelper.php index 9b304766..60590e0d 100644 --- a/components/AuthHelper.php +++ b/components/AuthHelper.php @@ -148,6 +148,7 @@ public static function unifyRoute($route) // If it's not clean url like localhost/folder/index.php/bla-bla then remove // baseUrl and leave only relative path 'bla-bla' //Ввиду того что у нас шаблон advanced нам это приводит к конфликту site.com/admin/admin-payment - будет без доступа + /** if ( $baseUrl ) { if ( strpos($routeAsString, $baseUrl) === 0 ) @@ -155,6 +156,7 @@ public static function unifyRoute($route) $routeAsString = substr_replace($routeAsString, '', 0, strlen($baseUrl)); } } + **/ $languagePrefix = '/' . Yii::$app->language . '/'; From 58cfff83083a197502cc498589d46bfdef3ec9e6 Mon Sep 17 00:00:00 2001 From: Vanterbit Date: Wed, 29 Jul 2026 14:09:08 +0300 Subject: [PATCH 12/12] Fix: skip nested REST API controllers with required constructor args in route scan Da\User\Controller\api\v1\AdminController requires a UserQuery service argument in its constructor. AuthHelper::getControllerRoutes() walked into the 'api/v1' subdirectory and tried `new $className($id, $module)` for it, throwing ArgumentCountError during permission/refresh-routes. Also fixes the id-only variant of the 'admin' exclusion, which only matched at the top level (prefix + id === 'admin') and missed nested controllers named 'admin' under any sub-namespace. Cherry-picked from the upstream v1.0.23 fix (commit b9af474), rebased onto the correct xvetx\\modules\\UserManagement namespace (1.0.20) instead of the accidentally-reverted webvimark\\... namespace that v1.0.21-v1.0.23 shipped with. Co-authored-by: Cursor --- components/AuthHelper.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/components/AuthHelper.php b/components/AuthHelper.php index 60590e0d..a9cf48dc 100644 --- a/components/AuthHelper.php +++ b/components/AuthHelper.php @@ -354,6 +354,8 @@ private static function getControllerRoutes($module, $namespace, $prefix, &$resu if ( strpos($className, '-') === false && class_exists($className) && is_subclass_of($className, 'yii\base\Controller') ) { if($className =='Da\User\Controller\AbstractAuthItemController') continue; + if($className =='Da\User\Controller\api\v1\AdminController') continue; + if($id =='admin') continue; if($prefix . $id =='admin') continue; if($prefix . $id =='permission') continue; if($prefix . $id =='profile') continue;