diff --git a/config/api_acl.yaml b/config/api_acl.yaml index 2e5bbdd3..54363f6f 100644 --- a/config/api_acl.yaml +++ b/config/api_acl.yaml @@ -67,3 +67,9 @@ access_keys: acls: - id: dealer.list label: List + + - id: mobile_customer + label: Mobile Customer + acls: + - id: mobile_customer.register + label: Register Mobile Customer diff --git a/config/packages/security.yaml b/config/packages/security.yaml index 4339eba4..bae83a76 100644 --- a/config/packages/security.yaml +++ b/config/packages/security.yaml @@ -46,6 +46,14 @@ security: provider: api_key_user_provider user_checker: Catalyst\AuthBundle\Service\UserChecker + mobile_api: + pattern: ^\/resqapi\/ + stateless: true + simple_preauth: + authenticator: Catalyst\APIBundle\Security\APIKeyAuthenticator + provider: api_key_user_provider + user_checker: Catalyst\AuthBundle\Service\UserChecker + main: provider: user_provider form_login: diff --git a/src/Controller/ResqAPI/CustomerController.php b/src/Controller/ResqAPI/CustomerController.php index 378e0e57..5a934f39 100644 --- a/src/Controller/ResqAPI/CustomerController.php +++ b/src/Controller/ResqAPI/CustomerController.php @@ -10,10 +10,7 @@ use Doctrine\ORM\Query; use Doctrine\ORM\EntityManagerInterface; use Catalyst\APIBundle\Controller\APIController; -// TODO: what do we use for response? APIResponse or APIResult? -// APIResult is what is used by APIController. APIResponse is what is used by CAPI use Catalyst\APIBundle\Response\APIResponse; -use App\Ramcar\APIResult; use App\Entity\MobileUser; @@ -33,8 +30,6 @@ class CustomerController extends APIController public function register(Request $req, EntityManagerInterface $em) { // no need for access for register - - $res = new APIResult(); // confirm parameters $required_params = [ 'phone_model', @@ -43,17 +38,12 @@ class CustomerController extends APIController 'phone_id' ]; - // TODO: APIController has a function called checkRequiredParameters that does the same thing - // as checkMissingParameters. Maybe we can use that? - $missing = $this->checkMissingParameters($req, $required_params); - if (count($missing) > 0) - { - $params = implode(', ', $missing); - $res->setError(true) - ->setErrorMessage('Missing parameter(s): ' . $params); - return $res->getReturnResponse(); - } + $msg = $this->checkRequiredParameters($req, $required_params); + if ($msg) + return new APIResponse(false, $error_message); + // get capi user to link to mobile user + $user_id = $this->getUser()->getID(); // retry until we get a unique id while (true) { @@ -64,7 +54,8 @@ class CustomerController extends APIController $mobile_user->setPhoneModel($req->request->get('phone_model')) ->setOSType($req->request->get('os_type')) ->setOSVersion($req->request->get('os_version')) - ->setPhoneID($req->request->get('phone_id')); + ->setPhoneID($req->request->get('phone_id')) + ->setCapiUserId($user_id); // reopen in case we get an exception if (!$em->isOpen()) @@ -99,7 +90,7 @@ class CustomerController extends APIController ]; // response - return $res->getReturnResponse(); + return new APIResponse(true, 'Mobile user created.', $data); } public function confirmNumber(RisingTideGateway $rt, Request $req, EntityManagerInterface $em) diff --git a/src/Controller/ResqAPI/JobOrderController.php b/src/Controller/ResqAPI/JobOrderController.php index 618e691a..1035c986 100644 --- a/src/Controller/ResqAPI/JobOrderController.php +++ b/src/Controller/ResqAPI/JobOrderController.php @@ -1196,7 +1196,7 @@ class JobOrderController extends APIController $invoice = $jo->getInvoice(); - / make invoice json data + // make invoice json data $data = [ 'total_price' => (float) $invoice->getTotalPrice(), 'vat_ex_price' => (float) $invoice->getVATExclusivePrice(), diff --git a/src/Entity/MobileUser.php b/src/Entity/MobileUser.php index 0830ae89..127ccb47 100644 --- a/src/Entity/MobileUser.php +++ b/src/Entity/MobileUser.php @@ -152,6 +152,12 @@ class MobileUser return $this->os_type; } + public function setOSVersion($version) + { + $this->os_version = $version; + return $this; + } + public function getOSVersion() { return $this->os_version;