Add rider username and password to forms and database #119

This commit is contained in:
Kendrick Chan 2018-05-22 20:57:50 +08:00
parent 6d38522125
commit 9e6ff4ee15
3 changed files with 107 additions and 1 deletions

View file

@ -7,6 +7,7 @@ use App\Ramcar\DayOfWeek;
use App\Entity\Rider;
use App\Entity\RiderSchedule;
use App\Entity\Hub;
use App\Entity\User;
use App\Service\FileUploader;
use Doctrine\ORM\Query;
@ -14,6 +15,7 @@ use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface;
use Symfony\Component\Validator\Validator\ValidatorInterface;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
use DateTime;
@ -154,7 +156,8 @@ class RiderController extends BaseController
->setContactNumber($req->request->get('contact_no'))
->setPlateNumber($req->request->get('plate_number'))
->setImageFile($req->request->get('image_file'))
->setActive($req->request->get('flag_active') ? true : false);
->setActive($req->request->get('flag_active') ? true : false)
->setUsername($req->request->get('username'));
}
public function addSubmit(Request $req, EncoderFactoryInterface $ef, ValidatorInterface $validator)
@ -176,6 +179,24 @@ class RiderController extends BaseController
// initialize error list
$error_array = [];
// get password inputs
$password = $req->request->get('password');
$confirm_password = $req->request->get('confirm_password');
// custom validation for password fields
if (!$password) {
$error_array['password'] = 'This value should not be blank.';
} else if ($password != $confirm_password) {
$error_array['confirm_password'] = 'Passwords do not match.';
} else {
// encode password
$enc = $ef->getEncoder(new User());
$encoded_password = $enc->encodePassword($req->request->get('password'), '');
// set password
$obj->setPassword($encoded_password);
}
// custom validation for associations
$hub_id = $req->request->get('hub');
@ -303,6 +324,24 @@ class RiderController extends BaseController
// initialize error list
$error_array = [];
// get password inputs
$password = $req->request->get('password');
$confirm_password = $req->request->get('confirm_password');
// custom validation for password fields
if ($password || $confirm_password) {
if ($password != $confirm_password) {
$error_array['confirm_password'] = 'Passwords do not match.';
} else {
// encode password
$enc = $ef->getEncoder(new User());
$encoded_password = $enc->encodePassword($req->request->get('password'), '');
// set password
$obj->setPassword($encoded_password);
}
}
// custom validation for associations
$hub_id = $req->request->get('hub');

View file

@ -92,6 +92,18 @@ class Rider
*/
protected $flag_active;
// username for rider api
/**
* @ORM\Column(type="string", length=80, unique=true, nullable=true)
*/
protected $username;
// password for rider api
/**
* @ORM\Column(type="string", length=64)
*/
protected $password;
public function __construct()
{
$this->job_orders = new ArrayCollection();
@ -99,6 +111,8 @@ class Rider
$this->curr_rating = 0;
$this->flag_available = true;
$this->flag_active = true;
$this->username = null;
$this->password = '';
}
public function getID()
@ -253,4 +267,27 @@ class Rider
{
return $this->flag_active;
}
public function setUsername($username)
{
$this->username = $username;
return $this;
}
public function getUsername()
{
return $this->username;
}
public function setPassword($pass)
{
// they have to pass the encoded password
$this->password = $pass;
return $this;
}
public function getPassword()
{
return $this->password;
}
}

View file

@ -35,6 +35,36 @@
<form id="row-form" class="m-form m-form--fit m-form--label-align-right" method="post" action="{{ mode == 'update' ? url('rider_update_submit', {'id': obj.getId()}) : url('rider_create_submit') }}">
<div class="m-portlet__body">
<div class="m-form__section m-form__section--first">
<div class="m-form__heading">
<h3 class="m-form__heading-title">
Rider App User
</h3>
</div>
<div class="form-group m-form__group row">
<div class="col-lg-6">
<label data-field="username">Username</label>
<input type="text" name="username" class="form-control m-input" value="{{ obj.getUsername() }}">
<div class="form-control-feedback hide" data-field="username"></div>
</div>
</div>
<div class="form-group m-form__group row">
<div class="col-lg-6">
<label data-field="password">Password</label>
<input type="password" name="password" class="form-control m-input">
<div class="form-control-feedback hide" data-field="password"></div>
</div>
</div>
<div class="form-group m-form__group row">
<div class="col-lg-6">
<label data-field="confirm_password">Confirm Password</label>
<input type="password" name="confirm_password" class="form-control m-input">
<div class="form-control-feedback hide" data-field="confirm_password"></div>
</div>
</div>
</div>
<div class="m-form__seperator m-form__seperator--dashed"></div>
<div class="m-form__section m-form__section">
<div class="m-form__heading">
<h3 class="m-form__heading-title">
Rider Details