feat: 添加 user_update hook 事件并重构用户生命周期 hook

- 新增 user_update 事件,当用户基本信息变更时触发
  - 扩展 dispatchUserHook payload 包含完整用户信息(tel、profession、birthday、address、introduction、departments)
  - 将 user_onboard/user_offboard/user_update hook 触发逻辑集中到 UserObserver
  - 区分 profile_update(用户自己修改)和 admin_update(管理员修改)事件类型
  - 修复 User::reg() 中 Manticore 索引同步遗漏问题
  - 排除机器人账号的 hook 触发
This commit is contained in:
kuaifan
2026-01-08 11:31:16 +00:00
parent 7f9c42d3d8
commit 1ac3a4cc96
4 changed files with 104 additions and 24 deletions

View File

@@ -37,7 +37,6 @@ use App\Models\UserRecentItem;
use App\Models\UserTag;
use App\Models\UserTagRecognition;
use App\Models\UserAppSort;
use App\Module\Apps;
use Illuminate\Support\Facades\DB;
use App\Models\UserEmailVerification;
use App\Module\AgoraIO\AgoraTokenGenerator;
@@ -1104,8 +1103,6 @@ class UsersController extends AbstractController
$upArray = [];
$upLdap = [];
$transferUser = null;
$hookAction = '';
$hookEvent = '';
switch ($type) {
case 'setadmin':
$msg = '设置成功';
@@ -1187,16 +1184,12 @@ class UsersController extends AbstractController
return Base::retError('交接人已离职,请选择另一个交接人');
}
}
$hookAction = 'user_offboard';
$hookEvent = 'offboard';
break;
case 'cleardisable':
$msg = '操作成功';
$upArray['identity'] = array_diff($userInfo->identity, ['disable']);
$upArray['disable_at'] = null;
$hookAction = 'user_onboard';
$hookEvent = 'restore';
break;
case 'delete':
@@ -1315,9 +1308,6 @@ class UsersController extends AbstractController
}
});
}
if ($hookAction) {
Apps::dispatchUserHook($userInfo, $hookAction, $hookEvent);
}
//
return Base::retSuccess($msg, $userInfo);
}