ソースを参照

Update AuthLogin listener

Daniel Supernault 6 年 前
コミット
c27c751543
1 ファイル変更47 行追加0 行削除
  1. 47 0
      app/Listeners/AuthLogin.php

+ 47 - 0
app/Listeners/AuthLogin.php

@@ -31,9 +31,45 @@ class AuthLogin
             return;
         }
 
+        $this->userProfile($user);
         $this->userSettings($user);
         $this->userState($user);
         $this->userDevice($user);
+        $this->userProfileId($user);
+    }
+
+    protected function userProfile($user)
+    {
+        if (empty($user->profile)) {
+            $profile = DB::transaction(function() use($user) {
+                $profile = new Profile();
+                $profile->user_id = $user->id;
+                $profile->username = $user->username;
+                $profile->name = $user->name;
+                $pkiConfig = [
+                    'digest_alg'       => 'sha512',
+                    'private_key_bits' => 2048,
+                    'private_key_type' => OPENSSL_KEYTYPE_RSA,
+                ];
+                $pki = openssl_pkey_new($pkiConfig);
+                openssl_pkey_export($pki, $pki_private);
+                $pki_public = openssl_pkey_get_details($pki);
+                $pki_public = $pki_public['key'];
+
+                $profile->private_key = $pki_private;
+                $profile->public_key = $pki_public;
+                $profile->save();
+                return $profile;
+            });
+            DB::transaction(function() use($user, $profile) {
+                $user = User::findOrFail($user->id);
+                $user->profile_id = $profile->id;
+                $user->save();
+
+                CreateAvatar::dispatch($profile);
+            });
+
+        }
     }
 
     protected function userSettings($user)
@@ -88,4 +124,15 @@ class AuthLogin
             ]);
         });
     }
+
+    protected function userProfileId($user)
+    {
+        if($user->profile_id == null) {
+            DB::transaction(function() use($user) {
+                $profile = $user->profile;
+                $user->profile_id = $profile->id;
+                $user->save();
+            });
+        }
+    }
 }