returnee/dcat-employee-auth

Use an employees table as the authentication source for Dcat Admin.

Maintainers

Package info

git.imhaiguiapp.com/library/dcat-employee-auth.git

pkg:composer/returnee/dcat-employee-auth

Transparency log

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

v1.1.0 2026-06-24 08:47 UTC

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 模式登录流程:

  1. 用户在 Dcat 登录页输入手机号和密码。
  2. 扩展调用 /api/v1/employee/auth/login
  3. 根据远程员工 ID 创建或更新本地 admin_users
  4. Sanctum Token 使用 Laravel Crypt 加密后保存。
  5. 使用本地 admin_users.id 建立 Dcat Session。
  6. Dcat 的角色、权限和菜单继续使用本地 RBAC 表。

首次登录新建的用户默认没有角色。可在 Dcat 用户管理中授权,或执行:

php artisan dcat-employee-auth:grant-administrator EMPLOYEE_NO

正常退出和绝对有效期到期时,扩展会调用 /api/v1/employee/auth/logout 撤销当前 Sanctum Token,并清理本地认证记录。

数据库认证模式

未配置 DCAT_EMPLOYEE_AUTH_DRIVER 时,默认使用 database,兼容原有项目。

员工表至少应包含:

  • id
  • employee_no
  • phone
  • password
  • name
  • avatar
  • status
  • remember_token

默认只允许 status = 1 的员工使用手机号登录。字段、数据表和数据库连接可在 config/dcat-employee-auth.phpdatabase 节点中调整。

授予超级管理员角色:

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