Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Http\Controllers\Auth;
- use App\User;
- use App\Http\Controllers\Controller;
- use Illuminate\Support\Facades\Validator;
- use Illuminate\Foundation\Auth\RegistersUsers;
- use App\Repositories\User\UserContract;
- use App\Repositories\Department\DepartmentContract;
- use Mail;
- use Reminder;
- use App\Mail\ActivateAccount;
- use App\Mail\PasswordReset;
- use Illuminate\Http\Request;
- use Sentinel;
- use Activation;
- 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 = '/home';
- protected $repo;
- protected $deptRepo;
- /**
- * Create a new controller instance.
- *
- * @return void
- */
- public function __construct(UserContract $userContract, DepartmentContract $deptContract)
- {
- // $this->middleware('guest');
- $this->repo = $userContract;
- $this->deptRepo = $deptContract;
- }
- public function index()
- {
- if (!\Sentinel::getUser()) {
- return redirect()->route('login')
- ->with('error', 'Your Session has expired. Please login again!');
- }
- $members = $this->repo->findAll();
- $departments = $this->deptRepo->findAll();
- $roles = \DB::table('roles')->get();
- return view('member.index')
- ->with('roles', $roles)->with('departments', $departments)
- ->with('members', $members);
- }
- /**
- * Create a new user instance after a valid registration.
- *
- * @param array $data
- * @return User
- */
- public function handleRegistration(Request $request) {
- $this->validate($request, [
- 'surname' => 'required',
- 'other_names' => 'required',
- 'department' => 'required',
- 'rank' => 'required',
- 'gender' => 'required',
- 'type' => 'required',
- 'file_number' => 'required',
- 'phone' => 'required',
- 'appointment_type' => 'required',
- 'address' => 'required',
- 'email' => 'required|unique:users',
- 'nok' => 'required',
- 'nok_address' => 'required',
- 'nok_phone' => 'required',
- 'nok_relationship' => 'required',
- 'date_joined' => 'required',
- ]);
- $number = $this->repo->validatePhoneNumber($request->phone);
- if(!$number) {
- return back()->withInput()->with('error', 'Invalid phone number. Try again!');
- }
- try {
- $user = $this->repo->create($request);
- $code = \DB::table('activations')->where('user_id', $user->id)->first();
- Mail::to($user->email)->send(new ActivateAccount($user, $code));
- if ($user) {
- return redirect()->route('member_index')
- ->with('success', 'User created successfully!');
- } else {
- return back()
- ->withInput()
- ->with('error', 'Could not create User. Try again!');
- }
- } catch (QueryException $e) {
- return back()
- ->withInput()
- ->with('error', 'User '.$request->surname. ' ' . $request->other_names . ' exists!');
- }
- }
- public function update(Request $request, $id)
- {
- $this->validate($request, [
- 'surname' => 'required',
- 'other_names' => 'required',
- 'department' => 'required',
- 'rank' => 'required',
- 'gender' => 'required',
- 'type' => 'required',
- 'file_number' => 'required',
- 'phone' => 'required',
- 'appointment_type' => 'required',
- 'address' => 'required',
- 'email' => 'required|unique:users',
- 'nok' => 'required',
- 'nok_address' => 'required',
- 'nok_phone' => 'required',
- 'nok_relationship' => 'required',
- 'date_joined' => 'required',
- ]);
- try {
- $member = $this->repo->edit($id, $request);
- if (is_object($member)) {
- return back()
- ->with('success', 'User successfully updated.');
- } else {
- return back()
- ->withInput()
- ->with('error', 'Could not update User. Try again!');
- }
- } catch (QueryException $e) {
- return back()
- ->withInput()
- ->with('error', 'User '.$request->surname. ' ' . $request->other_names . ' exists!');
- }
- }
- public function delete($id)
- {
- if ($this->repo->discard($id)) {
- return redirect()->route('member_index')
- ->with('success', 'Member successfully deleted.');
- } else {
- return back()
- ->with('error', 'Could not delete Member. Try again!');
- }
- }
- public function cancelCreation() {
- return redirect()->route('member_index')->with('info', 'Member creation Cancelled!');
- }
- public function activateUser($id, $code){
- $user = Sentinel::findById($id);
- $a = Activation::complete($user, $code);
- return redirect()->route('login')->with('success', 'Account activated. Log In!');
- }
- public function recoverPassword(Request $request){
- $this->validate($request, [
- 'email' => 'required'
- ]);
- $user = User::where('email', $request->email)->first();
- if(!$user){
- return back()
- ->withInput()
- ->with('error', "Your email doesn't exist on our database!");
- }else{
- if(!$reminder = Reminder::exists($user)){
- $reminder = Reminder::create($user);
- }
- Mail::to($user)->send(new PasswordReset($user, $reminder->code));
- return back()
- ->withInput()
- ->with('success', 'Check your email!!!');
- }
- }
- public function newPassword(Request $request){
- $this->validate($request, [
- 'password' => 'required|confirmed',
- ]);
- if(($request->password) != ($request->confirm_password)){
- return back()
- ->with('error', 'Passwords do not match. Try Again!!!');
- }
- $user = Sentinel::findById($request->id);
- if ($reminder = Reminder::complete($user, $request->code, $request->confirm_password)){
- return redirect()->route('login')
- ->with('success', 'Password updated successfully');
- }else{
- return back()
- ->with('error', 'Password Reset Error, Try Again!!!');
- }
- $user->password = bcrypt($request->password);
- $user->save();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement