netcore / module-user
该包最新版本(v2.0.2)没有可用的许可证信息。
v2.0.2
2018-04-24 09:25 UTC
Requires
- php: >=7.0
- maatwebsite/excel: ~2.1.0
- netcore/module-setting: ^2.0
- yajra/laravel-datatables-oracle: ~8.0
README
该包的主要思想是在CMS侧简化用户管理。同时,还提供简单的社会化登录集成,以及额外的特性和助手。
安装前
该包是Netcore CMS生态系统的一部分,仅在安装以下包的项目中有效
https://github.com/netcore/netcore
https://github.com/netcore/module-admin
https://github.com/netcore/module-setting
https://github.com/nWidart/laravel-modules
安装
composer require netcore/module-user
发布配置、资源、迁移。迁移和种子
php artisan module:publish-config User
php artisan module:publish User
php artisan module:publish-migration User
php artisan migrate
php artisan module:seed User
您需要将 UserPermissions
特性添加到您的用户模型中,以便能够登录acp。
您应该可以正常使用了。
特性
- 您将在acp中获得用户管理部分,其中您可以创建、删除、编辑、显示用户。您还可以配置用户部分允许执行的操作。例如,您可以在acp中禁用删除用户。为此,您需要导航到
config/netcore/module-user.php
配置文件,并将相应变量从true更改为false
...
'allow' => [
'delete' => false,
'create' => true,
'view' => false,
'export' => false,
]
...
- 此外,如果您想使用社会化登录,可以在
config/netcore/module-user.php
中配置提供者,也可以开启和关闭社会化登录支持。如果您使用社会化登录,则需要将UserSocialite
特性添加到您的User模型中,并将ControllerSocialite
添加到您的AuthController中。
它将种子OAuth设置,您可以在页面的设置部分中进行配置。
别忘了将 Socialite 包添加到您的composer.json文件中
要调用社会化登录请求,您可以使用此URL /login/{provider}
,其中{provider}将被facebook或google替换,取决于您选择了哪个。
您需要向您的AuthController中添加 providerCallback
方法,在该方法中,您将能够管理从提供者收到的数据。
public function providerCallback(string $provider)
{
$this->providerGate($provider);
try {
$providerUser = Socialite::driver($provider)->user(); // Provider data
} catch (Exception $exception) {
return $this->handleBadProviderResponse($exception, $provider);
}
}
导出用户
- 首先,您需要配置导出过滤器,向相关模型添加导出数据格式化器(如果需要关联选项)
- 在module-user.php配置文件中
'export_options' => [ // Users only [ 'title' => 'Users only', // Filters that can be appied to exportable data 'filters' => [ [ 'name' => 'Register date from:', // Filter name 'key' => 'created_at_from', // Filter key (for html input - must be unique) 'type' => 'date', // Field type 'field' => 'created_at', // Column name in database 'operator' => '>=', // SQL select operator 'required' => false, // Is required? ], [ 'name' => 'Register date to:', 'key' => 'created_at_to', 'type' => 'date', 'field' => 'created_at', 'operator' => '<=', 'required' => false, ], [ 'name' => 'Pick:', 'key' => 'is_active', 'type' => 'select', 'field' => 'is_active', 'operator' => '=', 'required' => false, 'select_options' => [ null => 'Both', 0 => 'Inactive users', 1 => 'Active users', ], ], ], ], // User with some relation/-s [ 'title' => 'User with classifieds', 'find_by' => 'id:fullName', // format - column:userRepresentableData 'withRelation' => [ 'name' => 'classifieds', // relation name // Relation filters 'filters' => [ [ 'name' => 'Of type:', 'key' => 'of_type', 'type' => 'select', 'field' => 'type', 'operator' => '=', 'required' => false, 'select_options' => [ null => 'All', 'buy' => 'Buy', 'sell' => 'Sell', 'rent' => 'Rent', ], ], [ 'name' => 'From date:', 'key' => 'created_at_from', 'type' => 'date', 'field' => 'created_at', 'operator' => '>=', 'required' => false, ], [ 'name' => 'To date:', 'key' => 'created_at_to', 'type' => 'date', 'field' => 'created_at', 'operator' => '<=', 'required' => false, ], ], ], ], ],
然后,您需要在您的相关模型中实现以下方法
/** * Export config * * @return array */ public function getExportableFieldsMap(): array { return [ // Column name => Value 'City' => $this->city->name ?? null, 'Language' => $this->language_iso_code, 'Type' => $this->type, 'Name' => $this->name, 'Price' => $this->price, ... ]; }
数据表配置
-
默认情况下,CRUD模块将扫描的列将显示。
-
您可以配置必要的列,修改标题以及修改值。
-
在某个地方创建展示器,例如在app/Presenters/AdminUsersDatatablePresenter.php中
-
示例文件
<?php namespace App\Presenters; class AdminUsersDatatablePresenter { /** * Columns to show. * * @var array */ public $showColumns = [ 'created_at' => 'Registerted at', 'is_active' => 'Is active?', 'name' => 'Name', 'email' => 'E-mail address', 'phone' => 'Phone', 'language_iso_code' => [ 'title' => 'Country', // column title 'name' => 'language.title', // for query 'data' => 'language.title', // for display data ], ]; /** ---------- Modifiers ---------- */ /** * is_active column modifier. * * @param $user * @return string */ public function isActive($user): string { return $user->is_active ? 'Yes' : 'No'; } /** * created_at column modifier. * * @param $user * @return string */ public function createdAt($user): string { return $user->created_at->format('d.m.Y'); } }