From b9f786059e788636ba64ecde3a099732a174813b Mon Sep 17 00:00:00 2001 From: Simeon Keske Date: Sat, 19 Sep 2020 16:54:53 +0200 Subject: [PATCH] create mapping entity --- ...0_09_19_160955_create_http_users_table.php | 35 ++++++++++++++++++ Entities/HttpUser.php | 15 ++++++++ Providers/HttpHeaderAuthServiceProvider.php | 37 ++++++++++++++----- 3 files changed, 77 insertions(+), 10 deletions(-) create mode 100644 Database/Migrations/2020_09_19_160955_create_http_users_table.php create mode 100644 Entities/HttpUser.php diff --git a/Database/Migrations/2020_09_19_160955_create_http_users_table.php b/Database/Migrations/2020_09_19_160955_create_http_users_table.php new file mode 100644 index 0000000..e437e2e --- /dev/null +++ b/Database/Migrations/2020_09_19_160955_create_http_users_table.php @@ -0,0 +1,35 @@ +increments('id'); + + $table->string('remote_id'); + $table->string('user_id'); + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('http_users'); + } +} diff --git a/Entities/HttpUser.php b/Entities/HttpUser.php new file mode 100644 index 0000000..90ce148 --- /dev/null +++ b/Entities/HttpUser.php @@ -0,0 +1,15 @@ +belongsTo('App\User'); + } +} diff --git a/Providers/HttpHeaderAuthServiceProvider.php b/Providers/HttpHeaderAuthServiceProvider.php index fead51d..2b84963 100644 --- a/Providers/HttpHeaderAuthServiceProvider.php +++ b/Providers/HttpHeaderAuthServiceProvider.php @@ -6,6 +6,7 @@ use Illuminate\Support\Facades\Password; use Illuminate\Support\ServiceProvider; use Illuminate\Database\Eloquent\Factory; use App\User; +use Modules\HttpHeaderAuth\Entities; class HttpHeaderAuthServiceProvider extends ServiceProvider { @@ -35,18 +36,34 @@ class HttpHeaderAuthServiceProvider extends ServiceProvider */ public function hooks() { - \Eventy::addAction('middleware.web.custom_handle', function($request) { - if (!$request->user() && isset($_SERVER['HTTP_X_AUTH_EMAIL'])) { - $user = User::where('email',$_SERVER['HTTP_X_AUTH_EMAIL'])->first(); - if (!isset($user)) { - $user = User::create([ - "email" => $_SERVER['HTTP_X_AUTH_EMAIL'], - "first_name" => $_SERVER['HTTP_X_AUTH_USERNAME'], - "last_name" => ".", - "password" => str_random(64) + \Eventy::addAction('middleware.web.custom_handle', function ($request) { + if (!$request->user() && isset($_SERVER['HTTP_X_AUTH_SUBJECT'])) { + $httpuser = Entities\HttpUser::where('remote_id', $_SERVER['HTTP_X_AUTH_SUBJECT'])->first(); + if (!isset($httpuser)) { + $user = User::where('email', $_SERVER['HTTP_X_AUTH_EMAIL'])->first(); + if (!isset($user)) { + $user = User::create([ + "email" => $_SERVER['HTTP_X_AUTH_EMAIL'], + "first_name" => $_SERVER['HTTP_X_AUTH_USERNAME'], + "last_name" => ".", + "password" => str_random(64) + ]); + $user->save(); + } + + $httpuser = Entities\HttpUser::create([ + "remote_id" => $_SERVER['HTTP_X_AUTH_SUBJECT'], + "user_id" => $user, ]); + } else { + $user = $httpuser->user; + $user->email = $_SERVER['HTTP_X_AUTH_EMAIL']; + $user->first_name = $_SERVER['HTTP_X_AUTH_USERNAME']; + + $user->save(); } - if (isset($user->email)) { + + if (isset($user)) { \Auth::login($user); } }