File: D:/HostingSpaces/SBogers10/ehbo.today/app/KommaApp/Auth/RegisterController.php
<?php
namespace App\KommaApp\Auth;
use App\Http\Controllers\Controller;
use App\KommaApp\IBAN\IBANRule;
use App\KommaApp\Users\Models\User;
use App\KommaApp\Users\Roles;
use App\Notifications\CustomerRegistered;
use App\Notifications\CustomerRegisteredSetPassword;
use Illuminate\Auth\Events\Registered;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;
class RegisterController extends Controller
{
/*
|--------------------------------------------------------------------------
| Register Controller
|--------------------------------------------------------------------------
|
| This controller handles the registration of new users as well as their
| validation and creation. By default this controller uses a trait to
| provide this functionality without requiring any additional code.
|
*/
use RegistersUsers;
/**
* Where to redirect users after registration.
*
* @var string
*/
protected $redirectTo = '/login';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
}
/**
* Show the application registration form.
*ju
* @return \Illuminate\Http\Response
*/
public function showRegistrationForm()
{
return view('site.auth.register');
}
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
return Validator::make($data, [
'gender' => 'required',
'email' => 'required|email|max:255|unique:users',
'iban' => ['required', new IBANRule()],
'certificate_number' => 'required|string'
]);
}
/**
* Handle a registration request for the application.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function register(Request $request)
{
$this->validator($request->all())->validate();
event(new Registered($user = $this->create($request->all())));
return $this->registered($request, $user)
?: redirect($this->redirectPath());
}
/**
* Create a new (customer) user instance after a valid registration.
*
* @param array $data
* @return User
*/
protected function create(array $data)
{
$newUser = new User();
$newUser->gender = $data['gender'];
$newUser->birthdate = $data['birth_date_year'].'-'.$data['birth_date_month'].'-'.$data['birth_date_day'].' 00:00:00';
$newUser->username = $data['first_name'].' '.$data['last_name'];;
$newUser->first_name = $data['first_name'];
$newUser->last_name = $data['last_name'];
$newUser->street = $data['street'];
$newUser->house_number = $data['house_number'];
$newUser->city = $data['city'];
$newUser->postal_code = $data['postal_code'];
$newUser->email = $data['email'];
$newUser->telephone = $data['phone'];
$newUser->mobile = $data['mobile'];
$newUser->bank_account_number = $data['iban'];
$newUser->certificate_acquirement_date = $data['expiration_date_year'].'-'.$data['expiration_date_month'].'-'.$data['expiration_date_day'].' 00:00:00';
$newUser->certificate_number = $data['certificate_number'];
$newUser->password = \Hash::make($data['certificate_number']);
$newUser->save();
$newUser->roles()->attach(Roles::Member);
$this->notifyAdminsForNewCustomer($newUser);
$this->notifyUserToSetPassword($newUser);
return $newUser;
}
/**
* Notify admins that a new user has been created
*
* @param $customer
*/
protected function notifyAdminsForNewCustomer(User $customer)
{
// User::where('role_id', '=', Role::Admin)->get()->each(function(User $admin) use ($customer) {
// $admin->notify(new CustomerRegistered($customer));
// \Log::debug('Notifyed admin with id: '.$admin->id.' that user with id '.$customer->id.' registered');
// });
// $user = new User(['email', '=', 'penningmeester@ehbocranendonck.nl']); <!--TODO: Use this mail adress for live-->
$user = new User(['email' => 'jules@komma.pro']);
$user->notify(new CustomerRegistered($customer));
\Log::debug('Customer registered. Contacted "'.$user->email.'"');
}
protected function notifyUserToSetPassword(User $newUser)
{
$token = \Password::getRepository()->create($newUser);
$newUser->notify(new CustomerRegisteredSetPassword($newUser, $token));
}
}