sokolby/skl-yii2-admin

Yii 2 用户认证和管理仪表板模块

安装次数: 54

依赖项: 0

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 0

开放问题: 0

类型:yii2-extension

0.9.95 2017-07-20 11:28 UTC

README

Yii 2 Admin - 用户认证模块和管理仪表板

新版本发布于 2017年5月24日 v.0.9.6

基于 https://github.com/amnah/yii2-user

功能

  • 快速设置 - 即装即用,可快速了解其功能
  • 易于扩展
  • 使用邮箱和/或用户名注册
  • 使用邮箱和/或用户名登录
  • 通过邮箱登录/注册(输入邮箱 > 收件箱获取链接 > 点击链接登录/注册)
  • 邮箱确认(+重发功能)
  • 社交认证(facebook,twitter,google,linkedin,reddit,vkontakte)
  • 账户页面
    • 更新邮箱、用户名和密码
    • 需要当前密码
  • 个人资料页面
    • 列出用户自定义字段,例如 full_name
  • 密码恢复
  • 通过 GridView 进行管理员 CRUD 操作

安装

  • 使用您喜欢的安装方法安装 Yii 2
  • 使用 composer 安装软件包 "amnah/yii2-user": "^5.0"
  • 更新配置文件 config/web.phpconfig/db.php
// app/config/web.php
return [
    'components' => [
        // NOTE: in the yii2-advanced-app, the user component should be updated in
        // 'frontend/config/main.php' and/or 'backend/config/main.php' (OR you can add it
        // to 'common/config' if you remove it from frontend/backend)
        'user' => [
            'class' => 'amnah\yii2\user\components\User',
        ],
        'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            'useFileTransport' => true,
            'messageConfig' => [
                'from' => ['admin@website.com' => 'Admin'], // this is needed for sending emails
                'charset' => 'UTF-8',
            ]
        ],
    ],
    'modules' => [
        'user' => [
            'class' => 'amnah\yii2\user\Module',
            // set custom module properties here ...
        ],
    ],
];
// app/config/db.php
return [
    'class' => 'yii\db\Connection',
    // set up db info
];
  • 运行迁移文件
    • php yii migrate --migrationPath=@vendor/amnah/yii2-user/migrations
  • 在浏览器中访问您的应用程序
    • https:///pathtoapp/web/user
  • 使用 neo/neo 作为管理员登录(请更改它!)
  • 根据需要设置 模块属性
  • 可选 - 更新主布局中的导航链接 app/views/layouts/main.php
// app/views/layouts/main.php
<?php
'items' => [
    ['label' => 'Home', 'url' => ['/site/index']],
    ['label' => 'About', 'url' => ['/site/about']],
    ['label' => 'Contact', 'url' => ['/site/contact']],
    ['label' => 'User', 'url' => ['/user']],
    Yii::$app->user->isGuest ?
        ['label' => 'Login', 'url' => ['/user/login']] : // or ['/user/login-email']
        ['label' => 'Logout (' . Yii::$app->user->displayName . ')',
            'url' => ['/user/logout'],
            'linkOptions' => ['data-method' => 'post']],
],

开发注意事项

如何检查用户权限?

此软件包包含一个自定义权限系统。每个用户都有一个角色,该角色具有以数据库列形式存在的权限。其格式应为:can_{权限名称}

例如,默认情况下,role 表有一个名为 can_admin 的列。要检查用户是否可以执行管理员操作

if (!Yii::$app->user->can("admin")) {
    throw new HttpException(403, 'You are not allowed to perform this action.');
}
// --- or ----
$user = User::findOne(1);
if ($user->can("admin")) {
    // do something
};

根据需要添加更多数据库列以实现权限。如果您需要更强大的功能,请查看设置 [RBAC](https://github.com/yiisoft/yii2/blob/master/docs/guide/security-authorization.md#role-based-access-control-rbac)。

注意:如果您设置了 RBAC 的 authManager 组件,则 Yii::$app->user->can() 将使用该组件而不是此模块的 role 表。

如何将验证码添加到表单中?

请参阅 dektrium 的这个优秀的 3 步指南。(请注意,验证规则的场景将取决于您的项目需求。)

如何添加多语言支持?

// app/config/web.php
return [
    'components' => [
        'i18n' => [
            'translations' => [
                'user' => [
                    'class' => 'yii\i18n\PhpMessageSource',
                    'basePath' => '@app/messages', // example: @app/messages/fr/user.php
                ]
            ],
        ],
    ],
];

如何扩展此软件包?

您可以直接扩展类。根据您需要的类,设置适当的配置属性

// app/config/web.php
'components' => [
    'user' => [
        'class' => 'app\components\MyUser',
        'identityClass' => 'app\models\MyUser',
    ],
],
'modules' => [
    'user' => [
        'class' => 'app\modules\MyModule',
        'controllerMap' => [
            'default' => 'app\controllers\MyDefaultController',
        ],
        'modelClasses'  => [
            'User' => 'app\models\MyUser', // note: don't forget component user::identityClass above
            'Profile' => 'app\models\MyProfile',
        ],
        'emailViewPath' => '@app/mail/user', // example: @app/mail/user/confirmEmail.php
    ],
],

对于视图文件,您可以使用 theme 组件。

// app/config/web.php
'components' => [
    'view' => [
        'theme' => [
            'pathMap' => [
                '@vendor/amnah/yii2-user/views' => '@app/views/user', // example: @app/views/user/default/login.php
            ],
        ],
    ],
],

我需要更多的控制。我能否直接扩展整个系统?

您始终可以创建包的分支并按需修改。

或者,如果您愿意,可以直接通过复制文件将包集成到您的应用程序中。这会使更新更加困难,但它也保证了在运行 composer update 后您的应用程序不会损坏。

为此,您可以使用辅助命令 CopyController

  • 将模块添加到您的 config/console.php 中以访问命令(注意:这是控制台配置
// app/config/console.php
'modules' => [
    'user' => [
        'class' => 'amnah\yii2\user\Module',
    ],
],
php yii user/copy --from=@vendor/amnah/yii2-user --to=@app/modules/user --namespace=app\\modules\\user
  • 更新配置以指向您的新包
// app/config/web.php + app/config/console.php
'modules' => [
    'user' => [
        'class' => 'app\modules\user\Module',
    ],
],

或者,您可以手动执行此操作。只需将文件复制到您想要的位置,并更改文件中的命名空间。将 amnah\yii2\user 替换为 app\modules\user

待办事项