From 4cc08406fa05c083d6bddddf24231802f62ef304 Mon Sep 17 00:00:00 2001 From: Nabeel Shahzad Date: Sun, 31 Dec 2017 13:08:41 -0600 Subject: [PATCH] Regenerate API key --- .../Frontend/ProfileController.php | 18 +++++- app/Models/User.php | 25 ++++++-- app/Routes/web.php | 5 +- resources/views/layouts/default/app.blade.php | 1 - .../layouts/default/flash/message.blade.php | 9 +-- .../layouts/default/profile/index.blade.php | 62 ++++--------------- 6 files changed, 56 insertions(+), 64 deletions(-) diff --git a/app/Http/Controllers/Frontend/ProfileController.php b/app/Http/Controllers/Frontend/ProfileController.php index 8a1ada61..e619b25f 100644 --- a/app/Http/Controllers/Frontend/ProfileController.php +++ b/app/Http/Controllers/Frontend/ProfileController.php @@ -11,6 +11,7 @@ use Illuminate\Support\Facades\Auth; use Jackiedo\Timezonelist\Facades\Timezonelist; use App\Models\User; +use App\Facades\Utils; use App\Repositories\AirlineRepository; use App\Repositories\AirportRepository; use App\Repositories\UserRepository; @@ -108,9 +109,24 @@ class ProfileController extends AppBaseController $req_data['password'] = Hash::make($req_data['password']); } - $user = $this->userRepo->update($req_data, $id); + $this->userRepo->update($req_data, $id); Flash::success('Profile updated successfully!'); return redirect(route('frontend.profile.index')); } + + /** + * Regenerate the user's API key + */ + public function regen_apikey(Request $request) + { + $user = User::find(Auth::user()->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('frontend.profile.index')); + } } diff --git a/app/Models/User.php b/app/Models/User.php index b0b920a4..7cefd931 100755 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -62,21 +62,36 @@ class User extends Authenticatable ]; public static $rules = [ - + 'name' => 'required', + 'email' => 'required|email|unique:users,email', ]; - public function getPilotIdAttribute($value) + /** + * @return string + */ + public function getPilotIdAttribute() { $length = setting('pilots.id_length'); return $this->airline->icao . str_pad($this->id, $length, '0', STR_PAD_LEFT); } - public function getGravatarAttribute($value) + /** + * @return string + */ + public function getIdentAttribute() + { + return $this->getPilotIdAttribute(); + } + + /** + * @return string + */ + public function getGravatarAttribute() { $size = 80; $default = 'https://en.gravatar.com/userimage/12856995/7c7c1da6387853fea65ff74983055386.png'; - return "https://www.gravatar.com/avatar/" . - md5( strtolower( trim( $this->email) ) ) . "?d=" . urlencode( $default ) . "&s=" . $size; + return 'https://www.gravatar.com/avatar/' . + md5(strtolower(trim($this->email))) . '?d=' . urlencode($default ) . '&s=' . $size; } /** diff --git a/app/Routes/web.php b/app/Routes/web.php index 54a18424..22159fcc 100755 --- a/app/Routes/web.php +++ b/app/Routes/web.php @@ -27,8 +27,11 @@ Route::group([ Route::post('flights/save', 'FlightController@save')->name('flights.save'); Route::resource('flights', 'FlightController'); - Route::resource('profile', 'ProfileController'); Route::resource('pireps', 'PirepController'); + + Route::get('profile/regen_apikey', 'ProfileController@regen_apikey') + ->name('profile.regen_apikey'); + Route::resource('profile', 'ProfileController'); }); Auth::routes(); diff --git a/resources/views/layouts/default/app.blade.php b/resources/views/layouts/default/app.blade.php index 66e5038c..989734bf 100644 --- a/resources/views/layouts/default/app.blade.php +++ b/resources/views/layouts/default/app.blade.php @@ -49,7 +49,6 @@ +{{-- + show the details/edit fields only for the currently logged in user +--}} @if(Auth::check() && $user->id === Auth::user()->id)
-
-
- edit +
+
+ new api key +   + edit +
+

your profile

@@ -56,7 +65,7 @@ - + @@ -67,49 +76,4 @@ @endif -{{--
- -
--}} - @endsection
{!! $user->email !!}
API Key

don't share this!

API Key  don't share this! {!! $user->api_key !!}