From 7feae1fd4534815d0dca0faece1c4f509936c5ab Mon Sep 17 00:00:00 2001 From: David Bomba Date: Wed, 12 Aug 2020 08:17:32 +1000 Subject: [PATCH 1/2] Add is_deleted to client_gateway_tokens table --- app/Http/Controllers/Auth/LoginController.php | 4 +- app/PaymentDrivers/BaseDriver.php | 2 + app/Services/Payment/ApplyNumber.php | 46 +++++++++++++++++++ app/Services/Payment/PaymentService.php | 9 ++++ .../ClientGatewayTokenTransformer.php | 1 + app/Transformers/ClientTransformer.php | 1 + ...ted_flag_to_client_gateway_token_table.php | 30 ++++++++++++ 7 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 app/Services/Payment/ApplyNumber.php create mode 100644 database/migrations/2020_08_11_221627_add_is_deleted_flag_to_client_gateway_token_table.php diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index 9cf97b9a6785..db45b303978e 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -245,8 +245,8 @@ class LoginController extends BaseController $company_token = CompanyToken::whereRaw("BINARY `token`= ?", [$request->header('X-API-TOKEN')])->first(); $cu = CompanyUser::query() - ->where('user_id', $company_token->user_id) - ->where('company_id', $company_token->company_id); + ->where('user_id', $company_token->user_id); + //->where('company_id', $company_token->company_id); //$ct = CompanyUser::whereUserId(auth()->user()->id); return $this->refreshResponse($cu); diff --git a/app/PaymentDrivers/BaseDriver.php b/app/PaymentDrivers/BaseDriver.php index 5f80c8385e8f..3663280ea5e9 100644 --- a/app/PaymentDrivers/BaseDriver.php +++ b/app/PaymentDrivers/BaseDriver.php @@ -117,6 +117,8 @@ class BaseDriver extends AbstractPaymentDriver $payment->invoices()->sync($invoices); $payment->save(); + $payment->service()->applyNumber()->save(); + return $payment; } diff --git a/app/Services/Payment/ApplyNumber.php b/app/Services/Payment/ApplyNumber.php new file mode 100644 index 000000000000..ac33ef3d455d --- /dev/null +++ b/app/Services/Payment/ApplyNumber.php @@ -0,0 +1,46 @@ +client = $payment->client; + + $this->payment = $payment; + } + + public function run() + { + if ($this->payment->number != '') { + return $this->payment; + } + + $this->payment->number = $this->getNextPaymentNumber($this->client); + + return $this->payment; + } +} diff --git a/app/Services/Payment/PaymentService.php b/app/Services/Payment/PaymentService.php index bd7337c8033d..802e68bab59e 100644 --- a/app/Services/Payment/PaymentService.php +++ b/app/Services/Payment/PaymentService.php @@ -14,6 +14,7 @@ namespace App\Services\Payment; use App\Factory\PaymentFactory; use App\Models\Invoice; use App\Models\Payment; +use App\Services\Payment\ApplyNumber; use App\Services\Payment\DeletePayment; use App\Services\Payment\RefundPayment; use App\Services\Payment\UpdateInvoicePayment; @@ -87,4 +88,12 @@ class PaymentService { return ((new UpdateInvoicePayment($this->payment)))->run(); } + + public function applyNumber() + { + $this->payment = (new ApplyNumber($this->payment))->run(); + + return $this; + } + } diff --git a/app/Transformers/ClientGatewayTokenTransformer.php b/app/Transformers/ClientGatewayTokenTransformer.php index 3548b735a503..116e31c4ffed 100644 --- a/app/Transformers/ClientGatewayTokenTransformer.php +++ b/app/Transformers/ClientGatewayTokenTransformer.php @@ -39,6 +39,7 @@ class ClientGatewayTokenTransformer extends EntityTransformer 'created_at' => (int)$cgt->created_at, 'updated_at' => (int)$cgt->updated_at, 'archived_at' => (int)$cgt->deleted_at, + 'is_deleted' => (bool) $cgt->is_deleted, ]; } } diff --git a/app/Transformers/ClientTransformer.php b/app/Transformers/ClientTransformer.php index 23ce636ff7d5..0f06ab572f8b 100644 --- a/app/Transformers/ClientTransformer.php +++ b/app/Transformers/ClientTransformer.php @@ -33,6 +33,7 @@ class ClientTransformer extends EntityTransformer protected $defaultIncludes = [ 'contacts', 'documents', + 'gateway_tokens', ]; /** diff --git a/database/migrations/2020_08_11_221627_add_is_deleted_flag_to_client_gateway_token_table.php b/database/migrations/2020_08_11_221627_add_is_deleted_flag_to_client_gateway_token_table.php new file mode 100644 index 000000000000..07e27953a6a1 --- /dev/null +++ b/database/migrations/2020_08_11_221627_add_is_deleted_flag_to_client_gateway_token_table.php @@ -0,0 +1,30 @@ +boolean('is_deleted')->default(0); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + + } +} From 3514491300996f246cfd72529137e52bbdf14dd9 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Wed, 12 Aug 2020 08:59:28 +1000 Subject: [PATCH 2/2] Changing error structure, regression fixes for shop/client route --- app/Exceptions/Handler.php | 2 -- app/Http/Controllers/LicenseController.php | 10 +++++----- app/Http/Controllers/Shop/ClientController.php | 4 ++-- app/Http/Controllers/Shop/InvoiceController.php | 4 ++-- app/Http/Controllers/Shop/ProductController.php | 4 ++-- app/Http/Controllers/Shop/ProfileController.php | 2 +- app/Http/Middleware/ApiSecretCheck.php | 2 +- app/Http/Middleware/ContactSetDb.php | 2 +- app/Http/Middleware/ContactTokenAuth.php | 6 +++--- app/Http/Middleware/PasswordProtection.php | 4 ++-- app/Http/Middleware/SetDb.php | 2 +- app/Http/Middleware/SetDbByCompanyKey.php | 2 +- app/Http/Middleware/SetDomainNameDb.php | 2 +- app/Http/Middleware/SetEmailDb.php | 2 +- app/Http/Middleware/SetInviteDb.php | 2 +- app/Http/Middleware/TokenAuth.php | 6 +++--- app/Repositories/ActivityRepository.php | 11 ++++------- 17 files changed, 31 insertions(+), 36 deletions(-) diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 8f5e8c953d22..751f0c5a35cc 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -134,8 +134,6 @@ class Handler extends ExceptionHandler return parent::render($request, $exception); } - - protected function unauthenticated($request, AuthenticationException $exception) { if ($request->expectsJson()) { diff --git a/app/Http/Controllers/LicenseController.php b/app/Http/Controllers/LicenseController.php index 090bdbd7edd3..3aee65e23e79 100644 --- a/app/Http/Controllers/LicenseController.php +++ b/app/Http/Controllers/LicenseController.php @@ -93,7 +93,7 @@ class LicenseController extends BaseController if ($data == Account::RESULT_FAILURE) { $error = [ 'message' => trans('texts.invalid_white_label_license'), - 'errors' => [] + 'errors' => new \stdClass ]; return response()->json($error, 400); @@ -103,7 +103,7 @@ class LicenseController extends BaseController if ($date < date_create()) { $error = [ 'message' => trans('texts.invalid_white_label_license'), - 'errors' => [] + 'errors' => new \stdClass ]; return response()->json($error, 400); @@ -118,7 +118,7 @@ class LicenseController extends BaseController $error = [ 'message' => trans('texts.bought_white_label'), - 'errors' => [] + 'errors' => new \stdClass ]; return response()->json($error, 200); @@ -126,7 +126,7 @@ class LicenseController extends BaseController } else { $error = [ 'message' => trans('texts.white_label_license_error'), - 'errors' => [] + 'errors' => new \stdClass ]; return response()->json($error, 400); @@ -135,7 +135,7 @@ class LicenseController extends BaseController $error = [ 'message' => "Invalid license, or invalid environment ".config('ninja.environment'), - 'errors' => [] + 'errors' => new \stdClass ]; return response()->json($error, 400); diff --git a/app/Http/Controllers/Shop/ClientController.php b/app/Http/Controllers/Shop/ClientController.php index 755615a9e5cb..d7342384b71e 100644 --- a/app/Http/Controllers/Shop/ClientController.php +++ b/app/Http/Controllers/Shop/ClientController.php @@ -57,7 +57,7 @@ class ClientController extends BaseController $company = Company::where('company_key', $request->header('X-API-COMPANY-KEY'))->first(); if(!$company->enable_shop_api) - return response()->json(['message' => 'Shop is disabled', 'errors' => []],403); + return response()->json(['message' => 'Shop is disabled', 'errors' => new \stdClass],403); $contact = ClientContact::with('client') ->where('company_id', $company->id) @@ -72,7 +72,7 @@ class ClientController extends BaseController $company = Company::where('company_key', $request->header('X-API-COMPANY-KEY'))->first(); if(!$company->enable_shop_api) - return response()->json(['message' => 'Shop is disabled', 'errors' => []],403); + return response()->json(['message' => 'Shop is disabled', 'errors' => new \stdClass],403); app('queue')->createPayloadUsing(function () use ($company) { return ['db' => $company->db]; diff --git a/app/Http/Controllers/Shop/InvoiceController.php b/app/Http/Controllers/Shop/InvoiceController.php index aabd624549fe..af90ef67a1e5 100644 --- a/app/Http/Controllers/Shop/InvoiceController.php +++ b/app/Http/Controllers/Shop/InvoiceController.php @@ -57,7 +57,7 @@ class InvoiceController extends BaseController $company = Company::where('company_key', $request->header('X-API-COMPANY-KEY'))->first(); if(!$company->enable_shop_api) - return response()->json(['message' => 'Shop is disabled', 'errors' => []],403); + return response()->json(['message' => 'Shop is disabled', 'errors' => new \stdClass],403); $invitation = InvoiceInvitation::with(['invoice']) ->where('company_id', $company->id) @@ -74,7 +74,7 @@ class InvoiceController extends BaseController $company = Company::where('company_key', $request->header('X-API-COMPANY-KEY'))->first(); if(!$company->enable_shop_api) - return response()->json(['message' => 'Shop is disabled', 'errors' => []],403); + return response()->json(['message' => 'Shop is disabled', 'errors' => new \stdClass],403); app('queue')->createPayloadUsing(function () use ($company) { return ['db' => $company->db]; diff --git a/app/Http/Controllers/Shop/ProductController.php b/app/Http/Controllers/Shop/ProductController.php index 9489976d6f99..2dcb7afbc770 100644 --- a/app/Http/Controllers/Shop/ProductController.php +++ b/app/Http/Controllers/Shop/ProductController.php @@ -37,7 +37,7 @@ class ProductController extends BaseController $company = Company::where('company_key', $request->header('X-API-COMPANY-KEY'))->first(); if(!$company->enable_shop_api) - return response()->json(['message' => 'Shop is disabled', 'errors' => []],403); + return response()->json(['message' => 'Shop is disabled', 'errors' => new \stdClass],403); $products = Product::where('company_id', $company->id); @@ -49,7 +49,7 @@ class ProductController extends BaseController $company = Company::where('company_key', $request->header('X-API-COMPANY-KEY'))->first(); if(!$company->enable_shop_api) - return response()->json(['message' => 'Shop is disabled', 'errors' => []],403); + return response()->json(['message' => 'Shop is disabled', 'errors' => new \stdClass],403); $product = Product::where('company_id', $company->id) ->where('product_key', $product_key) diff --git a/app/Http/Controllers/Shop/ProfileController.php b/app/Http/Controllers/Shop/ProfileController.php index 43884032a82b..6d16d6b7bca3 100644 --- a/app/Http/Controllers/Shop/ProfileController.php +++ b/app/Http/Controllers/Shop/ProfileController.php @@ -34,7 +34,7 @@ class ProfileController extends BaseController $company = Company::where('company_key', $request->header('X-API-COMPANY-KEY'))->first(); if(!$company->enable_shop_api) - return response()->json(['message' => 'Shop is disabled', 'errors' => []],403); + return response()->json(['message' => 'Shop is disabled', 'errors' => new \stdClass],403); return $this->itemResponse($company); } diff --git a/app/Http/Middleware/ApiSecretCheck.php b/app/Http/Middleware/ApiSecretCheck.php index f40f237d5aac..a2e377fff1e7 100644 --- a/app/Http/Middleware/ApiSecretCheck.php +++ b/app/Http/Middleware/ApiSecretCheck.php @@ -30,7 +30,7 @@ class ApiSecretCheck } else { $error = [ 'message' => 'Invalid secret', - 'errors' => [] + 'errors' => new \stdClass ]; return response() ->json($error, 403) diff --git a/app/Http/Middleware/ContactSetDb.php b/app/Http/Middleware/ContactSetDb.php index d4fc3f7fa40e..43e44728389c 100644 --- a/app/Http/Middleware/ContactSetDb.php +++ b/app/Http/Middleware/ContactSetDb.php @@ -29,7 +29,7 @@ class ContactSetDb { $error = [ 'message' => 'Invalid Token', - 'errors' => [] + 'errors' => new \stdClass ]; if ($request->header('X-API-TOKEN') && config('ninja.db.multi_db_enabled')) { diff --git a/app/Http/Middleware/ContactTokenAuth.php b/app/Http/Middleware/ContactTokenAuth.php index 19db6dd62623..e058a61678af 100644 --- a/app/Http/Middleware/ContactTokenAuth.php +++ b/app/Http/Middleware/ContactTokenAuth.php @@ -32,7 +32,7 @@ class ContactTokenAuth if ($request->header('X-API-TOKEN') && ($client_contact = ClientContact::with(['company'])->whereRaw("BINARY `token`= ?", [$request->header('X-API-TOKEN')])->first())) { $error = [ 'message' => 'Authentication disabled for user.', - 'errors' => [] + 'errors' => new \stdClass ]; //client_contact who once existed, but has been soft deleted @@ -43,7 +43,7 @@ class ContactTokenAuth $error = [ 'message' => 'Access is locked.', - 'errors' => [] + 'errors' => new \stdClass ]; //client_contact who has been disabled @@ -58,7 +58,7 @@ class ContactTokenAuth } else { $error = [ 'message' => 'Invalid token', - 'errors' => [] + 'errors' => new \stdClass ]; return response()->json($error, 403); diff --git a/app/Http/Middleware/PasswordProtection.php b/app/Http/Middleware/PasswordProtection.php index eb43ff9b7431..6a95a46b942d 100644 --- a/app/Http/Middleware/PasswordProtection.php +++ b/app/Http/Middleware/PasswordProtection.php @@ -32,7 +32,7 @@ class PasswordProtection { $error = [ 'message' => 'Invalid Password', - 'errors' => [] + 'errors' => new \stdClass ]; if ($request->header('X-API-PASSWORD')) { @@ -47,7 +47,7 @@ class PasswordProtection } else { $error = [ 'message' => 'Access denied', - 'errors' => [] + 'errors' => new \stdClass ]; return response()->json($error, 412); } diff --git a/app/Http/Middleware/SetDb.php b/app/Http/Middleware/SetDb.php index 4dccaf4ac2ab..ba9abd6dc280 100644 --- a/app/Http/Middleware/SetDb.php +++ b/app/Http/Middleware/SetDb.php @@ -29,7 +29,7 @@ class SetDb { $error = [ 'message' => 'Invalid Token', - 'errors' => [] + 'errors' => new \stdClass ]; diff --git a/app/Http/Middleware/SetDbByCompanyKey.php b/app/Http/Middleware/SetDbByCompanyKey.php index e2abfe9bc4e3..6832e9150699 100644 --- a/app/Http/Middleware/SetDbByCompanyKey.php +++ b/app/Http/Middleware/SetDbByCompanyKey.php @@ -29,7 +29,7 @@ class SetDbByCompanyKey { $error = [ 'message' => 'Invalid Token', - 'errors' => [] + 'errors' => new \stdClass ]; diff --git a/app/Http/Middleware/SetDomainNameDb.php b/app/Http/Middleware/SetDomainNameDb.php index db0e1359f22d..397096415403 100644 --- a/app/Http/Middleware/SetDomainNameDb.php +++ b/app/Http/Middleware/SetDomainNameDb.php @@ -28,7 +28,7 @@ class SetDomainNameDb { $error = [ 'message' => 'Invalid token', - 'errors' => [] + 'errors' => new \stdClass ]; /* * Use the host name to set the active DB diff --git a/app/Http/Middleware/SetEmailDb.php b/app/Http/Middleware/SetEmailDb.php index 03c4320ed688..318d0b56bb5c 100644 --- a/app/Http/Middleware/SetEmailDb.php +++ b/app/Http/Middleware/SetEmailDb.php @@ -29,7 +29,7 @@ class SetEmailDb { $error = [ 'message' => 'Email not set or not found', - 'errors' => [] + 'errors' => new \stdClass ]; if ($request->input('email') && config('ninja.db.multi_db_enabled')) { diff --git a/app/Http/Middleware/SetInviteDb.php b/app/Http/Middleware/SetInviteDb.php index 1ed730153472..d392342d8e33 100644 --- a/app/Http/Middleware/SetInviteDb.php +++ b/app/Http/Middleware/SetInviteDb.php @@ -28,7 +28,7 @@ class SetInviteDb { $error = [ 'message' => 'Invalid URL', - 'errors' => [] + 'errors' => new \stdClass ]; /* * Use the host name to set the active DB diff --git a/app/Http/Middleware/TokenAuth.php b/app/Http/Middleware/TokenAuth.php index 088e51cd43f2..b8ebedc57fcb 100644 --- a/app/Http/Middleware/TokenAuth.php +++ b/app/Http/Middleware/TokenAuth.php @@ -34,7 +34,7 @@ class TokenAuth $error = [ 'message' => 'User inactive', - 'errors' => [] + 'errors' => new \stdClass ]; //user who once existed, but has been soft deleted if (!$user) { @@ -60,7 +60,7 @@ class TokenAuth if ($user->company_user->is_locked) { $error = [ 'message' => 'User access locked', - 'errors' => [] + 'errors' => new \stdClass ]; return response()->json($error, 403); @@ -73,7 +73,7 @@ class TokenAuth } else { $error = [ 'message' => 'Invalid token', - 'errors' => [] + 'errors' => new \stdClass ]; return response()->json($error, 403); diff --git a/app/Repositories/ActivityRepository.php b/app/Repositories/ActivityRepository.php index d7be73171068..34d8ab544b94 100644 --- a/app/Repositories/ActivityRepository.php +++ b/app/Repositories/ActivityRepository.php @@ -16,7 +16,9 @@ use App\Models\Activity; use App\Models\Backup; use App\Models\Client; use App\Models\CompanyToken; +use App\Models\Credit; use App\Models\Invoice; +use App\Models\Quote; use App\Models\User; use App\Utils\Traits\MakesInvoiceHtml; use Illuminate\Support\Facades\Log; @@ -64,14 +66,9 @@ class ActivityRepository extends BaseRepository { $backup = new Backup(); - // if (get_class($entity) == Client::class) { - // $entity->load('company'); - // } elseif (get_class($entity) == User::class) { - // } else { - // $entity->load('company', 'client'); - // } + if (get_class($entity) == Invoice::class || get_class($entity) == Quote::class || get_class($entity) == Credit::class) + $backup->html_backup = $this->generateEntityHtml($entity->getEntityDesigner(), $entity); - $backup->html_backup = $this->generateEntityHtml($entity->getEntityDesigner(), $entity); $backup->activity_id = $activity->id; $backup->json_backup = ''; //$backup->json_backup = $entity->toJson();