Add login and logout features for rider api #119
This commit is contained in:
parent
9d8a3fe6e4
commit
5b94b1a592
3 changed files with 68 additions and 1 deletions
|
|
@ -10,6 +10,11 @@ rapi_login:
|
||||||
controller: App\Controller\RAPIController::login
|
controller: App\Controller\RAPIController::login
|
||||||
methods: [POST]
|
methods: [POST]
|
||||||
|
|
||||||
|
rapi_logout:
|
||||||
|
path: /rapi/logout
|
||||||
|
controller: App\Controller\RAPIController::logout
|
||||||
|
methods: [POST]
|
||||||
|
|
||||||
rapi_get_status:
|
rapi_get_status:
|
||||||
path: /rapi/status
|
path: /rapi/status
|
||||||
controller: App\Controller\RAPIController::getStatus
|
controller: App\Controller\RAPIController::getStatus
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ use Symfony\Component\HttpFoundation\Request;
|
||||||
use Symfony\Component\HttpFoundation\Response;
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
||||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||||
|
use Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface;
|
||||||
|
|
||||||
use CrEOF\Spatial\PHP\Types\Geometry\Point;
|
use CrEOF\Spatial\PHP\Types\Geometry\Point;
|
||||||
|
|
||||||
|
|
@ -32,6 +33,8 @@ use App\Entity\JobOrder;
|
||||||
use App\Entity\Promo;
|
use App\Entity\Promo;
|
||||||
use App\Entity\Battery;
|
use App\Entity\Battery;
|
||||||
use App\Entity\RiderRating;
|
use App\Entity\RiderRating;
|
||||||
|
use App\Entity\Rider;
|
||||||
|
use App\Entity\User;
|
||||||
|
|
||||||
use DateTime;
|
use DateTime;
|
||||||
|
|
||||||
|
|
@ -191,7 +194,7 @@ class RAPIController extends Controller
|
||||||
return $res->getReturnResponse();
|
return $res->getReturnResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function login(Request $req)
|
public function login(Request $req, EncoderFactoryInterface $ef)
|
||||||
{
|
{
|
||||||
$required_params = [
|
$required_params = [
|
||||||
'user',
|
'user',
|
||||||
|
|
@ -202,6 +205,57 @@ class RAPIController extends Controller
|
||||||
if ($res->isError())
|
if ($res->isError())
|
||||||
return $res->getReturnResponse();
|
return $res->getReturnResponse();
|
||||||
|
|
||||||
|
// check if session has a rider already
|
||||||
|
if ($this->session->hasRider())
|
||||||
|
{
|
||||||
|
$res->setError(true)
|
||||||
|
->setErrorMessage('Another rider is already logged in. Please logout first.');
|
||||||
|
return $res->getReturnResponse();
|
||||||
|
}
|
||||||
|
|
||||||
|
// look for rider with username
|
||||||
|
$rider = $em->getRepository(Rider::class)->findOneBy(['username' => $req->request->get('user')]);
|
||||||
|
if ($rider == null)
|
||||||
|
{
|
||||||
|
$res->setError(true)
|
||||||
|
->setErrorMessage('Invalid username or password.');
|
||||||
|
return $res->getReturnResponse();
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if rider password is correct
|
||||||
|
$encoder = $ef->getEncoder(new User());
|
||||||
|
if (!$encoder->isPasswordValid($rider->getPassword(), $req->request->get('pass'), ''))
|
||||||
|
{
|
||||||
|
$res->setError(true)
|
||||||
|
->setErrorMessage('Invalid username or password.');
|
||||||
|
return $res->getReturnResponse();
|
||||||
|
}
|
||||||
|
|
||||||
|
// assign rider to session
|
||||||
|
$this->session->setRider($rider);
|
||||||
|
|
||||||
|
// TODO: log rider logging in
|
||||||
|
|
||||||
|
$em->flush();
|
||||||
|
|
||||||
|
return $res->getReturnResponse();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function logout(Request $req)
|
||||||
|
{
|
||||||
|
$required_params = [];
|
||||||
|
$em = $this->getDoctrine()->getManager();
|
||||||
|
$res = $this->checkParamsAndKey($req, $em, $required_params);
|
||||||
|
if ($res->isError())
|
||||||
|
return $res->getReturnResponse();
|
||||||
|
|
||||||
|
// remove rider from session
|
||||||
|
$this->session->setRider(null);
|
||||||
|
|
||||||
|
// TODO: log rider logging out
|
||||||
|
|
||||||
|
$em->flush();
|
||||||
|
|
||||||
return $res->getReturnResponse();
|
return $res->getReturnResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -106,4 +106,12 @@ class RiderSession
|
||||||
{
|
{
|
||||||
return $this->is_active;
|
return $this->is_active;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function hasRider()
|
||||||
|
{
|
||||||
|
if ($this->rider == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue