From b1c501e2f239ef6dcbf5e55e403834d793c6a0f6 Mon Sep 17 00:00:00 2001
From: Marvin Borner
Date: Sat, 30 Jun 2018 23:44:50 +0200
Subject: Finished websocket integration

---
 app/Http/Controllers/Auth/LoginController.php      |  2 +-
 app/Http/Controllers/Auth/RegisterController.php   |  2 +-
 .../Controllers/Auth/ResetPasswordController.php   |  4 +-
 app/Http/Controllers/SocketController.php          | 44 ++++++++++++++++++++++
 app/Message.php                                    | 17 +++++++++
 app/Providers/AppServiceProvider.php               |  3 +-
 app/User.php                                       |  7 +---
 7 files changed, 68 insertions(+), 11 deletions(-)
 create mode 100644 app/Http/Controllers/SocketController.php
 create mode 100644 app/Message.php

(limited to 'app')

diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php
index b2ea669..191b2b6 100644
--- a/app/Http/Controllers/Auth/LoginController.php
+++ b/app/Http/Controllers/Auth/LoginController.php
@@ -25,7 +25,7 @@ class LoginController extends Controller
      *
      * @var string
      */
-    protected $redirectTo = '/home';
+    protected $redirectTo = '/';
 
     /**
      * Create a new controller instance.
diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php
index e749c07..be65e85 100644
--- a/app/Http/Controllers/Auth/RegisterController.php
+++ b/app/Http/Controllers/Auth/RegisterController.php
@@ -28,7 +28,7 @@ class RegisterController extends Controller
      *
      * @var string
      */
-    protected $redirectTo = '/home';
+    protected $redirectTo = '/';
 
     /**
      * Create a new controller instance.
diff --git a/app/Http/Controllers/Auth/ResetPasswordController.php b/app/Http/Controllers/Auth/ResetPasswordController.php
index cf726ee..f5edc22 100644
--- a/app/Http/Controllers/Auth/ResetPasswordController.php
+++ b/app/Http/Controllers/Auth/ResetPasswordController.php
@@ -16,7 +16,7 @@ class ResetPasswordController extends Controller
     | and uses a simple trait to include this behavior. You're free to
     | explore this trait and override any methods you wish to tweak.
     |
-    */
+     */
 
     use ResetsPasswords;
 
@@ -25,7 +25,7 @@ class ResetPasswordController extends Controller
      *
      * @var string
      */
-    protected $redirectTo = '/home';
+    protected $redirectTo = '/';
 
     /**
      * Create a new controller instance.
diff --git a/app/Http/Controllers/SocketController.php b/app/Http/Controllers/SocketController.php
new file mode 100644
index 0000000..dc49fcf
--- /dev/null
+++ b/app/Http/Controllers/SocketController.php
@@ -0,0 +1,44 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Http\Controllers\Controller;
+use App\Message;
+use Auth;
+use Illuminate\Http\Request;
+use LRedis;
+
+class SocketController extends Controller
+{
+    //Write Message
+    public function writeMessage()
+    {
+        $messages = Message::leftJoin('users', function ($join) {
+            $join->on('messages.user_id', '=', 'users.id');
+        })->select(
+            'users.name', 'messages.message')->orderBy('messages.created_at')
+            ->get();
+
+        return view('writeMessage', compact('messages'));
+    }
+
+    //Send Message
+    public function sendMessage(Request $request)
+    {
+        $user = Auth::user();
+
+        $input = $request->all();
+        $redis = LRedis::connection();
+
+        if (!isset($input['message']) || trim($input['message']) === '') {
+        } else {
+            Message::create([
+                'user_id' => $user->id,
+                'message' => $input['message'],
+            ]);
+
+            $data = ['message' => $input['message'], 'user' => $user->name];
+            $redis->publish('message', json_encode($data));
+        }
+    }
+}
diff --git a/app/Message.php b/app/Message.php
new file mode 100644
index 0000000..79a1afd
--- /dev/null
+++ b/app/Message.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace App;
+
+use Illuminate\Database\Eloquent\Model;
+
+class Message extends Model
+{
+    /**
+     * The attributes that are mass assignable.
+     *
+     * @var array
+     */
+    protected $fillable = [
+        'user_id', 'message',
+    ];
+}
diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php
index 35471f6..706c003 100644
--- a/app/Providers/AppServiceProvider.php
+++ b/app/Providers/AppServiceProvider.php
@@ -3,6 +3,7 @@
 namespace App\Providers;
 
 use Illuminate\Support\ServiceProvider;
+use Illuminate\Support\Facades\Schema;
 
 class AppServiceProvider extends ServiceProvider
 {
@@ -13,7 +14,7 @@ class AppServiceProvider extends ServiceProvider
      */
     public function boot()
     {
-        //
+        Schema::defaultStringLength(191);
     }
 
     /**
diff --git a/app/User.php b/app/User.php
index bfd96a6..870d27c 100644
--- a/app/User.php
+++ b/app/User.php
@@ -1,14 +1,10 @@
 <?php
-
 namespace App;
-
 use Illuminate\Notifications\Notifiable;
 use Illuminate\Foundation\Auth\User as Authenticatable;
-
 class User extends Authenticatable
 {
     use Notifiable;
-
     /**
      * The attributes that are mass assignable.
      *
@@ -17,7 +13,6 @@ class User extends Authenticatable
     protected $fillable = [
         'name', 'email', 'password',
     ];
-
     /**
      * The attributes that should be hidden for arrays.
      *
@@ -26,4 +21,4 @@ class User extends Authenticatable
     protected $hidden = [
         'password', 'remember_token',
     ];
-}
+}
\ No newline at end of file
-- 
cgit v1.2.3