Как правильно можно отрефакторить этот код в 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
        ]);
    }

прочитал, что можно сделать через сервисный слой, но не могу понять, как это все правильно разнести(


Ответы (0 шт):