ClientController.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use Illuminate\Support\Facades\Http;
  5. use App\HttpModels\ClientLobbyModel;
  6. use App\HttpModels\MeetingModel;
  7. use App\Models\AppSession;
  8. use App\Models\MeetingParticipant;
  9. use Cookie;
  10. use App\Models\Lobby;
  11. class ClientController extends Controller
  12. {
  13. // GET /care_months
  14. public function entranceLobby(Request $request, Lobby $lobby) {
  15. if (!$lobby->id || !$lobby->is_stranger_accessible) {
  16. \abort(404);
  17. return;
  18. }
  19. $sessionKey = Cookie::get('sessionKey');
  20. $lobbyModel = new ClientLobbyModel($lobby);
  21. session([
  22. 'lobbyId' => $lobby->id
  23. ]);
  24. // $response = response()->view('client/index',compact('lobbyModel'),200);
  25. if(!$sessionKey){
  26. $loginUrl = env('BACKEND_URL', 'http://localhost:8080') . '/api/session/createStrangerSession';
  27. $httpResponse = Http::asForm()->post($loginUrl)->json();
  28. if(!$httpResponse['success']){
  29. return back()->with("message", $httpResponse['message']);
  30. }
  31. $sessionKey = $httpResponse['data'];
  32. // $cookie = cookie()->forever('sessionKey', $sessionKey, '/');
  33. cookie()->queue('sessionKey', $sessionKey, 1440, '/');
  34. // $response = new \Illuminate\Http\Response(view('client/index'));
  35. // $response->withCookie($cookie);
  36. // return $response;
  37. }
  38. // else {
  39. // return view('client/index');
  40. // }
  41. return view('client/index',compact('lobbyModel','sessionKey'));
  42. }
  43. public function meeting(MeetingParticipant $meetingParticipant)
  44. {
  45. $sessionKey = Cookie::get('sessionKey');
  46. if (!$meetingParticipant || !$meetingParticipant->id || !session('lobbyId')) {
  47. \abort(404);
  48. return;
  49. }
  50. $lobby = Lobby::find(session('lobbyId'));
  51. $lobbyModel = new ClientLobbyModel($lobby);
  52. $session = AppSession::where("session_key",$sessionKey)->first();
  53. $meeting = null;
  54. if ($session->meetingParticipant
  55. // && $session->meetingParticipant->is_active
  56. && $session->meetingParticipant->meeting->is_active
  57. && ($session->meetingParticipant->meeting->lobby_id === $lobby->id || $session->meetingParticipant->meeting->lobby_id == null) ) {
  58. $meeting = new MeetingModel($session->meetingParticipant->meeting);
  59. }
  60. else {
  61. \abort(404);
  62. return;
  63. }
  64. return view('client/meeting',compact('lobbyModel','meeting','sessionKey'));
  65. }
  66. }