sadovnikpv/webvimark-module-user-management-bs4

此包最新版本(v1.0)没有可用的许可证信息。

改进的RBAC(角色、权限等)与bs4

v1.0 2022-02-02 07:15 UTC

This package is auto-updated.

Last update: 2024-09-29 06:09:03 UTC


README

此仓库未积极维护。如果您想添加一些更改,请将其分支并安全地使用您的分支。

优点

  • 用户管理
  • 具有web界面的RBAC(角色、权限等)
  • 注册、授权、密码恢复等
  • 访问日志
  • 优化(常规用户工作流程中无需DB查询)
  • 如GhostMenu或GhostHtml::a等漂亮的组件,其中元素仅在用户有权访问它们指向的路由时才可见

安装

安装此扩展的首选方法是通过 composer

运行以下命令:

composer require webvimark/module-user-management

"webvimark/module-user-management": "^1"

将其添加到您的 composer.json 文件的 require 部分。

配置

  1. 在您的 config/web.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';
				};
			},
	],
],

有关事件的信息,请参阅

AuthHelper::layoutHandler() 中的布局处理程序示例

要查看完整的选项列表,请查看 UserManagementModule 文件

  1. 在您的 config/console.php 中(此信息对于迁移和使用控制台是必需的)
'modules'=>[
	'user-management' => [
		'class' => 'webvimark\modules\UserManagement\UserManagementModule',
	        'controllerNamespace'=>'vendor\webvimark\modules\UserManagement\controllers', // To prevent yii help from crashing
	],
],
  1. 运行迁移
./yii migrate --migrationPath=vendor/webvimark/module-user-management/migrations/
  1. 在您的基控制器中
public function behaviors()
{
	return [
		'ghost-access'=> [
			'class' => 'webvimark\modules\UserManagement\components\GhostAccessControl',
		],
	];
}

您可以去哪里

<?php
use webvimark\modules\UserManagement\components\GhostMenu;
use webvimark\modules\UserManagement\UserManagementModule;

echo GhostMenu::widget([
	'encodeLabels'=>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']],
			],
		],
	],
]);
?>

第一步

在上面的菜单中,您最初将只看到2个元素:“登录”和“注销”,因为您没有权限访问其他URL,并且我们使用 GhostMenu::widget() 来渲染菜单。它只渲染活动用户可以访问的元素。

同样,GhostNav::widget()GhostHtml:a() 也有相同的功能。

  1. 以 superadmin/superadmin 身份登录

  2. 转到“权限”并玩玩

  3. 转到“角色”并玩玩

  4. 转到“用户”并玩玩

  5. 放松

用法

您控制器可能有两个属性,可以使整个控制器或所选操作对所有人可用

public $freeAccess = true;

public $freeAccessActions = ['first-action', 'another-action'];

以下是一些有用的助手。有关详细说明,请查看相应的函数。

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::create($name, $description = null, $groupCode = null, $ruleName = null, $data = null)
Role::addChildren($parentName, $childrenNames, $throwException = false)
Role::removeChildren($parentName, $childrenNames)

事件

可以通过以下配置文件处理事件

'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
		},
	],
],

支持的事件列表可以在 UserAuthEvent 类中找到

常见问题解答

问题:您有API文档吗?

答案:请查看此 http://opensource.id5.com.br/webvimark/doc/index.html(归功于 lukBarros

问题:我想让用户通过他们的电子邮件注册和登录!嗯嗯... 他们还应该确认它!

答案:请查看配置属性 $useEmailAsLogin$emailConfirmationRequired

问题:我想为用户提供具有头像、生日等信息的个人资料。我该怎么做?

答案:个人资料是特定于项目的,因此您必须自行实现它们(但您可以在这里找到示例 - https://github.com/webvimark/user-management/wiki/Profile-and-custom-registration)。以下是无需修改此模块即可实现此目的的方法

  1. 为个人资料创建表和模型,该模型具有 user_id(与“user”表连接)

  2. 查看 AuthController::actionRegistration() 了解其工作原理(您可以跳过此部分

  3. 定义您的注册布局。请查看 AuthHelper::layoutHandler() 中的示例。现在使用主题来更改 registration.php 文件

  4. 定义您自己的 UserManagementModule::$registrationFormClass。在这个类中,您可以执行任何操作,例如验证自定义表单和保存资料

  5. 创建您的控制器,用户可以在其中查看资料