Add fix for security checking for verifyJobOrder. #424
This commit is contained in:
parent
47eaa6488f
commit
9d41ecb228
1 changed files with 72 additions and 5 deletions
|
|
@ -2080,16 +2080,27 @@ class CMBRiderAPIHandler implements RiderAPIHandlerInterface
|
||||||
$required_params = [
|
$required_params = [
|
||||||
'jo_id'
|
'jo_id'
|
||||||
];
|
];
|
||||||
$data = $this->checkJO($req, $required_params, $jo);
|
$data = $this->checkJOForVerify($req, $required_params, $jo);
|
||||||
if (isset($data['error']))
|
if (isset($data['error']))
|
||||||
{
|
{
|
||||||
$data = [
|
$data['title'] = 'Failed Verify Job Order';
|
||||||
'assigned' => false,
|
|
||||||
'available' => false,
|
|
||||||
];
|
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$rider = $this->session->getRider();
|
||||||
|
// check if rider is assigned to JO
|
||||||
|
if ($jo->getRider() != null)
|
||||||
|
{
|
||||||
|
if ($rider->getID() != $jo->getRider()->getID())
|
||||||
|
{
|
||||||
|
$data = [
|
||||||
|
'assigned' => false,
|
||||||
|
'available' => false,
|
||||||
|
];
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// check if JO status is not fulfilled and not cancelled
|
// check if JO status is not fulfilled and not cancelled
|
||||||
if (($jo->getStatus() == JOStatus::FULFILLED) ||
|
if (($jo->getStatus() == JOStatus::FULFILLED) ||
|
||||||
($jo->getStatus() == JOStatus::CANCELLED))
|
($jo->getStatus() == JOStatus::CANCELLED))
|
||||||
|
|
@ -2287,6 +2298,62 @@ class CMBRiderAPIHandler implements RiderAPIHandlerInterface
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function checkJOForVerify(Request $req, $required_params, &$jo = null)
|
||||||
|
{
|
||||||
|
// set jo status to in transit
|
||||||
|
$data = $this->checkParamsAndKey($req, $required_params);
|
||||||
|
if (isset($data['error']))
|
||||||
|
return $data;
|
||||||
|
|
||||||
|
// are we logged in?
|
||||||
|
if (!$this->session->hasRider())
|
||||||
|
{
|
||||||
|
$data = [
|
||||||
|
'error' => 'No logged in rider.'
|
||||||
|
];
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
$rider = $this->session->getRider();
|
||||||
|
|
||||||
|
// get jo
|
||||||
|
$jo_id = '';
|
||||||
|
if ($req->getMethod() == 'GET')
|
||||||
|
$jo_id = $req->query->get('jo_id');
|
||||||
|
else
|
||||||
|
$jo_id = $req->request->get('jo_id');
|
||||||
|
|
||||||
|
$jo = $this->em->getRepository(JobOrder::class)->find($jo_id);
|
||||||
|
if ($jo == null)
|
||||||
|
{
|
||||||
|
$data = [
|
||||||
|
'error' => 'No job order found.'
|
||||||
|
];
|
||||||
|
return $data;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if rider assigned to jo is our rider
|
||||||
|
if ($jo->getRider() == null)
|
||||||
|
{
|
||||||
|
$data = [
|
||||||
|
'error' => 'Job order selected has no rider assigned.'
|
||||||
|
];
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
// check if rider is assigned to JO
|
||||||
|
if ($rider->getID() != $jo->getRider()->getID())
|
||||||
|
{
|
||||||
|
$data = [
|
||||||
|
'error' => 'Job order selected is not assigned to rider'
|
||||||
|
];
|
||||||
|
return $data;
|
||||||
|
} */
|
||||||
|
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
protected function debugRequest(Request $req)
|
protected function debugRequest(Request $req)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue