returnee / dcat-employee-auth
Use an employees table as the authentication source for Dcat Admin.
Package info
git.imhaiguiapp.com/library/dcat-employee-auth.git
pkg:composer/returnee/dcat-employee-auth
Requires
- php: >=8.1
- e282486518/dcat-admin: 2.*
- laravel/framework: ^9.0|^10.0|^11.0|^12.0
This package is not auto-updated.
Last update: 2026-07-22 08:56:01 UTC
README
为 Dcat Admin 提供员工认证,支持两种模式:
database:直接使用项目的employees表认证,保持 1.0 版本行为。api:调用统一员工中心登录接口,使用项目本地admin_users和 Dcat RBAC。
环境要求
- PHP 8.1+
- Laravel 9-12
- Dcat Admin 2.x
安装
composer require returnee/dcat-employee-auth
php artisan vendor:publish --tag=dcat-employee-auth-config
php artisan migrate
php artisan optimize:clear
扩展包会创建 dcat_employee_auth_identities 表,用于关联远程员工和本地
admin_users,并加密保存当前 Sanctum Token。
API 认证模式
项目 .env 配置:
DCAT_EMPLOYEE_AUTH_DRIVER=api
DCAT_EMPLOYEE_AUTH_BASE_URL=http://httpd
DCAT_EMPLOYEE_AUTH_HOST=hg_ucenter.local.com
DCAT_EMPLOYEE_AUTH_DEVICE_NAME=zone8-admin
DCAT_EMPLOYEE_AUTH_SESSION_LIFETIME=10020
配置含义:
BASE_URL:实际请求地址。HOST:可选的 HTTP Host 请求头,适用于 Docker 内通过统一 HTTP 服务访问虚拟主机。DEVICE_NAME:创建 Sanctum Token 时使用的设备名。SESSION_LIFETIME:后台登录的绝对有效期,单位为分钟,不会因访问后台而续期。
API 模式登录流程:
- 用户在 Dcat 登录页输入手机号和密码。
- 扩展调用
/api/v1/employee/auth/login。 - 根据远程员工 ID 创建或更新本地
admin_users。 - Sanctum Token 使用 Laravel
Crypt加密后保存。 - 使用本地
admin_users.id建立 Dcat Session。 - Dcat 的角色、权限和菜单继续使用本地 RBAC 表。
首次登录新建的用户默认没有角色。可在 Dcat 用户管理中授权,或执行:
php artisan dcat-employee-auth:grant-administrator EMPLOYEE_NO
正常退出和绝对有效期到期时,扩展会调用
/api/v1/employee/auth/logout 撤销当前 Sanctum Token,并清理本地认证记录。
数据库认证模式
未配置 DCAT_EMPLOYEE_AUTH_DRIVER 时,默认使用 database,兼容原有项目。
员工表至少应包含:
idemployee_nophonepasswordnameavatarstatusremember_token
默认只允许 status = 1 的员工使用手机号登录。字段、数据表和数据库连接可在
config/dcat-employee-auth.php 的 database 节点中调整。
授予超级管理员角色:
php artisan dcat-employee-auth:grant-administrator E001
参数支持员工主键或配置的登录字段。
自定义本地用户模型
API 模式默认使用 config('admin.database.users_model')。如需覆盖:
'api' => [
'user_model' => App\Models\AdminUser::class,
],
数据库模式可继承员工管理员模型:
namespace App\Models;
use Returnee\DcatEmployeeAuth\Models\EmployeeAdministrator;
class AdminEmployee extends EmployeeAdministrator
{
}
然后修改:
'database' => [
'model' => App\Models\AdminEmployee::class,
],
禁用扩展
DCAT_EMPLOYEE_AUTH_ENABLED=false