Как правильно можно отрефакторить этот код в Laravel
Всем привет, подскажите, как можно сделать рефакторинг кода, чтобы его можно было переиспользовать? На даный момент это код для авторизации сотрудников (модель Staff), но я хочу его применить и для админов (модель Admin) и обычных клиентов (модель User)
public function login(LoginRequest $request)
{
$data = $request->validated();
$code = PhoneCode::where('phone', $data['phone'])->where('code', $data['code'])->where('is_confirmed', false)->first();
if (!$code) return $this->notFoundApiResponse([], Lang::get('verification.phone_code_not_found'));
$user = Staff::where('phone', $data['phone'])->first();
if (!$user) return $this->notFoundApiResponse([], Lang::get('staff.user_not_found'));
$userToken = $user->createToken('auth_token', ['admin'])->plainTextToken;
PhoneVerificationJob::dispatch($code->id)->delay(now()->addMinutes(2))->onQueue('verify');
return response()->json([
'token' => $userToken
]);
}
прочитал, что можно сделать через сервисный слой, но не могу понять, как это все правильно разнести(