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