From a767d6928679f11febd68a76a65ff1ce172ecd6e Mon Sep 17 00:00:00 2001 From: Dee Date: Mon, 8 May 2017 22:59:59 +0300 Subject: [PATCH 1/7] Laravel 5.4 and related changes New CDN for socket.io Tests now using database transactions --- app/Commands/LoginUserCommand.php | 58 ------ app/Commands/RegisterUserCommand.php | 85 -------- app/Commands/RemoveFriendCommand.php | 59 ------ app/Events/FriendRequestWasSent.php | 4 +- app/Events/UserWasRegistered.php | 4 +- app/Exceptions/Handler.php | 41 +++- app/Feed.php | 4 +- app/Handlers/Events/.gitkeep | 0 app/Http/Controllers/ChatController.php | 4 +- app/Http/Controllers/ChatStatusController.php | 19 +- app/Http/Controllers/Controller.php | 16 +- app/Http/Controllers/FeedController.php | 23 +-- app/Http/Controllers/FriendController.php | 53 ++--- .../Controllers/FriendRequestController.php | 20 +- app/Http/Controllers/MessageController.php | 25 ++- .../Controllers/MessageResponseController.php | 23 ++- .../Controllers/RegistrationController.php | 31 ++- app/Http/Controllers/SessionController.php | 35 ++-- app/Http/Controllers/UserController.php | 5 +- app/Http/Kernel.php | 39 ++-- app/Http/Middleware/CustomVerifyCsrfToken.php | 3 +- app/Http/Middleware/EncryptCookies.php | 17 ++ .../Middleware/RedirectIfAuthenticated.php | 60 ++---- app/{Commands => Jobs}/Command.php | 2 +- app/{Commands => Jobs}/CreateFeedCommand.php | 7 +- .../CreateFriendRequestCommand.php | 8 +- .../CreateMessageCommand.php | 8 +- .../CreateMessageResponseCommand.php | 7 +- app/Jobs/LoginUserCommand.php | 51 +++++ app/{Commands => Jobs}/LogoutUserCommand.php | 17 +- app/Jobs/RemoveFriendCommand.php | 59 ++++++ .../SendChatMessageCommand.php | 8 +- .../UpdateChatStatusCommand.php | 15 +- app/{Handlers => Listeners}/Commands/.gitkeep | 0 .../Events/EmailFriendRequest.php | 23 +-- .../Events/EmailRegistrationConfirmation.php | 13 +- app/Mail/FriendRequest.php | 41 ++++ app/Mail/Welcome.php | 34 +++ app/Mailers/Mailer.php | 39 ---- app/Mailers/UserMailer.php | 43 ---- app/MessageResponse.php | 2 +- app/Providers/AuthServiceProvider.php | 27 +++ app/Providers/BroadcastServiceProvider.php | 26 +++ app/Providers/BusServiceProvider.php | 34 --- app/Providers/EventServiceProvider.php | 8 +- app/Providers/RouteServiceProvider.php | 114 ++++++---- .../Feed/EloquentFeedRepository.php | 6 +- .../EloquentFriendRequestRepository.php | 2 +- app/User.php | 35 ++-- bootstrap/autoload.php | 2 +- bootstrap/cache/.gitignore | 2 + composer.json | 21 +- config/app.php | 33 +-- config/auth.php | 158 ++++++++------ config/broadcasting.php | 58 ++++++ config/compile.php | 2 - config/mail.php | 20 +- config/queue.php | 6 +- database/seeds/.gitkeep | 0 database/seeds/FriendRequestTableSeeder.php | 2 +- .../seeds/MessageResponseUserTableSeeder.php | 2 +- .../seeds/MessageResponsesTableSeeder.php | 4 +- database/seeds/MessageUserTableSeeder.php | 2 +- database/seeds/MessagesTableSeeder.php | 2 +- .../email-alerts/friend-request.blade.php | 2 +- .../registration-confirm.blade.php | 0 resources/views/layouts/default.blade.php | 2 +- .../views/layouts/partials/nav.blade.php | 4 +- resources/views/messages/show.blade.php | 2 +- .../users/partials/profile-section.blade.php | 4 +- resources/views/users/show.blade.php | 2 +- resources/views/vendor/.gitkeep | 0 routes/api.php | 19 ++ routes/console.php | 18 ++ app/Http/routes.php => routes/web.php | 0 tests/BrowserKitTestCase.php | 25 +++ tests/ExampleTest.php | 0 tests/TestCase.php | 37 ++-- tests/commands/TestCreateFeedCommand.php | 9 +- .../TestCreateFriendRequestCommand.php | 11 +- tests/commands/TestCreateMessageCommand.php | 8 +- tests/commands/TestLoginUserCommand.php | 34 --- tests/commands/TestLogoutUserCommand.php | 10 +- tests/commands/TestRegisterUserCommand.php | 33 --- tests/commands/TestRemoveFriendCommand.php | 14 +- tests/controllers/TestFeedController.php | 2 +- tests/controllers/TestFriendController.php | 30 ++- .../TestFriendRequestController.php | 4 +- tests/controllers/TestMessageController.php | 4 +- .../TestRegistrationController.php | 31 +++ tests/controllers/TestSessionController.php | 16 +- tests/controllers/TestUserController.php | 4 +- tests/events/TestFriendRequestWasSent.php | 4 +- tests/events/TestUserWasRegistered.php | 4 +- tests/factories/factories.php | 0 tests/functional/FriendRequestTest.php | 6 +- tests/functional/LoginTest.php | 19 +- tests/functional/MessagesTest.php | 10 +- tests/functional/PostFeedTest.php | 4 +- tests/functional/RegistrationTest.php | 100 ++++----- tests/handlers/TestEmailFriendRequest.php | 4 +- .../TestEmailRegistrationConfirmation.php | 6 +- tests/logs/output.txt | 194 ------------------ tests/repositories/TestFeedRepository.php | 4 +- .../TestFriendRequestRepository.php | 2 + tests/repositories/TestMessageRepository.php | 4 +- tests/repositories/TestUserRepository.php | 2 + 107 files changed, 1141 insertions(+), 1118 deletions(-) delete mode 100644 app/Commands/LoginUserCommand.php delete mode 100644 app/Commands/RegisterUserCommand.php delete mode 100644 app/Commands/RemoveFriendCommand.php mode change 100644 => 100755 app/Events/FriendRequestWasSent.php mode change 100644 => 100755 app/Events/UserWasRegistered.php mode change 100644 => 100755 app/Exceptions/Handler.php delete mode 100644 app/Handlers/Events/.gitkeep mode change 100644 => 100755 app/Http/Controllers/FeedController.php mode change 100644 => 100755 app/Http/Controllers/FriendController.php mode change 100644 => 100755 app/Http/Controllers/FriendRequestController.php mode change 100644 => 100755 app/Http/Controllers/MessageController.php mode change 100644 => 100755 app/Http/Controllers/UserController.php mode change 100644 => 100755 app/Http/Kernel.php create mode 100755 app/Http/Middleware/EncryptCookies.php mode change 100644 => 100755 app/Http/Middleware/RedirectIfAuthenticated.php rename app/{Commands => Jobs}/Command.php (53%) rename app/{Commands => Jobs}/CreateFeedCommand.php (83%) rename app/{Commands => Jobs}/CreateFriendRequestCommand.php (82%) rename app/{Commands => Jobs}/CreateMessageCommand.php (90%) rename app/{Commands => Jobs}/CreateMessageResponseCommand.php (92%) create mode 100644 app/Jobs/LoginUserCommand.php rename app/{Commands => Jobs}/LogoutUserCommand.php (75%) create mode 100644 app/Jobs/RemoveFriendCommand.php rename app/{Commands => Jobs}/SendChatMessageCommand.php (80%) rename app/{Commands => Jobs}/UpdateChatStatusCommand.php (80%) mode change 100644 => 100755 rename app/{Handlers => Listeners}/Commands/.gitkeep (100%) rename app/{Handlers => Listeners}/Events/EmailFriendRequest.php (51%) mode change 100644 => 100755 rename app/{Handlers => Listeners}/Events/EmailRegistrationConfirmation.php (62%) mode change 100644 => 100755 create mode 100644 app/Mail/FriendRequest.php create mode 100644 app/Mail/Welcome.php delete mode 100644 app/Mailers/Mailer.php delete mode 100644 app/Mailers/UserMailer.php create mode 100644 app/Providers/AuthServiceProvider.php create mode 100644 app/Providers/BroadcastServiceProvider.php delete mode 100644 app/Providers/BusServiceProvider.php mode change 100644 => 100755 app/Providers/EventServiceProvider.php mode change 100644 => 100755 app/Providers/RouteServiceProvider.php mode change 100644 => 100755 app/Repositories/Feed/EloquentFeedRepository.php mode change 100644 => 100755 app/Repositories/FriendRequest/EloquentFriendRequestRepository.php mode change 100644 => 100755 app/User.php create mode 100644 bootstrap/cache/.gitignore mode change 100644 => 100755 composer.json mode change 100644 => 100755 config/app.php create mode 100644 config/broadcasting.php mode change 100644 => 100755 config/mail.php mode change 100644 => 100755 config/queue.php mode change 100644 => 100755 database/seeds/.gitkeep mode change 100644 => 100755 database/seeds/FriendRequestTableSeeder.php mode change 100644 => 100755 database/seeds/MessageResponseUserTableSeeder.php mode change 100644 => 100755 database/seeds/MessageResponsesTableSeeder.php mode change 100644 => 100755 database/seeds/MessageUserTableSeeder.php mode change 100644 => 100755 database/seeds/MessagesTableSeeder.php mode change 100644 => 100755 resources/views/email-alerts/friend-request.blade.php mode change 100644 => 100755 resources/views/email-alerts/registration-confirm.blade.php mode change 100644 => 100755 resources/views/layouts/default.blade.php mode change 100644 => 100755 resources/views/layouts/partials/nav.blade.php mode change 100644 => 100755 resources/views/messages/show.blade.php mode change 100644 => 100755 resources/views/users/partials/profile-section.blade.php mode change 100644 => 100755 resources/views/users/show.blade.php mode change 100644 => 100755 resources/views/vendor/.gitkeep create mode 100755 routes/api.php create mode 100755 routes/console.php rename app/Http/routes.php => routes/web.php (100%) mode change 100644 => 100755 create mode 100755 tests/BrowserKitTestCase.php mode change 100644 => 100755 tests/ExampleTest.php mode change 100644 => 100755 tests/TestCase.php mode change 100644 => 100755 tests/commands/TestCreateFeedCommand.php mode change 100644 => 100755 tests/commands/TestCreateFriendRequestCommand.php mode change 100644 => 100755 tests/commands/TestCreateMessageCommand.php delete mode 100644 tests/commands/TestLoginUserCommand.php mode change 100644 => 100755 tests/commands/TestLogoutUserCommand.php delete mode 100644 tests/commands/TestRegisterUserCommand.php mode change 100644 => 100755 tests/commands/TestRemoveFriendCommand.php mode change 100644 => 100755 tests/controllers/TestFeedController.php mode change 100644 => 100755 tests/controllers/TestFriendController.php mode change 100644 => 100755 tests/controllers/TestFriendRequestController.php mode change 100644 => 100755 tests/controllers/TestMessageController.php mode change 100644 => 100755 tests/controllers/TestRegistrationController.php mode change 100644 => 100755 tests/controllers/TestSessionController.php mode change 100644 => 100755 tests/controllers/TestUserController.php mode change 100644 => 100755 tests/events/TestFriendRequestWasSent.php mode change 100644 => 100755 tests/events/TestUserWasRegistered.php mode change 100644 => 100755 tests/factories/factories.php mode change 100644 => 100755 tests/functional/FriendRequestTest.php mode change 100644 => 100755 tests/functional/LoginTest.php mode change 100644 => 100755 tests/functional/MessagesTest.php mode change 100644 => 100755 tests/functional/PostFeedTest.php mode change 100644 => 100755 tests/functional/RegistrationTest.php mode change 100644 => 100755 tests/handlers/TestEmailFriendRequest.php mode change 100644 => 100755 tests/handlers/TestEmailRegistrationConfirmation.php delete mode 100644 tests/logs/output.txt mode change 100644 => 100755 tests/repositories/TestFeedRepository.php mode change 100644 => 100755 tests/repositories/TestFriendRequestRepository.php mode change 100644 => 100755 tests/repositories/TestMessageRepository.php mode change 100644 => 100755 tests/repositories/TestUserRepository.php diff --git a/app/Commands/LoginUserCommand.php b/app/Commands/LoginUserCommand.php deleted file mode 100644 index bcda48d..0000000 --- a/app/Commands/LoginUserCommand.php +++ /dev/null @@ -1,58 +0,0 @@ -email = $email; - - $this->password = $password; - - $this->socketClient = new SocketClient; - } - /** - * Execute the command. - * - * @return void - */ - public function handle() - { - if(! Auth::attempt(['email' => $this->email, 'password' => $this->password])) return false; - $user = Auth::user(); - $friendsUserIds = $user->friends()->where('onlinestatus', 1)->lists('requester_id'); - $relatedToId = $user->id; - $clientCode = 22; - $message = true; - $this->socketClient->updateChatStatusBar($friendsUserIds, $clientCode, $relatedToId, $message); - $user->updateOnlineStatus(1); - - return true; - } -} diff --git a/app/Commands/RegisterUserCommand.php b/app/Commands/RegisterUserCommand.php deleted file mode 100644 index dcef357..0000000 --- a/app/Commands/RegisterUserCommand.php +++ /dev/null @@ -1,85 +0,0 @@ -firstname = $firstname; - $this->lastname = $lastname; - $this->email = $email; - $this->password = $password; - $this->password_confirmation = $password_confirmation; - $this->gender = $gender; - $this->month = $month; - $this->day = $day; - $this->year = $year; - $this->profileimage = $profileimage; - $this->profileImagePath = $profileImagePath; - $this->birthday = $birthday; - } - /** - * Handle the request - * @param UserRepository $userRepository - * - * return void - */ - public function handle() - { - $user = User::register( - $this->firstname, - $this->lastname, - $this->email, - bcrypt($this->password), - $this->gender, - $this->birthday, - $this->profileImagePath - ); - - $user->save(); - - event(new UserWasRegistered($user)); - - Auth::login($user); - - $user->updateOnlineStatus(1); - - return $user; - } -} \ No newline at end of file diff --git a/app/Commands/RemoveFriendCommand.php b/app/Commands/RemoveFriendCommand.php deleted file mode 100644 index 27f69f5..0000000 --- a/app/Commands/RemoveFriendCommand.php +++ /dev/null @@ -1,59 +0,0 @@ -userId = $userId; - - $this->socketClient = new SocketClient; - } - - /** - * Execute the command. - * - * @param FriendRepository $friendRepository - * - * @return void - */ - public function handle(UserRepository $userRepository) - { - $otherUser = $userRepository->findById($this->userId); - - $currentUser = Auth::user(); - - $currentUser->finishFriendshipWith($this->userId); - - $otherUser->finishFriendshipWith(Auth::user()->id); - - $this->socketClient->updateChatListFriendRemoved($otherUser->id, 24, $currentUser->id, $otherUser->friends()->count()); - - return true; - - } -} diff --git a/app/Events/FriendRequestWasSent.php b/app/Events/FriendRequestWasSent.php old mode 100644 new mode 100755 index 8d9ab61..4f638ee --- a/app/Events/FriendRequestWasSent.php +++ b/app/Events/FriendRequestWasSent.php @@ -1,4 +1,6 @@ -expectsJson()) { + return response()->json(['error' => 'Unauthenticated.'], 401); + } + + return redirect()->guest('login'); + } + } diff --git a/app/Feed.php b/app/Feed.php index 3108267..0fbd79f 100644 --- a/app/Feed.php +++ b/app/Feed.php @@ -13,11 +13,11 @@ class Feed extends Model { /** * A feed belongs to a User. * - * @return User + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ public function user() { - return $this->belongsTo('App\User'); + return $this->belongsTo(User::class); } /** diff --git a/app/Handlers/Events/.gitkeep b/app/Handlers/Events/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/app/Http/Controllers/ChatController.php b/app/Http/Controllers/ChatController.php index 1adeef3..3e00556 100644 --- a/app/Http/Controllers/ChatController.php +++ b/app/Http/Controllers/ChatController.php @@ -5,7 +5,7 @@ use App\Repositories\User\UserRepository; use Illuminate\Http\Request; use Validator; -use App\Commands\SendChatMessageCommand; +use App\jobs\SendChatMessageCommand; class ChatController extends Controller { @@ -34,7 +34,7 @@ public function sendMessage(Request $request, UserRepository $userRepository) } else { - $this->dispatchFrom(SendChatMessageCommand::class, $request); + $this->dispatch( new SendChatMessageCommand( $request->get('receiverId'), $request->get('message') ) ); return response()->json(['response' => 'success', 'availableToChat' => $userRepository->findById($request->receiverId)->chatstatus]); } diff --git a/app/Http/Controllers/ChatStatusController.php b/app/Http/Controllers/ChatStatusController.php index c91aeb5..21ff4cf 100644 --- a/app/Http/Controllers/ChatStatusController.php +++ b/app/Http/Controllers/ChatStatusController.php @@ -4,7 +4,7 @@ use App\Http\Controllers\Controller; use Validator; use Illuminate\Http\Request; -use App\Commands\UpdateChatStatusCommand; +use App\Jobs\UpdateChatStatusCommand; class ChatStatusController extends Controller { @@ -18,18 +18,19 @@ public function __construct() } - /** - * Update current user's chat status. - * - * @param Request $request - * - * @return Mixed - */ + /** + * + * Update current user's chat status. + * + * @param Request $request + */ public function update(Request $request) { $validator = Validator::make($request->all(), ['chatStatus' => 'required']); + if($validator->fails()) return abort(403); - $this->dispatchFrom(UpdateChatStatusCommand::class, $request); + + $this->dispatch( new UpdateChatStatusCommand( $request->get('chatStatus') ) ); } } diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index 27b3f45..51e979b 100644 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -1,11 +1,13 @@ -currentUser = Auth::user(); $this->middleware('auth'); } @@ -34,7 +34,7 @@ public function __construct() */ public function index(FeedRepository $feedRepository) { - $user = $this->currentUser; + $user = Auth::user(); $feeds = $feedRepository->getPublishedByUserAndFriends($user); @@ -59,7 +59,7 @@ public function more(Request $request, FeedRepository $feedRepository) if($validator->fails()) return abort(403); - $feeds = $feedRepository->getPublishedByUserAndFriendsAjax($this->currentUser, $request->skipQty); + $feeds = $feedRepository->getPublishedByUserAndFriendsAjax(Auth::user(), $request->skipQty); return response()->json(['feeds' => $feeds]); } @@ -71,17 +71,16 @@ public function more(Request $request, FeedRepository $feedRepository) */ public function store(Request $request) { + $user = Auth::user(); - $validator = Validator::make($request->all(), ['body' => 'required']); + $validator = Validator::make($request->all(), ['body' => 'required']); if($validator->fails()) return response()->json(['response' => 'failed']); - $feed = $this->dispatchFrom(CreateFeedCommand::class, $request, [ - 'body' => $request->body, - 'posterFirstname' => $this->currentUser->firstname, - 'posterProfileImage' => $this->currentUser->profileimage - ]); - + $feed = Feed::publish($request->body, $user->firstname, $user->profileimage); + + $user->feeds()->save($feed); + return response()->json([ 'response' => 'success', 'userProfileImage' => $feed->poster_profile_image, diff --git a/app/Http/Controllers/FriendController.php b/app/Http/Controllers/FriendController.php old mode 100644 new mode 100755 index 178461b..03a795b --- a/app/Http/Controllers/FriendController.php +++ b/app/Http/Controllers/FriendController.php @@ -2,22 +2,16 @@ use App\Http\Requests; use App\Http\Controllers\Controller; -use Auth; use Illuminate\Http\Request; use App\Repositories\User\UserRepository; -use App\Commands\RemoveFriendCommand; +use App\Jobs\RemoveFriendCommand; +use Illuminate\Support\Facades\Auth; use Validator; use App\FriendRequest; class FriendController extends Controller { - - public function __construct() - { - $this->currentUser = Auth::user(); - } - /** * Display a listing of the resource. * @@ -25,7 +19,7 @@ public function __construct() */ public function index(UserRepository $repository) { - $user = $this->currentUser; + $user = Auth::user(); $friends = $repository->findByIdWithFriends($user->id); @@ -43,19 +37,21 @@ public function store(Request $request, UserRepository $repository) { $validator = Validator::make($request->all(), ['userId' => 'required']); + $currentUser = Auth::user(); + if($validator->fails()) { return response()->json(['response' => 'failed', 'message' => 'Something went wrong please try again.']); } else { - $this->currentUser->createFriendShipWith($request->userId); + $currentUser->createFriendShipWith($request->userId); - $repository->findById($request->userId)->createFriendShipWith($this->currentUser->id); + $repository->findById($request->userId)->createFriendShipWith($currentUser->id); - FriendRequest::where('user_id', $this->currentUser->id)->where('requester_id', $request->userId)->delete(); + FriendRequest::where('user_id', $currentUser->id)->where('requester_id', $request->userId)->delete(); - $friendRequestCount = $this->currentUser->friendRequests()->count(); + $friendRequestCount = $currentUser->friendRequests()->count(); return response()->json(['response' => 'success', 'count' => $friendRequestCount, 'message' => 'Friend request accepted.']); } @@ -63,15 +59,16 @@ public function store(Request $request, UserRepository $repository) } - -/** - * Terminate friendship between 2 users. - * - * @param Request $request - * - * @return Response - */ - public function destroy(Request $request) + /** + * Terminate friendship between 2 users. + * + * @param Request $request + * + * @param UserRepository $userRepository + * + * @return Response + */ + public function destroy(Request $request, UserRepository $userRepository) { $validator = Validator::make($request->all(), ['userId' => 'required']); @@ -81,9 +78,17 @@ public function destroy(Request $request) } else { - $this->dispatchFrom(RemoveFriendCommand::class, $request, ['userId' => $request->userId]); + $otherUser = $userRepository->findById($request->get('userId')); + + $currentUser = Auth::user(); + + $currentUser->finishFriendshipWith($request->get('userId')); + + $otherUser->finishFriendshipWith(Auth::user()->id); + + $this->dispatch( new RemoveFriendCommand($currentUser, $otherUser) ); - $friendsCount = $this->currentUser->friends()->count(); + $friendsCount = $currentUser->friends()->count(); return response()->json(['response' => 'success', 'count' => $friendsCount, 'message' => 'This friend has been removed']); } diff --git a/app/Http/Controllers/FriendRequestController.php b/app/Http/Controllers/FriendRequestController.php old mode 100644 new mode 100755 index 6a8f4f5..61312de --- a/app/Http/Controllers/FriendRequestController.php +++ b/app/Http/Controllers/FriendRequestController.php @@ -4,7 +4,7 @@ use App\Http\Controllers\Controller; use Validator; use Illuminate\Http\Request; -use App\Commands\CreateFriendRequestCommand; +use App\Jobs\CreateFriendRequestCommand; use App\Repositories\FriendRequest\FriendRequestRepository; use App\Repositories\User\UserRepository; use Illuminate\Pagination\LengthAwarePaginator; @@ -14,10 +14,6 @@ class FriendRequestController extends Controller { - /** - * @var User - */ - protected $currentUser; /** * Create a new instance of FriendRequestController. @@ -25,8 +21,6 @@ class FriendRequestController extends Controller { public function __construct() { $this->middleware('auth'); - - $this->currentUser = Auth::user(); } /** @@ -36,7 +30,7 @@ public function __construct() */ public function index(FriendRequestRepository $friendRequestRepository, UserRepository $userRepository) { - $user = $this->currentUser; + $user = Auth::user(); $requesterIds = $friendRequestRepository->getIdsThatSentRequestToCurrentUser($user->id); @@ -74,7 +68,7 @@ public function store(Request $request) } else { - $this->dispatchFrom(CreateFriendRequestCommand::class, $request, [ 'requestedId' => $request->userId ]); + $this->dispatch( new CreateFriendRequestCommand($request->userId) ); return response()->json(['response' => 'success', 'message' => 'Friend request submitted']); @@ -93,15 +87,17 @@ public function destroy(Request $request) { $validator = Validator::make($request->all(), ['userId' => 'required']); + $currentUser = Auth::user(); + if($validator->fails()) { return response()->json(['response' => 'failed', 'message' => 'Something went wrong please try again.']); } else { - FriendRequest::where('user_id', $this->currentUser->id)->where('requester_id', $request->userId)->delete(); + FriendRequest::where('user_id', $currentUser->id)->where('requester_id', $request->userId)->delete(); - $friendRequestCount = $this->currentUser->friendRequests()->count(); + $friendRequestCount = $currentUser->friendRequests()->count(); return response()->json(['response' => 'success', 'count' => $friendRequestCount, 'message' => 'friend request removed']); } @@ -109,4 +105,6 @@ public function destroy(Request $request) } + + } diff --git a/app/Http/Controllers/MessageController.php b/app/Http/Controllers/MessageController.php old mode 100644 new mode 100755 index 98ca082..c5b3a8a --- a/app/Http/Controllers/MessageController.php +++ b/app/Http/Controllers/MessageController.php @@ -4,7 +4,7 @@ use App\Http\Controllers\Controller; use App\Repositories\User\UserRepository; use App\Repositories\Message\MessageRepository; -use App\Commands\CreateMessageCommand; +use App\jobs\CreateMessageCommand; use Illuminate\Http\Request; use Validator; use Auth; @@ -15,7 +15,6 @@ class MessageController extends Controller { public function __construct() { - $this->currentUser = Auth::user(); $this->middleware('auth'); } @@ -27,9 +26,9 @@ public function __construct() */ public function index(UserRepository $userRepository) { - $user = $this->currentUser; + $user = Auth::user(); - $messages = $userRepository->findByIdWithMessages($this->currentUser->id); + $messages = $userRepository->findByIdWithMessages($user->id); return view('messages.index', compact('messages', 'user')); @@ -42,7 +41,7 @@ public function index(UserRepository $userRepository) */ public function create($id, UserRepository $userRepository) { - $currentUser = $this->currentUser; + $currentUser = Auth::user(); $user = $userRepository->findById($id); @@ -65,7 +64,13 @@ public function store(Request $request) } else { - $this->dispatchFrom(CreateMessageCommand::class, $request); + $this->dispatch(new CreateMessageCommand( + $request->get('receiverId'), + $request->get('body'), + $request->get('senderId'), + $request->get('senderProfileImage'), + $request->get('senderName') + ) ); return response()->json(['response' => 'success', 'message' => 'Your message was sent.']); } @@ -81,7 +86,7 @@ public function store(Request $request) */ public function show($id, MessageRepository $messageRepository) { - $user = $this->currentUser; + $user = Auth::user(); $message = $messageRepository->findByIdWithMessageResponses($id); @@ -100,11 +105,13 @@ public function destroy(Request $request) { $validator = Validator::make($request->all(), ['messageId' => 'required']); + $user = Auth::user(); + if($validator->fails()) return abort(403); - $this->currentUser->messages()->detach($request->messageId); + $user->messages()->detach($request->messageId); - $messageCount = $this->currentUser->messages()->count(); + $messageCount = $user->messages()->count(); return response()->json(['count' => $messageCount ]); } diff --git a/app/Http/Controllers/MessageResponseController.php b/app/Http/Controllers/MessageResponseController.php index 5aa0c70..036b097 100644 --- a/app/Http/Controllers/MessageResponseController.php +++ b/app/Http/Controllers/MessageResponseController.php @@ -4,15 +4,16 @@ use App\Http\Controllers\Controller; use DB; use Illuminate\Http\Request; -use App\Commands\CreateMessageResponseCommand; +use App\Jobs\CreateMessageResponseCommand; use Auth; use App; use Validator; class MessageResponseController extends Controller { + protected $currentUser; - /** + /** * Create a new instance of ResponsesController */ public function __construct() @@ -35,17 +36,17 @@ public function store(Request $request) if($validator->fails()) return response()->json(['response' => 'failed']); - $this->dispatchFrom(CreateMessageResponseCommand::class, $request, [ + $this->dispatch( new CreateMessageResponseCommand( - 'receiverId' => $request->receiverId, - 'body' => $request->body, - 'senderId' => $request->senderId, - 'senderProfileImage' => $request->senderProfileImage, - 'senderName' => $request->senderName, - 'messageId' => $request->messageId, - 'currentUser' => $this->currentUser + $request->receiverId, + $request->body, + $request->senderId, + $request->senderProfileImage, + $request->senderName, + $request->messageId, + $this->currentUser - ]); + )); return response()->json(['response' => 'success', 'message' => 'Your message was sent.']); } diff --git a/app/Http/Controllers/RegistrationController.php b/app/Http/Controllers/RegistrationController.php index 9422be6..458e4af 100644 --- a/app/Http/Controllers/RegistrationController.php +++ b/app/Http/Controllers/RegistrationController.php @@ -1,13 +1,17 @@ -execute($request->file('profileimage'), 'images/profileimages/', 180, 180); + $newUserProfileImagePath = $profileImagePath = app('ProcessImage')->execute($request->file('profileimage'), public_path('images/profileimages'), 180, 180); $newUserBirthday = Carbon::createFromDate($request->year, $request->month, $request->day); - $newUser = $this->dispatchFrom(RegisterUserCommand::class, $request, [ - 'birthday' => $newUserBirthday, - 'profileImagePath' => $newUserProfileImagePath - ]); + $user = User::register( + $request->get('firstname'), + $request->get('lastname'), + $request->get('email'), + bcrypt($request->get('password')), + $request->get('gender'), + $newUserBirthday, + $newUserProfileImagePath + ); + + $user->save(); + + event(new UserWasRegistered($user)); + + Auth::login($user); + + $user->updateOnlineStatus(1); return redirect()->route('feeds_path'); diff --git a/app/Http/Controllers/SessionController.php b/app/Http/Controllers/SessionController.php index 72c10fd..b1fcc40 100644 --- a/app/Http/Controllers/SessionController.php +++ b/app/Http/Controllers/SessionController.php @@ -2,14 +2,14 @@ use App\Http\Requests\CreateSessionRequest; use App\Http\Controllers\Controller; -use App\Commands\LoginUserCommand; -use App\Commands\LogoutUserCommand; -use Auth; +use App\Jobs\LoginUserCommand; +use App\Jobs\LogoutUserCommand; + use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; class SessionController extends Controller { - /** * Store a new session. * @@ -17,25 +17,26 @@ class SessionController extends Controller { */ public function store(CreateSessionRequest $request) { - $response = $this->dispatchFrom(LoginUserCommand::class, $request); + $authResult = Auth::attempt(['email' => $request->get('email'), 'password' => $request->get('password')]); + + if( $authResult ) + { + $this->dispatch(new LoginUserCommand(Auth::user())); + + return redirect()->route('feeds_path')->with('welcome-message', 'You are now logged in.'); + } - if($response) return redirect()->route('feeds_path')->with('welcome-message', 'You are now logged in.'); - return redirect()->back()->withInput()->with('error', 'We were unable to sign you in. Please check your credentials and try again.'); } - - /** - * Logout the user. - * - * @param Request $request - * - * @return Response - */ - public function destroy(Request $request) + /** + * Logout the user. + * @return array + */ + public function destroy() { - $this->dispatchFrom(LogoutUserCommand::class, $request, ['userId' => Auth::user()->id]); + $this->dispatch(new LogoutUserCommand(Auth::user()->id)); return response()->json(['response' => 'success']); } diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php old mode 100644 new mode 100755 index 7b5ce5f..f46a1ea --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -19,7 +19,6 @@ public function __construct() { $this->middleware('auth'); - $this->currentUser = Auth::user(); } @@ -32,7 +31,7 @@ public function __construct() */ public function index(Request $request, UserRepository $userRepository) { - $user = $this->currentUser; + $user = Auth::user(); $users = $userRepository->getPaginated(null, $request->firstname); @@ -49,7 +48,7 @@ public function index(Request $request, UserRepository $userRepository) */ public function show($id, UserRepository $userRepository, FeedRepository $feedRepository) { - $currentUser = $this->currentUser; + $currentUser = Auth::user(); $user = $userRepository->findById($id); diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php old mode 100644 new mode 100755 index 834699b..1b625a9 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -9,25 +9,36 @@ class Kernel extends HttpKernel { * * @var array */ - protected $middleware = [ - 'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode', - 'Illuminate\Cookie\Middleware\EncryptCookies', - 'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse', - 'Illuminate\Session\Middleware\StartSession', - 'Illuminate\View\Middleware\ShareErrorsFromSession', - // 'App\Http\Middleware\VerifyCsrfToken', - 'App\Http\Middleware\CustomVerifyCsrfToken', - ]; + + protected $middlewareGroups = [ + 'web' => [ + \App\Http\Middleware\EncryptCookies::class, + \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, + \Illuminate\Session\Middleware\StartSession::class, + \Illuminate\View\Middleware\ShareErrorsFromSession::class, + \Illuminate\Routing\Middleware\SubstituteBindings::class, + \App\Http\Middleware\CustomVerifyCsrfToken::class, + ], + + 'api' => [ + 'throttle:60,1', + 'bindings', + ], + ]; /** * The application's route middleware. * * @var array */ - protected $routeMiddleware = [ - 'auth' => 'App\Http\Middleware\Authenticate', - 'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth', - 'guest' => 'App\Http\Middleware\RedirectIfAuthenticated', - ]; + protected $routeMiddleware = [ + 'auth' => \Illuminate\Auth\Middleware\Authenticate::class, + 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, + 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, + 'can' => \Illuminate\Auth\Middleware\Authorize::class, + 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, + 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, + 'visits' => \App\Http\Middleware\CountVisits::class, + ]; } diff --git a/app/Http/Middleware/CustomVerifyCsrfToken.php b/app/Http/Middleware/CustomVerifyCsrfToken.php index 4c6e374..a88ac93 100644 --- a/app/Http/Middleware/CustomVerifyCsrfToken.php +++ b/app/Http/Middleware/CustomVerifyCsrfToken.php @@ -1,6 +1,7 @@ addCookieToResponse($request, $next($request)); } - throw new \TokenMismatchException; + throw new TokenMismatchException(); } /** * This will return a bool value based on route checking. diff --git a/app/Http/Middleware/EncryptCookies.php b/app/Http/Middleware/EncryptCookies.php new file mode 100755 index 0000000..0e8117a --- /dev/null +++ b/app/Http/Middleware/EncryptCookies.php @@ -0,0 +1,17 @@ +auth = $auth; - } - - /** - * Handle an incoming request. - * - * @param \Illuminate\Http\Request $request - * @param \Closure $next - * @return mixed - */ - public function handle($request, Closure $next) - { - if ($this->auth->check()) - { - return new RedirectResponse(url('/feeds')); - } +use Closure; +use Illuminate\Support\Facades\Auth; - return $next($request); - } +class RedirectIfAuthenticated +{ + /** + * Handle an incoming request. + * + * @param \Illuminate\Http\Request $request + * @param \Closure $next + * @param string|null $guard + * @return mixed + */ + public function handle($request, Closure $next, $guard = null) + { + if (Auth::guard($guard)->check()) { + return redirect('/feeds'); + } + return $next($request); + } } diff --git a/app/Commands/Command.php b/app/Jobs/Command.php similarity index 53% rename from app/Commands/Command.php rename to app/Jobs/Command.php index 018bc21..99bf44c 100644 --- a/app/Commands/Command.php +++ b/app/Jobs/Command.php @@ -1,4 +1,4 @@ -findById($this->receiverId)->messageResponses()->save($response); return true; + } } diff --git a/app/Commands/CreateMessageResponseCommand.php b/app/Jobs/CreateMessageResponseCommand.php similarity index 92% rename from app/Commands/CreateMessageResponseCommand.php rename to app/Jobs/CreateMessageResponseCommand.php index 0625da9..945b2e3 100644 --- a/app/Commands/CreateMessageResponseCommand.php +++ b/app/Jobs/CreateMessageResponseCommand.php @@ -1,12 +1,11 @@ -user = $user; + + $this->socketClient = new SocketClient; + } + /** + * Execute the command. + * + * @return void + */ + public function handle() + { + $user = $this->user; + + $friendsUserIds = $user->friends()->where('onlinestatus', 1)->pluck('requester_id'); + + $relatedToId = $user->id; + + $clientCode = 22; + + $message = true; + + $this->socketClient->updateChatStatusBar($friendsUserIds, $clientCode, $relatedToId, $message); + + $user->updateOnlineStatus(1); + + } +} diff --git a/app/Commands/LogoutUserCommand.php b/app/Jobs/LogoutUserCommand.php similarity index 75% rename from app/Commands/LogoutUserCommand.php rename to app/Jobs/LogoutUserCommand.php index 85f6399..91a7a89 100644 --- a/app/Commands/LogoutUserCommand.php +++ b/app/Jobs/LogoutUserCommand.php @@ -1,12 +1,12 @@ -user->updateOnlineStatus(0); - $friendsUserIds = $this->user->friends()->where('onlinestatus', 1)->lists('requester_id'); + + $friendsUserIds = $this->user->friends()->where('onlinestatus', 1)->pluck('requester_id'); + $relatedToId = $this->user->id; + $this->socketClient->updateChatStatusBar($friendsUserIds, 22, $relatedToId, false); + Auth::logout(); - return Auth::check(); } } diff --git a/app/Jobs/RemoveFriendCommand.php b/app/Jobs/RemoveFriendCommand.php new file mode 100644 index 0000000..5f35d6d --- /dev/null +++ b/app/Jobs/RemoveFriendCommand.php @@ -0,0 +1,59 @@ +currentUser = $currentUser; + + $this->otherUser = $otherUser; + + $this->socketClient = new SocketClient; + } + + /** + * Execute the command. + * + * @param FriendRepository $friendRepository + * + * @return void + */ + public function handle(UserRepository $userRepository) + { + + $this->socketClient->updateChatListFriendRemoved($this->otherUser->id, 24, $this->currentUser->id, $this->otherUser->friends()->count()); + + return true; + + } +} diff --git a/app/Commands/SendChatMessageCommand.php b/app/Jobs/SendChatMessageCommand.php similarity index 80% rename from app/Commands/SendChatMessageCommand.php rename to app/Jobs/SendChatMessageCommand.php index 63420f8..042eeca 100644 --- a/app/Commands/SendChatMessageCommand.php +++ b/app/Jobs/SendChatMessageCommand.php @@ -1,11 +1,11 @@ -currentUser->updateChatStatus($this->chatStatus); + $relatedToId = $this->currentUser->id; - $friendsUserIds = $this->currentUser->friends()->where('onlinestatus', 1)->lists('requester_id'); + + $friendsUserIds = $this->currentUser->friends()->where('onlinestatus', 1)->pluck('requester_id'); + $friendsUserIds[] = $relatedToId; + $this->socketClient->updateChatStatusBar($friendsUserIds, 21, $relatedToId, $this->chatStatus); } diff --git a/app/Handlers/Commands/.gitkeep b/app/Listeners/Commands/.gitkeep similarity index 100% rename from app/Handlers/Commands/.gitkeep rename to app/Listeners/Commands/.gitkeep diff --git a/app/Handlers/Events/EmailFriendRequest.php b/app/Listeners/Events/EmailFriendRequest.php old mode 100644 new mode 100755 similarity index 51% rename from app/Handlers/Events/EmailFriendRequest.php rename to app/Listeners/Events/EmailFriendRequest.php index eee2c64..1deef5c --- a/app/Handlers/Events/EmailFriendRequest.php +++ b/app/Listeners/Events/EmailFriendRequest.php @@ -1,29 +1,25 @@ -mailer = $mailer; + } /** * Handle the event. @@ -33,8 +29,9 @@ public function __construct(UserMailer $mailer) */ public function handle(FriendRequestWasSent $event) { - $this->mailer->sendFriendRequestAlertTo($event->requestedUser, $event->requesterUser); - } + Mail::to($event->requestedUser)->send(new FriendRequest($event->requestedUser, $event->requesterUser)); + + } } diff --git a/app/Handlers/Events/EmailRegistrationConfirmation.php b/app/Listeners/Events/EmailRegistrationConfirmation.php old mode 100644 new mode 100755 similarity index 62% rename from app/Handlers/Events/EmailRegistrationConfirmation.php rename to app/Listeners/Events/EmailRegistrationConfirmation.php index 989590e..34dd2cb --- a/app/Handlers/Events/EmailRegistrationConfirmation.php +++ b/app/Listeners/Events/EmailRegistrationConfirmation.php @@ -1,10 +1,11 @@ -mailer = $mailer; + } /** @@ -33,7 +34,7 @@ public function __construct(UserMailer $mailer) */ public function handle(UserWasRegistered $event) { - return $this->mailer->sendWelcomeMessageTo($event->user); + Mail::to($event->user)->send(new Welcome()); } } diff --git a/app/Mail/FriendRequest.php b/app/Mail/FriendRequest.php new file mode 100644 index 0000000..5a4bfdf --- /dev/null +++ b/app/Mail/FriendRequest.php @@ -0,0 +1,41 @@ +userFirstname = $requested->firstname; + + $this->requesterFirstname = $requester->firstname; + } + + /** + * Build the message. + * + * @return $this + */ + public function build() + { + return $this->subject('Someone would like to be your friend') + ->view('email-alerts.friend-request'); + } +} diff --git a/app/Mail/Welcome.php b/app/Mail/Welcome.php new file mode 100644 index 0000000..367494b --- /dev/null +++ b/app/Mail/Welcome.php @@ -0,0 +1,34 @@ +subject('Welcome to Larasocial') + ->view('email-alerts.registration-confirm'); + } +} diff --git a/app/Mailers/Mailer.php b/app/Mailers/Mailer.php deleted file mode 100644 index 45677ca..0000000 --- a/app/Mailers/Mailer.php +++ /dev/null @@ -1,39 +0,0 @@ -mail = $mail; - } - /** - * @param Object $user - * - * @param string $subject - * - * @param string $view - * - * @param array $data - * - */ - public function sendTo($user, $subject, $view, $data = []) - { - $this->mail->queue($view, $data, function($message) use ($user, $subject) - { - $message->to($user->email)->subject($subject); - - }); - - return true; - } -} \ No newline at end of file diff --git a/app/Mailers/UserMailer.php b/app/Mailers/UserMailer.php deleted file mode 100644 index 329e4c1..0000000 --- a/app/Mailers/UserMailer.php +++ /dev/null @@ -1,43 +0,0 @@ -sendTo($user, $subject, $view); - } - - - /** - * Send alert to user when friend request is sent to him. - * - * @param User $requestedUser - * - * @param User $requesterUser - * - */ - public function sendFriendRequestAlertTo(User $requestedUser, User $requesterUser) - { - $subject = 'Someone would like to be your friend'; - - $view = 'email-alerts.friend-request'; - - $data = ['userFirstname' => $requestedUser->firstname, 'requesterFirstname' => $requesterUser->firstname]; - - return $this->sendTo($requestedUser, $subject, $view, $data); - } -} \ No newline at end of file diff --git a/app/MessageResponse.php b/app/MessageResponse.php index 06ed70f..87f5406 100644 --- a/app/MessageResponse.php +++ b/app/MessageResponse.php @@ -76,7 +76,7 @@ public function getMessageResponseSubject() */ public function hasBeenOpenedBy($userId) { - return DB::table('message_response_user')->where('user_id', $userId)->where('message_response_id', $this->id)->pluck('open'); + return DB::table('message_response_user')->where('user_id', $userId)->where('message_response_id', $this->id)->value('open'); } diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php new file mode 100644 index 0000000..0db8a68 --- /dev/null +++ b/app/Providers/AuthServiceProvider.php @@ -0,0 +1,27 @@ + 'App\Policies\ModelPolicy', + ]; + /** + * Register any authentication / authorization services. + * + * @return void + */ + public function boot() + { + $this->registerPolicies(); + // + } +} \ No newline at end of file diff --git a/app/Providers/BroadcastServiceProvider.php b/app/Providers/BroadcastServiceProvider.php new file mode 100644 index 0000000..1dcf8d2 --- /dev/null +++ b/app/Providers/BroadcastServiceProvider.php @@ -0,0 +1,26 @@ +id === (int) $userId; + }); + } +} diff --git a/app/Providers/BusServiceProvider.php b/app/Providers/BusServiceProvider.php deleted file mode 100644 index f0d9be6..0000000 --- a/app/Providers/BusServiceProvider.php +++ /dev/null @@ -1,34 +0,0 @@ -mapUsing(function($command) - { - return Dispatcher::simpleMapping( - $command, 'App\Commands', 'App\Handlers\Commands' - ); - }); - } - - /** - * Register any application services. - * - * @return void - */ - public function register() - { - // - } - -} diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php old mode 100644 new mode 100755 index 8ecfcd6..810f5e2 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -2,8 +2,8 @@ use App\Events\UserWasRegistered; use App\Events\FriendRequestWasSent; -use App\Handlers\Events\EmailRegistrationConfirmation; -use App\Handlers\Events\EmailFriendRequest; +use App\Listeners\Events\EmailRegistrationConfirmation; +use App\Listeners\Events\EmailFriendRequest; use Illuminate\Contracts\Events\Dispatcher as DispatcherContract; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; @@ -33,9 +33,9 @@ class EventServiceProvider extends ServiceProvider { * @param \Illuminate\Contracts\Events\Dispatcher $events * @return void */ - public function boot(DispatcherContract $events) + public function boot() { - parent::boot($events); + parent::boot(); // } diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php old mode 100644 new mode 100755 index afa34c8..80a366b --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -1,44 +1,80 @@ -group(['namespace' => $this->namespace], function($router) - { - require app_path('Http/routes.php'); - }); - } +class RouteServiceProvider extends ServiceProvider +{ + /** + * This namespace is applied to your controller routes. + * + * In addition, it is set as the URL generator's root namespace. + * + * @var string + */ + protected $namespace = 'App\Http\Controllers'; + + /** + * Define your route model bindings, pattern filters, etc. + * + * @return void + */ + public function boot() + { + // + + parent::boot(); + + } + + /** + * Define the routes for the application. + * + * @return void + */ + public function map() + { + $this->mapApiRoutes(); + + $this->mapWebRoutes(); + + // + } + + /** + * Define the "web" routes for the application. + * + * These routes all receive session state, CSRF protection, etc. + * + * @return void + */ + protected function mapWebRoutes() + { + Route::group([ + 'middleware' => 'web', + 'namespace' => $this->namespace, + ], function ($router) { + require base_path('routes/web.php'); + }); + } + /** + * Define the "api" routes for the application. + * + * These routes are typically stateless. + * + * @return void + */ + protected function mapApiRoutes() + { + Route::group([ + 'middleware' => 'api', + 'namespace' => $this->namespace, + 'prefix' => 'api', + ], function ($router) { + require base_path('routes/api.php'); + }); + } } diff --git a/app/Repositories/Feed/EloquentFeedRepository.php b/app/Repositories/Feed/EloquentFeedRepository.php old mode 100644 new mode 100755 index d43fe9b..b3338ad --- a/app/Repositories/Feed/EloquentFeedRepository.php +++ b/app/Repositories/Feed/EloquentFeedRepository.php @@ -14,7 +14,7 @@ class EloquentFeedRepository implements FeedRepository */ public function getPublishedByUserAndFriends(User $user) { - $friendsUserIds = $user->friends()->lists('requester_id'); + $friendsUserIds = $user->friends()->pluck('requester_id')->all(); $friendsUserIds[] = $user->id; @@ -40,11 +40,11 @@ public function getPublishedByUser(User $user) */ public function getPublishedByUserAndFriendsAjax(User $user, $skipQty) { - $friendsUserIds = $user->friends()->lists('requester_id'); + $friendsUserIds = $user->friends()->pluck('requester_id'); $friendsUserIds[] = $user->id; - return Feed::whereIn('user_id', $friendsUserIds)->latest()->skip($skipQty)->take(10)->get(); + return Feed::whereIn('user_id', $friendsUserIds)->latest()->skip($skipQty)->take(10)->get()->all(); } } \ No newline at end of file diff --git a/app/Repositories/FriendRequest/EloquentFriendRequestRepository.php b/app/Repositories/FriendRequest/EloquentFriendRequestRepository.php old mode 100644 new mode 100755 index ebbc2a5..49ad5dc --- a/app/Repositories/FriendRequest/EloquentFriendRequestRepository.php +++ b/app/Repositories/FriendRequest/EloquentFriendRequestRepository.php @@ -8,6 +8,6 @@ class EloquentFriendRequestRepository implements FriendRequestRepository { public function getIdsThatSentRequestToCurrentUser($id) { - return DB::table('friend_requests')->where('user_id', $id)->lists('requester_id'); + return DB::table('friend_requests')->where('user_id', $id)->pluck('requester_id')->toArray(); } } \ No newline at end of file diff --git a/app/User.php b/app/User.php old mode 100644 new mode 100755 index 3d16406..8b0c905 --- a/app/User.php +++ b/app/User.php @@ -1,15 +1,23 @@ -where('requester_id', $this->id)->lists('requested_id'); + $currentUserFriends = DB::table('friends')->where('requester_id', $this->id)->pluck('requested_id')->all(); return in_array($otherUserId, $currentUserFriends); } @@ -173,7 +181,7 @@ public function isFriendsWith($otherUserId) */ public function sentFriendRequestTo($otherUserId) { - $friendRequestedByCurrentUser = DB::table('friend_requests')->where('requester_id', $this->id)->lists('user_id'); + $friendRequestedByCurrentUser = DB::table('friend_requests')->where('requester_id', $this->id)->pluck('user_id')->all(); return in_array($otherUserId, $friendRequestedByCurrentUser); } @@ -187,25 +195,12 @@ public function sentFriendRequestTo($otherUserId) */ public function receivedFriendRequestFrom($otherUserId) { - $friendRequestsReceivedByCurrentUser = DB::table('friend_requests')->where('user_id', $this->id)->lists('requester_id'); + $friendRequestsReceivedByCurrentUser = DB::table('friend_requests')->where('user_id', $this->id)->pluck('requester_id')->all(); return in_array($otherUserId, $friendRequestsReceivedByCurrentUser); } - /** - * Determine if the current user is the same as the given one. - * - * @param int $id - * - * @return boolean - * - */ - public function is($id) - { - return $this->id == $id; - } - /** * Determine if current user is available to chat. * diff --git a/bootstrap/autoload.php b/bootstrap/autoload.php index bc04666..2c35b3f 100644 --- a/bootstrap/autoload.php +++ b/bootstrap/autoload.php @@ -27,7 +27,7 @@ | */ -$compiledPath = __DIR__.'/../vendor/compiled.php'; +$compiledPath = __DIR__.'/cache/compiled.php'; if (file_exists($compiledPath)) { diff --git a/bootstrap/cache/.gitignore b/bootstrap/cache/.gitignore new file mode 100644 index 0000000..c96a04f --- /dev/null +++ b/bootstrap/cache/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file diff --git a/composer.json b/composer.json old mode 100644 new mode 100755 index 4e75269..500739a --- a/composer.json +++ b/composer.json @@ -5,16 +5,21 @@ "license": "MIT", "type": "project", "require": { - "laravel/framework": "5.0.*", - "illuminate/html": "5.*", + "laravel/framework": "5.4.*", + "laravelcollective/html": "5.*", "intervention/image": "dev-master", "laracasts/testdummy": "~2.0", - "wisembly/elephant.io": "3.0.0" + "wisembly/elephant.io": "3.0.0", + "doctrine/dbal": "^2.5", + "laravel/browser-kit-testing": "^1.0" + }, "require-dev": { - "phpunit/phpunit": "~4.0", + "phpunit/phpunit": "~5.7", "phpspec/phpspec": "~2.1", - "laracasts/integrated": "0.11.*" + "symfony/dom-crawler": "~3.1", + "symfony/css-selector": "~3.1" + }, "autoload": { "classmap": [ @@ -25,8 +30,12 @@ } }, "autoload-dev": { + "psr-4": { + "Tests\\": "tests/" + }, "classmap": [ - "tests/TestCase.php" + "tests/TestCase.php", + "tests/BrowserKitTestCase.php" ] }, "scripts": { diff --git a/config/app.php b/config/app.php old mode 100644 new mode 100755 index b84b6dd..bdc205b --- a/config/app.php +++ b/config/app.php @@ -2,6 +2,10 @@ return [ + 'env' => env('APP_ENV', 'production'), + + 'name' => 'Larasocial', + /* |-------------------------------------------------------------------------- | Application Debug Mode @@ -26,7 +30,7 @@ | */ - 'url' => 'http://localhost', + 'url' => env('APP_URL','http://localhost'), /* |-------------------------------------------------------------------------- @@ -78,9 +82,9 @@ | */ - 'key' => env('APP_KEY', 'SomeRandomString'), + 'key' => env('APP_KEY'), - 'cipher' => MCRYPT_RIJNDAEL_128, + 'cipher' => 'AES-256-CBC', /* |-------------------------------------------------------------------------- @@ -113,12 +117,11 @@ /* * Laravel Framework Service Providers... */ - 'Illuminate\Foundation\Providers\ArtisanServiceProvider', 'Illuminate\Auth\AuthServiceProvider', - 'Illuminate\Bus\BusServiceProvider', + Illuminate\Broadcasting\BroadcastServiceProvider::class, + Illuminate\Bus\BusServiceProvider::class, 'Illuminate\Cache\CacheServiceProvider', 'Illuminate\Foundation\Providers\ConsoleSupportServiceProvider', - 'Illuminate\Routing\ControllerServiceProvider', 'Illuminate\Cookie\CookieServiceProvider', 'Illuminate\Database\DatabaseServiceProvider', 'Illuminate\Encryption\EncryptionServiceProvider', @@ -126,6 +129,7 @@ 'Illuminate\Foundation\Providers\FoundationServiceProvider', 'Illuminate\Hashing\HashServiceProvider', 'Illuminate\Mail\MailServiceProvider', + Illuminate\Notifications\NotificationServiceProvider::class, 'Illuminate\Pagination\PaginationServiceProvider', 'Illuminate\Pipeline\PipelineServiceProvider', 'Illuminate\Queue\QueueServiceProvider', @@ -135,17 +139,18 @@ 'Illuminate\Translation\TranslationServiceProvider', 'Illuminate\Validation\ValidationServiceProvider', 'Illuminate\View\ViewServiceProvider', - 'Illuminate\Html\HtmlServiceProvider', - 'Intervention\Image\ImageServiceProvider', + Collective\Html\HtmlServiceProvider::class, + Intervention\Image\ImageServiceProvider::class, /* * Application Service Providers... */ 'App\Providers\AppServiceProvider', - 'App\Providers\BusServiceProvider', + 'App\Providers\AuthServiceProvider', 'App\Providers\ConfigServiceProvider', 'App\Providers\EventServiceProvider', - 'App\Providers\RouteServiceProvider', + App\Providers\RouteServiceProvider::class, + App\Providers\BroadcastServiceProvider::class, ], @@ -175,12 +180,14 @@ 'Eloquent' => 'Illuminate\Database\Eloquent\Model', 'Event' => 'Illuminate\Support\Facades\Event', 'File' => 'Illuminate\Support\Facades\File', + 'Gate' => Illuminate\Support\Facades\Gate::class, 'Hash' => 'Illuminate\Support\Facades\Hash', 'Input' => 'Illuminate\Support\Facades\Input', 'Inspiring' => 'Illuminate\Foundation\Inspiring', 'Lang' => 'Illuminate\Support\Facades\Lang', 'Log' => 'Illuminate\Support\Facades\Log', 'Mail' => 'Illuminate\Support\Facades\Mail', + 'Notification' => Illuminate\Support\Facades\Notification::class, 'Password' => 'Illuminate\Support\Facades\Password', 'Queue' => 'Illuminate\Support\Facades\Queue', 'Redirect' => 'Illuminate\Support\Facades\Redirect', @@ -194,9 +201,9 @@ 'URL' => 'Illuminate\Support\Facades\URL', 'Validator' => 'Illuminate\Support\Facades\Validator', 'View' => 'Illuminate\Support\Facades\View', - 'Form' => 'Illuminate\Html\FormFacade', - 'HTML' => 'Illuminate\Html\HtmlFacade', - 'Image' => 'Intervention\Image\Facades\Image', + 'Form' => Collective\Html\FormFacade::class, + 'Html' => Collective\Html\HtmlFacade::class, + 'Image' => Intervention\Image\Facades\Image::class, ], diff --git a/config/auth.php b/config/auth.php index 5b436aa..89f2073 100644 --- a/config/auth.php +++ b/config/auth.php @@ -1,67 +1,95 @@ 'eloquent', - - /* - |-------------------------------------------------------------------------- - | Authentication Model - |-------------------------------------------------------------------------- - | - | When using the "Eloquent" authentication driver, we need to know which - | Eloquent model should be used to retrieve your users. Of course, it - | is often just the "User" model but you may use whatever you like. - | - */ - - 'model' => 'App\User', - - /* - |-------------------------------------------------------------------------- - | Authentication Table - |-------------------------------------------------------------------------- - | - | When using the "Database" authentication driver, we need to know which - | table should be used to retrieve your users. We have chosen a basic - | default value but you may easily change it to any table you like. - | - */ - - 'table' => 'users', - - /* - |-------------------------------------------------------------------------- - | Password Reset Settings - |-------------------------------------------------------------------------- - | - | Here you may set the options for resetting passwords including the view - | that is your password reset e-mail. You can also set the name of the - | table that maintains all of the reset tokens for your application. - | - | The expire time is the number of minutes that the reset token should be - | considered valid. This security feature keeps tokens short-lived so - | they have less time to be guessed. You may change this as needed. - | - */ - - 'password' => [ - 'email' => 'emails.password', - 'table' => 'password_resets', - 'expire' => 60, - ], - -]; + /* + |-------------------------------------------------------------------------- + | Authentication Defaults + |-------------------------------------------------------------------------- + | + | This option controls the default authentication "guard" and password + | reset options for your application. You may change these defaults + | as required, but they're a perfect start for most applications. + | + */ + 'defaults' => [ + 'guard' => 'web', + 'passwords' => 'users', + ], + /* + |-------------------------------------------------------------------------- + | Authentication Guards + |-------------------------------------------------------------------------- + | + | Next, you may define every authentication guard for your application. + | Of course, a great default configuration has been defined for you + | here which uses session storage and the Eloquent user provider. + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | Supported: "session", "token" + | + */ + 'guards' => [ + 'web' => [ + 'driver' => 'session', + 'provider' => 'users', + ], + 'api' => [ + 'driver' => 'token', + 'provider' => 'users', + ], + ], + /* + |-------------------------------------------------------------------------- + | User Providers + |-------------------------------------------------------------------------- + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | If you have multiple user tables or models you may configure multiple + | sources which represent each model / table. These sources may then + | be assigned to any extra authentication guards you have defined. + | + | Supported: "database", "eloquent" + | + */ + 'providers' => [ + 'users' => [ + 'driver' => 'eloquent', + 'model' => App\User::class, + ], + // 'users' => [ + // 'driver' => 'database', + // 'table' => 'users', + // ], + ], + /* + |-------------------------------------------------------------------------- + | Resetting Passwords + |-------------------------------------------------------------------------- + | + | Here you may set the options for resetting passwords including the view + | that is your password reset e-mail. You may also set the name of the + | table that maintains all of the reset tokens for your application. + | + | You may specify multiple password reset configurations if you have more + | than one user table or model in the application and you want to have + | seperate password reset settings based on the specific user types. + | + | The expire time is the number of minutes that the reset token should be + | considered valid. This security feature keeps tokens short-lived so + | they have less time to be guessed. You may change this as needed. + | + */ + 'passwords' => [ + 'users' => [ + 'provider' => 'users', + 'email' => 'auth.emails.password', + 'table' => 'password_resets', + 'expire' => 60, + ], + ], +]; \ No newline at end of file diff --git a/config/broadcasting.php b/config/broadcasting.php new file mode 100644 index 0000000..ee6a33a --- /dev/null +++ b/config/broadcasting.php @@ -0,0 +1,58 @@ + env('BROADCAST_DRIVER', 'null'), + + /* + |-------------------------------------------------------------------------- + | Broadcast Connections + |-------------------------------------------------------------------------- + | + | Here you may define all of the broadcast connections that will be used + | to broadcast events to other systems or over websockets. Samples of + | each available type of connection are provided inside this array. + | + */ + + 'connections' => [ + + 'pusher' => [ + 'driver' => 'pusher', + 'key' => env('PUSHER_APP_KEY'), + 'secret' => env('PUSHER_APP_SECRET'), + 'app_id' => env('PUSHER_APP_ID'), + 'options' => [ + // + ], + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + ], + + 'log' => [ + 'driver' => 'log', + ], + + 'null' => [ + 'driver' => 'null', + ], + + ], + +]; \ No newline at end of file diff --git a/config/compile.php b/config/compile.php index 3a002fc..0609306 100644 --- a/config/compile.php +++ b/config/compile.php @@ -16,8 +16,6 @@ 'files' => [ realpath(__DIR__.'/../app/Providers/AppServiceProvider.php'), - realpath(__DIR__.'/../app/Providers/BusServiceProvider.php'), - realpath(__DIR__.'/../app/Providers/ConfigServiceProvider.php'), realpath(__DIR__.'/../app/Providers/EventServiceProvider.php'), realpath(__DIR__.'/../app/Providers/RouteServiceProvider.php'), diff --git a/config/mail.php b/config/mail.php old mode 100644 new mode 100755 index f981e27..a6c20b6 --- a/config/mail.php +++ b/config/mail.php @@ -110,17 +110,15 @@ 'sendmail' => '/usr/sbin/sendmail -bs', - /* - |-------------------------------------------------------------------------- - | Mail "Pretend" - |-------------------------------------------------------------------------- - | - | When this option is enabled, e-mail will not actually be sent over the - | web and will instead be written to your application's logs files so - | you may inspect the message. This is great for local development. - | - */ - 'pretend' => false, + 'markdown' => [ + 'theme' => 'default', + + 'paths' => [ + resource_path('views/vendor/mail'), + ], + ], + + ]; diff --git a/config/queue.php b/config/queue.php old mode 100644 new mode 100755 index 9c39a13..dd3e03a --- a/config/queue.php +++ b/config/queue.php @@ -39,14 +39,14 @@ 'driver' => 'database', 'table' => 'jobs', 'queue' => 'default', - 'expire' => 60, + 'retry_after' => 60, ], 'beanstalkd' => [ 'driver' => 'beanstalkd', 'host' => 'localhost', 'queue' => 'default', - 'ttr' => 60, + 'retry_after' => 60, ], 'sqs' => [ @@ -69,7 +69,7 @@ 'redis' => [ 'driver' => 'redis', 'queue' => 'default', - 'expire' => 60, + 'retry_after' => 60, ], ], diff --git a/database/seeds/.gitkeep b/database/seeds/.gitkeep old mode 100644 new mode 100755 diff --git a/database/seeds/FriendRequestTableSeeder.php b/database/seeds/FriendRequestTableSeeder.php old mode 100644 new mode 100755 index c62c655..364cbec --- a/database/seeds/FriendRequestTableSeeder.php +++ b/database/seeds/FriendRequestTableSeeder.php @@ -15,7 +15,7 @@ public function run() { $faker = Faker::create(); - $userIds = DB::table('users')->where('id', '!=', 1)->lists('id'); + $userIds = DB::table('users')->where('id', '!=', 1)->pluck('id'); foreach (range(1, 25) as $index) { diff --git a/database/seeds/MessageResponseUserTableSeeder.php b/database/seeds/MessageResponseUserTableSeeder.php old mode 100644 new mode 100755 index 5ac902a..cc8cf12 --- a/database/seeds/MessageResponseUserTableSeeder.php +++ b/database/seeds/MessageResponseUserTableSeeder.php @@ -15,7 +15,7 @@ public function run() $date = new DateTime(); - $messageResponseIds = DB::table('message_responses')->lists('id'); + $messageResponseIds = DB::table('message_responses')->pluck('id'); foreach ($messageResponseIds as $messageResponseId) { diff --git a/database/seeds/MessageResponsesTableSeeder.php b/database/seeds/MessageResponsesTableSeeder.php old mode 100644 new mode 100755 index e07542c..103be04 --- a/database/seeds/MessageResponsesTableSeeder.php +++ b/database/seeds/MessageResponsesTableSeeder.php @@ -14,9 +14,9 @@ public function run() { $faker = Faker::create(); - $messageIds = DB::table('messages')->lists('id'); + $messageIds = DB::table('messages')->pluck('id'); - $messageSenderIds = DB::table('messages')->lists('senderid'); + $messageSenderIds = DB::table('messages')->pluck('senderid'); foreach ($messageIds as $messageId) { diff --git a/database/seeds/MessageUserTableSeeder.php b/database/seeds/MessageUserTableSeeder.php old mode 100644 new mode 100755 index 3dd7c69..ab57792 --- a/database/seeds/MessageUserTableSeeder.php +++ b/database/seeds/MessageUserTableSeeder.php @@ -14,7 +14,7 @@ public function run() $date = new DateTime(); - $messageIds = DB::table('messages')->lists('id'); + $messageIds = DB::table('messages')->pluck('id'); foreach ($messageIds as $messageId) { diff --git a/database/seeds/MessagesTableSeeder.php b/database/seeds/MessagesTableSeeder.php old mode 100644 new mode 100755 index 057e385..7cc372b --- a/database/seeds/MessagesTableSeeder.php +++ b/database/seeds/MessagesTableSeeder.php @@ -13,7 +13,7 @@ public function run() { $faker = Faker::create(); - $userIds = DB::table('users')->where('id', '!=', 1)->lists('id'); + $userIds = DB::table('users')->where('id', '!=', 1)->pluck('id'); foreach (range(1, 25) as $index) { diff --git a/resources/views/email-alerts/friend-request.blade.php b/resources/views/email-alerts/friend-request.blade.php old mode 100644 new mode 100755 index ee5c110..e5a7aab --- a/resources/views/email-alerts/friend-request.blade.php +++ b/resources/views/email-alerts/friend-request.blade.php @@ -1 +1 @@ -Hey {!! $userFirstname !!}, {!! $requesterFirstname !!} wants to be your friend! \ No newline at end of file +Hey {{ $userFirstname }}, {{ $requesterFirstname }} wants to be your friend! \ No newline at end of file diff --git a/resources/views/email-alerts/registration-confirm.blade.php b/resources/views/email-alerts/registration-confirm.blade.php old mode 100644 new mode 100755 diff --git a/resources/views/layouts/default.blade.php b/resources/views/layouts/default.blade.php old mode 100644 new mode 100755 index 4d10db0..b52b30c --- a/resources/views/layouts/default.blade.php +++ b/resources/views/layouts/default.blade.php @@ -24,7 +24,7 @@ - + \ No newline at end of file diff --git a/resources/views/layouts/partials/nav.blade.php b/resources/views/layouts/partials/nav.blade.php old mode 100644 new mode 100755 index ce5086e..f9f839f --- a/resources/views/layouts/partials/nav.blade.php +++ b/resources/views/layouts/partials/nav.blade.php @@ -18,9 +18,9 @@