diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index 8c931225..e5d1ce4b 100755 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -110,7 +110,7 @@ class RegisterController extends Controller { $this->validate(request(), [ 'name' => 'required', - 'email' => 'required|unique:users|email', + 'email' => 'required|email|unique:users,email', 'airline_id' => 'required', 'home_airport_id' => 'required', 'password' => 'required|confirmed' diff --git a/app/Http/Controllers/Frontend/ProfileController.php b/app/Http/Controllers/Frontend/ProfileController.php index c1b350f5..8a1ada61 100644 --- a/app/Http/Controllers/Frontend/ProfileController.php +++ b/app/Http/Controllers/Frontend/ProfileController.php @@ -2,24 +2,39 @@ namespace App\Http\Controllers\Frontend; -use App\Models\User; -use App\Repositories\AirportRepository; -use App\Http\Controllers\AppBaseController; +use Log; +use Hash; +use Flash; +use Validator; +use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; +use Jackiedo\Timezonelist\Facades\Timezonelist; +use App\Models\User; +use App\Repositories\AirlineRepository; +use App\Repositories\AirportRepository; +use App\Repositories\UserRepository; +use App\Http\Controllers\AppBaseController; class ProfileController extends AppBaseController { - private $airportRepository; + private $airlineRepo, + $airportRepo, + $userRepo; - public function __construct(AirportRepository $airportRepo) - { - $this->airportRepository = $airportRepo; + public function __construct( + AirlineRepository $airlineRepo, + AirportRepository $airportRepo, + UserRepository $userRepo + ) { + $this->airlineRepo = $airlineRepo; + $this->airportRepo = $airportRepo; + $this->userRepo = $userRepo; } public function index() { - $airports = $this->airportRepository->all(); + $airports = $this->airportRepo->all(); return $this->view('profile.index', [ 'user' => Auth::user(), @@ -35,7 +50,7 @@ class ProfileController extends AppBaseController return redirect(route('frontend.dashboard.index')); } - $airports = $this->airportRepository->all(); + $airports = $this->airportRepo->all(); return $this->view('profile.index', [ 'user' => $user, @@ -43,8 +58,59 @@ class ProfileController extends AppBaseController ]); } - public function update() + /** + * Show the edit for form the user's profile + */ + public function edit(Request $request) { + $user = User::where('id', Auth::user()->id)->first(); + if (empty($user)) { + Flash::error('User not found!'); + return redirect(route('frontend.dashboard.index')); + } + $airlines = $this->airlineRepo->selectBoxList(); + $airports = $this->airportRepo->selectBoxList(); + + return $this->view('profile.edit', [ + 'user' => $user, + 'airlines' => $airlines, + 'airports' => $airports, + 'timezones' => Timezonelist::toArray(), + ]); + } + + public function update(Request $request) + { + $id = Auth::user()->id; + $user = $this->userRepo->findWithoutFail($id); + + $validator = Validator::make($request->toArray(), [ + 'name' => 'required', + 'email' => 'required|unique:users,email,'.$id, + 'airline_id' => 'required', + 'password' => 'confirmed' + ]); + + if ($validator->fails()) { + Log::info('validator failed for user '.$user->pilot_id); + Log::info($validator->errors()->toArray()); + + return redirect(route('frontend.profile.edit', $id)) + ->withErrors($validator) + ->withInput(); + } + + $req_data = $request->all(); + if (!$request->filled('password')) { + unset($req_data['password']); + } else { + $req_data['password'] = Hash::make($req_data['password']); + } + + $user = $this->userRepo->update($req_data, $id); + + Flash::success('Profile updated successfully!'); + return redirect(route('frontend.profile.index')); } } diff --git a/resources/views/layouts/default/app.blade.php b/resources/views/layouts/default/app.blade.php index 1e9c12a6..d53528e7 100644 --- a/resources/views/layouts/default/app.blade.php +++ b/resources/views/layouts/default/app.blade.php @@ -4,8 +4,6 @@
- -Update
- {!! Form::model($user, ['url' => url('/profile'), 'method' => 'post']) !!} -| Name | +
+
+ {!! Form::text('name', null, ['class' => 'form-control']) !!}
+ @if ($errors->has('name'))
+ {{ $errors->first('name') }} + @endif + |
+
|
+
+ {!! Form::text('email', null, ['class' => 'form-control']) !!}
+
+ @if ($errors->has('email'))
+ {{ $errors->first('email') }} + @endif + |
+ |
| Airline | +
+
+ {!! Form::select('airline_id', $airlines, null , ['class' => 'form-control select2']) !!}
+
+ @if ($errors->has('airline_id'))
+ {{ $errors->first('airline_id') }} + @endif + |
+
| Timezone | +
+
+ {!! Form::select('timezone', $timezones, null, ['class' => 'form-control select2' ]); !!}
+
+ @if ($errors->has('timezone'))
+ {{ $errors->first('timezone') }} + @endif + |
+
| Change Password | +
+
+ {!! Form::password('password', ['class' => 'form-control']) !!}
+
+ @if ($errors->has('password'))
+ {{ $errors->first('password') }} + @endif + +Confirm Password: +
+ {!! Form::password('password_confirmation', ['class' => 'form-control']) !!}
+
+ @if ($errors->has('password_confirmation'))
+ {{ $errors->first('password_confirmation') }} + @endif + |
+
- {!! $user->airline->name !!} -
+ {!! $user->airline->name !!} +
+| {!! $user->email !!} | +|
| API Key don't share this! |
+ {!! $user->api_key !!} | +
| Timezone | +{!! $user->timezone !!} | +
+ {!! $user->airline->name !!} +
+