feat: add admin user plugin hooks
Added hooks: - admin.user.fetch.query - admin.user.transform - admin.user.detail - admin.user.update.rules - admin.user.update.messages - admin.user.update.params - admin.user.update.before - admin.user.update.after - admin.user.secret.reset - admin.user.destroy.before - admin.user.destroy.after
This commit is contained in:
parent
4e9dfd6018
commit
8f66a9af94
@ -11,6 +11,7 @@ use App\Models\Plan;
|
||||
use App\Models\User;
|
||||
use App\Services\AuthService;
|
||||
use App\Services\NodeSyncService;
|
||||
use App\Services\Plugin\HookManager;
|
||||
use App\Services\UserService;
|
||||
use App\Traits\QueryOperators;
|
||||
use App\Utils\Helper;
|
||||
@ -33,7 +34,16 @@ class UserController extends Controller
|
||||
return $this->fail([400202, '用户不存在']);
|
||||
$user->token = Helper::guid();
|
||||
$user->uuid = Helper::guid(true);
|
||||
return $this->success($user->save());
|
||||
$result = $user->save();
|
||||
|
||||
if ($result) {
|
||||
HookManager::call('admin.user.secret.reset', [
|
||||
'user' => $user,
|
||||
'request' => $request,
|
||||
]);
|
||||
}
|
||||
|
||||
return $this->success($result);
|
||||
}
|
||||
|
||||
// Apply filters and sorts to the query builder.
|
||||
@ -178,6 +188,8 @@ class UserController extends Controller
|
||||
->select((new User())->getTable() . '.*')
|
||||
->selectRaw('(u + d) as total_used');
|
||||
|
||||
$userModel = HookManager::filter('admin.user.fetch.query', $userModel, $request);
|
||||
|
||||
$this->applyFiltersAndSorts($request, $userModel);
|
||||
|
||||
$users = $userModel->orderBy('id', 'desc')
|
||||
@ -193,11 +205,12 @@ class UserController extends Controller
|
||||
// Transform user fields for API response.
|
||||
public static function transformUserData(User $user): array
|
||||
{
|
||||
$model = $user;
|
||||
$user = $user->toArray();
|
||||
$user['balance'] = $user['balance'] / 100;
|
||||
$user['commission_balance'] = $user['commission_balance'] / 100;
|
||||
$user['subscribe_url'] = Helper::getSubscribeUrl($user['token']);
|
||||
return $user;
|
||||
return HookManager::filter('admin.user.transform', $user, $model);
|
||||
}
|
||||
|
||||
public function getUserInfoById(Request $request)
|
||||
@ -208,6 +221,7 @@ class UserController extends Controller
|
||||
'id.required' => '用户ID不能为空'
|
||||
]);
|
||||
$user = User::find($request->input('id'))->load('invite_user');
|
||||
$user = HookManager::filter('admin.user.detail', $user, $request);
|
||||
return $this->success($user);
|
||||
}
|
||||
|
||||
@ -257,12 +271,27 @@ class UserController extends Controller
|
||||
$params['commission_balance'] = $params['commission_balance'] * 100;
|
||||
}
|
||||
|
||||
$params = HookManager::filter('admin.user.update.params', $params, $request, $user);
|
||||
|
||||
HookManager::call('admin.user.update.before', [
|
||||
'user' => $user,
|
||||
'params' => $params,
|
||||
'request' => $request,
|
||||
]);
|
||||
|
||||
try {
|
||||
$user->update($params);
|
||||
} catch (\Exception $e) {
|
||||
Log::error($e);
|
||||
return $this->fail([500, '保存失败']);
|
||||
}
|
||||
|
||||
HookManager::call('admin.user.update.after', [
|
||||
'user' => $user->refresh(),
|
||||
'params' => $params,
|
||||
'request' => $request,
|
||||
]);
|
||||
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
@ -664,6 +693,11 @@ class UserController extends Controller
|
||||
'id.exists' => '用户不存在'
|
||||
]);
|
||||
$user = User::find($request->input('id'));
|
||||
HookManager::call('admin.user.destroy.before', [
|
||||
'user' => $user,
|
||||
'request' => $request,
|
||||
]);
|
||||
|
||||
try {
|
||||
DB::beginTransaction();
|
||||
$user->orders()->delete();
|
||||
@ -672,6 +706,12 @@ class UserController extends Controller
|
||||
$user->tickets()->delete();
|
||||
$user->delete();
|
||||
DB::commit();
|
||||
|
||||
HookManager::call('admin.user.destroy.after', [
|
||||
'user' => $user,
|
||||
'request' => $request,
|
||||
]);
|
||||
|
||||
return $this->success(true);
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Http\Requests\Admin;
|
||||
|
||||
use App\Services\Plugin\HookManager;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class UserUpdate extends FormRequest
|
||||
@ -13,7 +14,7 @@ class UserUpdate extends FormRequest
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
$rules = [
|
||||
'id' => 'required|integer',
|
||||
'email' => 'email:strict',
|
||||
'password' => 'nullable|min:8',
|
||||
@ -34,11 +35,13 @@ class UserUpdate extends FormRequest
|
||||
'speed_limit' => 'nullable|integer',
|
||||
'device_limit' => 'nullable|integer'
|
||||
];
|
||||
|
||||
return HookManager::filter('admin.user.update.rules', $rules, $this);
|
||||
}
|
||||
|
||||
public function messages()
|
||||
{
|
||||
return [
|
||||
$messages = [
|
||||
'email.required' => '邮箱不能为空',
|
||||
'email.email' => '邮箱格式不正确',
|
||||
'transfer_enable.numeric' => '流量格式不正确',
|
||||
@ -65,5 +68,7 @@ class UserUpdate extends FormRequest
|
||||
'speed_limit.integer' => '限速格式不正确',
|
||||
'device_limit.integer' => '设备数量格式不正确'
|
||||
];
|
||||
|
||||
return HookManager::filter('admin.user.update.messages', $messages, $this);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user