From 247310b4e7b6440249970d46993a8525041e5563 Mon Sep 17 00:00:00 2001 From: Nabeel Shahzad Date: Sun, 7 Jan 2018 15:09:22 -0600 Subject: [PATCH] Cleanup user edit page and show their pireps; log last IP address #110 --- .../2017_06_08_0000_create_users_table.php | 1 + app/Http/Controllers/Admin/UserController.php | 52 +++++++++++++++---- app/Http/Controllers/Auth/LoginController.php | 3 ++ app/Routes/admin.php | 2 + .../views/admin/aircraft/create.blade.php | 1 - resources/views/admin/aircraft/edit.blade.php | 1 - .../views/admin/airlines/create.blade.php | 1 - resources/views/admin/airlines/edit.blade.php | 1 - .../views/admin/airports/create.blade.php | 2 +- resources/views/admin/airports/edit.blade.php | 1 - resources/views/admin/app.blade.php | 2 +- resources/views/admin/fares/create.blade.php | 1 - resources/views/admin/fares/edit.blade.php | 1 - resources/views/admin/fares/show.blade.php | 16 ++---- resources/views/admin/flash/message.blade.php | 19 +++++++ .../views/admin/flights/create.blade.php | 1 - resources/views/admin/flights/edit.blade.php | 1 - .../views/admin/pirepfields/create.blade.php | 1 - .../views/admin/pirepfields/edit.blade.php | 1 - .../views/admin/pirepfields/index.blade.php | 1 - resources/views/admin/pireps/create.blade.php | 1 - resources/views/admin/pireps/edit.blade.php | 1 - resources/views/admin/ranks/create.blade.php | 1 - resources/views/admin/ranks/edit.blade.php | 1 - .../views/admin/subfleets/create.blade.php | 1 - .../views/admin/subfleets/edit.blade.php | 1 - .../views/admin/subfleets/index.blade.php | 3 +- resources/views/admin/users/create.blade.php | 1 - resources/views/admin/users/edit.blade.php | 18 ++++++- resources/views/admin/users/fields.blade.php | 42 +++++++++++++-- resources/views/admin/users/show.blade.php | 2 +- resources/views/admin/users/table.blade.php | 6 +-- 32 files changed, 131 insertions(+), 56 deletions(-) diff --git a/app/Database/migrations/2017_06_08_0000_create_users_table.php b/app/Database/migrations/2017_06_08_0000_create_users_table.php index 61814028..94a47f4a 100755 --- a/app/Database/migrations/2017_06_08_0000_create_users_table.php +++ b/app/Database/migrations/2017_06_08_0000_create_users_table.php @@ -31,6 +31,7 @@ class CreateUsersTable extends Migration $table->unsignedTinyInteger('status')->default(0); $table->unsignedTinyInteger('state')->default(0); $table->boolean('active')->nullable(); + $table->ipAddress('last_ip')->nullable(); $table->rememberToken(); $table->timestamps(); $table->softDeletes(); diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php index 2d8bd28d..7c3db522 100644 --- a/app/Http/Controllers/Admin/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -2,16 +2,22 @@ namespace App\Http\Controllers\Admin; +use App\Facades\Utils; +use App\Models\User; use DB; use Hash; +use Illuminate\Support\Facades\Auth; use Log; use Flash; +use Prettus\Repository\Exceptions\RepositoryException; use Response; use Jackiedo\Timezonelist\Facades\Timezonelist; use Illuminate\Http\Request; use App\Http\Requests\CreateUserRequest; use App\Http\Requests\UpdateUserRequest; + +use App\Repositories\PirepRepository; use App\Repositories\UserRepository; use App\Services\UserService; @@ -22,8 +28,8 @@ use App\Models\Role; class UserController extends BaseController { - /** @var UserRepository */ - private $userRepo, + private $pirepRepo, + $userRepo, $userSvc; /** @@ -32,18 +38,23 @@ class UserController extends BaseController * @param UserRepository $userRepo */ public function __construct( + PirepRepository $pirepRepo, UserRepository $userRepo, UserService $userSvc ) { + $this->pirepRepo = $pirepRepo; $this->userSvc = $userSvc; $this->userRepo = $userRepo; } public function index(Request $request) { - $users = $this->userRepo->searchCriteria($request, false) - ->orderBy('created_at', 'desc') - ->paginate(); + try { + $users = $this->userRepo->searchCriteria($request, false) + ->orderBy('created_at', 'desc') + ->paginate(); + } catch (RepositoryException $e) { + } return view('admin.users.index', [ 'users' => $users, @@ -52,7 +63,6 @@ class UserController extends BaseController /** * Show the form for creating a new User. - * * @return Response */ public function create() @@ -64,10 +74,9 @@ class UserController extends BaseController /** * Store a newly created User in storage. - * * @param CreateUserRequest $request - * * @return Response + * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function store(CreateUserRequest $request) { @@ -80,9 +89,7 @@ class UserController extends BaseController /** * Display the specified User. - * * @param int $id - * * @return Response */ public function show($id) @@ -94,8 +101,13 @@ class UserController extends BaseController return redirect(route('admin.users.index')); } + $pireps = $this->pirepRepo + ->whereOrder(['user_id' => $id], 'created_at', 'desc') + ->paginate(); + return view('admin.users.show', [ 'user' => $user, + 'pireps' => $pireps, 'airlines' => Airline::all(), 'timezones' => Timezonelist::toArray(), 'airports' => Airport::all()->pluck('icao', 'id'), @@ -120,8 +132,13 @@ class UserController extends BaseController return redirect(route('admin.users.index')); } + $pireps = $this->pirepRepo + ->whereOrder(['user_id' => $id], 'created_at', 'desc') + ->paginate(); + return view('admin.users.edit', [ 'user' => $user, + 'pireps' => $pireps, 'timezones' => Timezonelist::toArray(), 'airports' => Airport::all()->pluck('icao', 'id'), 'airlines' => Airline::all()->pluck('name', 'id'), @@ -193,4 +210,19 @@ class UserController extends BaseController Flash::success('User deleted successfully.'); return redirect(route('admin.users.index')); } + + /** + * Regenerate the user's API key + */ + public function regen_apikey($id, Request $request) + { + $user = User::find($id); + Log::info('Regenerating API key "' . $user->pilot_id . '"'); + + $user->api_key = Utils::generateApiKey(); + $user->save(); + + flash('New API key generated!')->success(); + return redirect(route('admin.users.edit', ['id' => $id])); + } } diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index 1ee5b445..4e45c170 100755 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -34,6 +34,9 @@ class LoginController extends Controller { $user = Auth::user(); + $user->last_ip = $request->ip(); + $user->save(); + // TODO: How to handle ON_LEAVE? if($user->state !== UserState::ACTIVE) { diff --git a/app/Routes/admin.php b/app/Routes/admin.php index 472726ef..848cbf0a 100644 --- a/app/Routes/admin.php +++ b/app/Routes/admin.php @@ -44,6 +44,8 @@ Route::group([ Route::resource('pirepfields', 'PirepFieldController'); Route::resource('users', 'UserController'); + Route::get('users/{id}/regen_apikey', + 'UserController@regen_apikey')->name('users.regen_apikey'); # defaults Route::get('', ['uses' => 'DashboardController@index']); diff --git a/resources/views/admin/aircraft/create.blade.php b/resources/views/admin/aircraft/create.blade.php index 10e451ec..187987a8 100644 --- a/resources/views/admin/aircraft/create.blade.php +++ b/resources/views/admin/aircraft/create.blade.php @@ -3,7 +3,6 @@ @section('content')
- @include('admin.flash.message') {!! Form::open(['route' => 'admin.aircraft.store']) !!} @include('admin.aircraft.fields') {!! Form::close() !!} diff --git a/resources/views/admin/aircraft/edit.blade.php b/resources/views/admin/aircraft/edit.blade.php index c82078df..70a1ce3c 100644 --- a/resources/views/admin/aircraft/edit.blade.php +++ b/resources/views/admin/aircraft/edit.blade.php @@ -3,7 +3,6 @@ @section('content')
- @include('admin.flash.message') {!! Form::model($aircraft, ['route' => ['admin.aircraft.update', $aircraft->id], 'method' => 'patch']) !!} @include('admin.aircraft.fields') {!! Form::close() !!} diff --git a/resources/views/admin/airlines/create.blade.php b/resources/views/admin/airlines/create.blade.php index 314e0eda..42a16add 100644 --- a/resources/views/admin/airlines/create.blade.php +++ b/resources/views/admin/airlines/create.blade.php @@ -3,7 +3,6 @@ @section('content')
- @include('admin.flash.message') {!! Form::open(['route' => 'admin.airlines.store']) !!} @include('admin.airlines.fields') {!! Form::close() !!} diff --git a/resources/views/admin/airlines/edit.blade.php b/resources/views/admin/airlines/edit.blade.php index 6e22fa32..66f758ee 100644 --- a/resources/views/admin/airlines/edit.blade.php +++ b/resources/views/admin/airlines/edit.blade.php @@ -3,7 +3,6 @@ @section('content')
- @include('admin.flash.message') {!! Form::model($airline, ['route' => ['admin.airlines.update', $airline->id], 'method' => 'patch']) !!} @include('admin.airlines.fields') {!! Form::close() !!} diff --git a/resources/views/admin/airports/create.blade.php b/resources/views/admin/airports/create.blade.php index 5f0b574d..4bd9011a 100644 --- a/resources/views/admin/airports/create.blade.php +++ b/resources/views/admin/airports/create.blade.php @@ -1,9 +1,9 @@ @extends('admin.app') @section('title', 'Add Airport') + @section('content')
- @include('admin.flash.message') {!! Form::open(['route' => 'admin.airports.store', 'id' => 'airportForm']) !!} @include('admin.airports.fields') {!! Form::close() !!} diff --git a/resources/views/admin/airports/edit.blade.php b/resources/views/admin/airports/edit.blade.php index 9f1188e0..1df30525 100644 --- a/resources/views/admin/airports/edit.blade.php +++ b/resources/views/admin/airports/edit.blade.php @@ -3,7 +3,6 @@ @section('content')
- @include('admin.flash.message') {!! Form::model($airport, ['route' => ['admin.airports.update', $airport->id], 'method' => 'patch', 'id' => 'airportForm']) !!} @include('admin.airports.fields') {!! Form::close() !!} diff --git a/resources/views/admin/app.blade.php b/resources/views/admin/app.blade.php index f3f4e414..1d4f376d 100644 --- a/resources/views/admin/app.blade.php +++ b/resources/views/admin/app.blade.php @@ -63,7 +63,7 @@
- @include('flash::message') + @include('admin.flash.message') @yield('content')
diff --git a/resources/views/admin/fares/create.blade.php b/resources/views/admin/fares/create.blade.php index 3908c2e6..4c658127 100644 --- a/resources/views/admin/fares/create.blade.php +++ b/resources/views/admin/fares/create.blade.php @@ -3,7 +3,6 @@ @section('content')
- @include('admin.flash.message') {!! Form::open(['route' => 'admin.fares.store']) !!} @include('admin.fares.fields') {!! Form::close() !!} diff --git a/resources/views/admin/fares/edit.blade.php b/resources/views/admin/fares/edit.blade.php index 78252edd..053146be 100644 --- a/resources/views/admin/fares/edit.blade.php +++ b/resources/views/admin/fares/edit.blade.php @@ -3,7 +3,6 @@ @section('content')
- @include('admin.flash.message') {!! Form::model($fare, ['route' => ['admin.fares.update', $fare->id], 'method' => 'patch']) !!} @include('admin.fares.fields') {!! Form::close() !!} diff --git a/resources/views/admin/fares/show.blade.php b/resources/views/admin/fares/show.blade.php index e9e6da90..f60aeee7 100644 --- a/resources/views/admin/fares/show.blade.php +++ b/resources/views/admin/fares/show.blade.php @@ -1,19 +1,9 @@ @extends('admin.app') @section('content') -
-

- Fare -

-
+
-
-
-
- @include('admin.fares.show_fields') - Back -
-
-
+ @include('admin.fares.show_fields')
+
@endsection diff --git a/resources/views/admin/flash/message.blade.php b/resources/views/admin/flash/message.blade.php index 894e8e60..f9833e34 100644 --- a/resources/views/admin/flash/message.blade.php +++ b/resources/views/admin/flash/message.blade.php @@ -8,4 +8,23 @@
@endforeach +@if (session()->has('flash_notification.message')) +
+ @if(session()->has('flash_notification.important')) + + @endif + + +
+
+@endif {{ session()->forget('flash_notification') }} diff --git a/resources/views/admin/flights/create.blade.php b/resources/views/admin/flights/create.blade.php index a106c46c..2fa13424 100644 --- a/resources/views/admin/flights/create.blade.php +++ b/resources/views/admin/flights/create.blade.php @@ -3,7 +3,6 @@ @section('content')
- @include('admin.flash.message') {!! Form::model($flight, ['route' => ['admin.flights.store']]) !!} @include('admin.flights.fields') {!! Form::close() !!} diff --git a/resources/views/admin/flights/edit.blade.php b/resources/views/admin/flights/edit.blade.php index 3625ff4c..a90fd7cc 100644 --- a/resources/views/admin/flights/edit.blade.php +++ b/resources/views/admin/flights/edit.blade.php @@ -3,7 +3,6 @@ @section('title', 'Edit Flight') @section('content')
- @include('admin.flash.message')
{!! Form::model($flight, ['route' => ['admin.flights.update', $flight->id], 'method' => 'patch']) !!} @include('admin.flights.fields') diff --git a/resources/views/admin/pirepfields/create.blade.php b/resources/views/admin/pirepfields/create.blade.php index ce1a9fa2..00fa5f0f 100644 --- a/resources/views/admin/pirepfields/create.blade.php +++ b/resources/views/admin/pirepfields/create.blade.php @@ -3,7 +3,6 @@ @section('content')
- @include('admin.flash.message') {!! Form::open(['route' => 'admin.pirepfields.store']) !!} @include('admin.pirepfields.fields') {!! Form::close() !!} diff --git a/resources/views/admin/pirepfields/edit.blade.php b/resources/views/admin/pirepfields/edit.blade.php index 3e8b1308..c2d2853b 100644 --- a/resources/views/admin/pirepfields/edit.blade.php +++ b/resources/views/admin/pirepfields/edit.blade.php @@ -3,7 +3,6 @@ @section('content')
- @include('admin.flash.message') {!! Form::model($field, ['route' => ['admin.pirepfields.update', $field->id], 'method' => 'patch']) !!} @include('admin.pirepfields.fields') {!! Form::close() !!} diff --git a/resources/views/admin/pirepfields/index.blade.php b/resources/views/admin/pirepfields/index.blade.php index e6082920..6ef888dd 100644 --- a/resources/views/admin/pirepfields/index.blade.php +++ b/resources/views/admin/pirepfields/index.blade.php @@ -7,7 +7,6 @@ @section('content')
- @include('admin.flash.message') @include('admin.pirepfields.table')
diff --git a/resources/views/admin/pireps/create.blade.php b/resources/views/admin/pireps/create.blade.php index f23b7ff3..ceb2c7e5 100644 --- a/resources/views/admin/pireps/create.blade.php +++ b/resources/views/admin/pireps/create.blade.php @@ -7,7 +7,6 @@
- @include('admin.flash.message')
diff --git a/resources/views/admin/pireps/edit.blade.php b/resources/views/admin/pireps/edit.blade.php index ef4f787a..17b45bae 100644 --- a/resources/views/admin/pireps/edit.blade.php +++ b/resources/views/admin/pireps/edit.blade.php @@ -3,7 +3,6 @@ @section('title', 'Edit ' . $pirep->ident ) @section('content')
- @include('admin.flash.message')
{!! Form::model($pirep, ['route' => ['admin.pireps.update', $pirep->id], 'method' => 'patch']) !!} diff --git a/resources/views/admin/ranks/create.blade.php b/resources/views/admin/ranks/create.blade.php index 15399a48..3b77cf9a 100644 --- a/resources/views/admin/ranks/create.blade.php +++ b/resources/views/admin/ranks/create.blade.php @@ -3,7 +3,6 @@ @section('content')
- @include('admin.flash.message') {!! Form::open(['route' => 'admin.ranks.store', 'class' => 'add_rank', 'method'=>'POST']) !!} @include('admin.ranks.fields') {!! Form::close() !!} diff --git a/resources/views/admin/ranks/edit.blade.php b/resources/views/admin/ranks/edit.blade.php index 606b673f..52200626 100644 --- a/resources/views/admin/ranks/edit.blade.php +++ b/resources/views/admin/ranks/edit.blade.php @@ -3,7 +3,6 @@ @section('content')
- @include('admin.flash.message') {!! Form::model($rank, ['route' => ['admin.ranks.update', $rank->id], 'method' => 'patch']) !!} @include('admin.ranks.fields') {!! Form::close() !!} diff --git a/resources/views/admin/subfleets/create.blade.php b/resources/views/admin/subfleets/create.blade.php index ae2e59c0..7ad8887d 100644 --- a/resources/views/admin/subfleets/create.blade.php +++ b/resources/views/admin/subfleets/create.blade.php @@ -3,7 +3,6 @@ @section('content')
- @include('admin.flash.message') {!! Form::open(['route' => 'admin.subfleets.store']) !!} @include('admin.subfleets.fields') {!! Form::close() !!} diff --git a/resources/views/admin/subfleets/edit.blade.php b/resources/views/admin/subfleets/edit.blade.php index 4a17a226..bc3bf845 100644 --- a/resources/views/admin/subfleets/edit.blade.php +++ b/resources/views/admin/subfleets/edit.blade.php @@ -2,7 +2,6 @@ @section('title', "Edit $subfleet->name") @section('content') - @include('admin.flash.message')
{!! Form::model($subfleet, ['route' => ['admin.subfleets.update', $subfleet->id], 'method' => 'patch']) !!} diff --git a/resources/views/admin/subfleets/index.blade.php b/resources/views/admin/subfleets/index.blade.php index aa94abf1..248c7255 100644 --- a/resources/views/admin/subfleets/index.blade.php +++ b/resources/views/admin/subfleets/index.blade.php @@ -1,12 +1,13 @@ @extends('admin.app') - @section('title', 'Subfleets') + @section('actions')
  • Add New
  • @endsection + @section('content')
    diff --git a/resources/views/admin/users/create.blade.php b/resources/views/admin/users/create.blade.php index 739cbbbd..471fe3ea 100644 --- a/resources/views/admin/users/create.blade.php +++ b/resources/views/admin/users/create.blade.php @@ -3,7 +3,6 @@ @section('content')
    - @include('admin.flash.message') {!! Form::open(['route' => 'admin.airlines.store']) !!} @include('admin.airlines.fields') {!! Form::close() !!} diff --git a/resources/views/admin/users/edit.blade.php b/resources/views/admin/users/edit.blade.php index d0a0b5f0..e6602f88 100644 --- a/resources/views/admin/users/edit.blade.php +++ b/resources/views/admin/users/edit.blade.php @@ -1,13 +1,27 @@ @extends('admin.app') -@section('title', "Edit \"$user->name\"") @section('title', 'Edit '. $user->name) @section('content')
    - @include('admin.flash.message') {!! Form::model($user, ['route' => ['admin.users.update', $user->id], 'method' => 'patch']) !!} @include('admin.users.fields') {!! Form::close() !!}
    + +
    +
    +
    +

    PIREPs

    +
    + + @include('admin.pireps.table') + +
    +
    + {{ $pireps->links('admin.pagination.default') }} +
    +
    +
    +
    @endsection diff --git a/resources/views/admin/users/fields.blade.php b/resources/views/admin/users/fields.blade.php index 4240839e..29dd58ff 100644 --- a/resources/views/admin/users/fields.blade.php +++ b/resources/views/admin/users/fields.blade.php @@ -57,10 +57,42 @@
    -
    -
    - {!! Form::button('Save', ['type' => 'submit', 'class' => 'btn btn-success']) !!} - Cancel -
    +
    + new api key +   + {!! Form::button('Save', ['type' => 'submit', 'class' => 'btn btn-success']) !!} + Cancel +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    API Key{!! $user->api_key !!}
    Total Flights{!! $user->flights !!}
    Flight Time{!! Utils::minutesToTimeString($user->flight_time) !!}
    IP Address{!! $user->last_ip !!}
    Registered On{!! show_datetime($user->created_at) !!}
    Last Login{!! show_datetime($user->updated_at) !!}
    diff --git a/resources/views/admin/users/show.blade.php b/resources/views/admin/users/show.blade.php index 69c298a4..281add2d 100644 --- a/resources/views/admin/users/show.blade.php +++ b/resources/views/admin/users/show.blade.php @@ -1,5 +1,5 @@ @extends('admin.app') - +@section('title', 'Edit '. $user->name) @section('content')
    diff --git a/resources/views/admin/users/table.blade.php b/resources/views/admin/users/table.blade.php index dbd0bfc8..06d7d8d3 100644 --- a/resources/views/admin/users/table.blade.php +++ b/resources/views/admin/users/table.blade.php @@ -9,13 +9,13 @@ @foreach($users as $user) - {!! $user->name !!} + {!! $user->name !!} {!! $user->email !!} {!! show_date($user->created_at) !!} - @if($user->state == UserState::ACTIVE) + @if($user->state === UserState::ACTIVE) - @elseif($user->state == UserState::PENDING) + @elseif($user->state === UserState::PENDING) @else