From efe3ccd05029fbacf3854b2597959e8738b157b0 Mon Sep 17 00:00:00 2001 From: joydey1800 Date: Sun, 13 Oct 2019 18:07:15 +0530 Subject: [PATCH 01/10] joy dey laravel --- .env.example | 11 + README.md | 57 +- app/Http/Controllers/Auth/LoginController.php | 60 +- .../Controllers/Auth/RegisterController.php | 13 +- .../Auth/ResetPasswordController.php | 2 +- app/Http/Controllers/PagesController.php | 42 ++ app/Http/Controllers/PostsController.php | 208 +++++++ .../Middleware/RedirectIfAuthenticated.php | 2 +- app/Post.php | 37 ++ app/Providers/AppServiceProvider.php | 4 +- app/User.php | 13 +- composer.json | 15 +- composer.lock | 523 +++++++++++++++++- config/app.php | 5 +- config/mail.php | 4 +- config/services.php | 20 + .../2014_10_12_000000_create_users_table.php | 2 + .../2019_10_11_075832_create_posts_table.php | 35 ++ package.json | 2 +- resources/views/auth/login.blade.php | 79 +++ .../views/auth/passwords/email.blade.php | 47 ++ .../views/auth/passwords/reset.blade.php | 71 +++ resources/views/auth/register.blade.php | 109 ++++ resources/views/inc/message.blade.php | 45 ++ resources/views/inc/nav.blade.php | 54 ++ resources/views/layouts/app.blade.php | 51 ++ resources/views/pages/about.blade.php | 8 + resources/views/pages/index.blade.php | 61 ++ resources/views/pages/profile.blade.php | 54 ++ resources/views/posts/create.blade.php | 52 ++ resources/views/posts/edit.blade.php | 53 ++ resources/views/posts/index.blade.php | 72 +++ resources/views/posts/show.blade.php | 40 ++ resources/views/welcome.blade.php | 95 ---- routes/api.php | 2 + routes/web.php | 36 +- 36 files changed, 1836 insertions(+), 148 deletions(-) create mode 100644 app/Http/Controllers/PagesController.php create mode 100644 app/Http/Controllers/PostsController.php create mode 100644 app/Post.php create mode 100644 database/migrations/2019_10_11_075832_create_posts_table.php create mode 100644 resources/views/auth/login.blade.php create mode 100644 resources/views/auth/passwords/email.blade.php create mode 100644 resources/views/auth/passwords/reset.blade.php create mode 100644 resources/views/auth/register.blade.php create mode 100644 resources/views/inc/message.blade.php create mode 100644 resources/views/inc/nav.blade.php create mode 100644 resources/views/layouts/app.blade.php create mode 100644 resources/views/pages/about.blade.php create mode 100644 resources/views/pages/index.blade.php create mode 100644 resources/views/pages/profile.blade.php create mode 100644 resources/views/posts/create.blade.php create mode 100644 resources/views/posts/edit.blade.php create mode 100644 resources/views/posts/index.blade.php create mode 100644 resources/views/posts/show.blade.php delete mode 100644 resources/views/welcome.blade.php diff --git a/.env.example b/.env.example index ec44a12..6b25976 100644 --- a/.env.example +++ b/.env.example @@ -37,3 +37,14 @@ PUSHER_APP_CLUSTER=mt1 MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" + + +facebook_CLIENT_ID = +facebook_CLIENT_SECRET = + +google_CLIENT_ID = +google_CLIENT_SECRET = + + +twitter_CLIENT_ID = +twitter_CLIENT_SECRET = diff --git a/README.md b/README.md index 7ceca4b..7d0c67c 100644 --- a/README.md +++ b/README.md @@ -1,51 +1,46 @@ # Back-end developer exercise -© 2018 Renderbit Technologies LLP. +I am Joy Dey. -## Prerequisites +## Use +I did use -You should be familiar with PHP 7, Laravel 5, Git and GitHub. +1. PHP +2. Apache server +3. MySQL Database +4. VS CODE -## Getting Started -This tutorial assumes you have a PHP 7 development environment set up on your machine, with the following components at minimum: +### Extra -1. PHP 7.1 or better -2. Choice of server (Apache/Nginx) -3. Choice of Database (MySQL/MariaDB/PostgreSQL/SQLite) -4. Choice of IDE/Editor - -Fork this repository, and clone your fork locally. All submissions have to be made as a pull request against this repository. - -## Requirements +- social login feature which allows users to login and sign up via their Google+/Facebook/Twitter/Github accounts. +- Allow photos to be inserted into blog posts. +- Allow CK editing of blog posts with rich formatting support. -You have to design a blogging application. -Any user can sign up and create a blog of their own. When signing up, you have to record the user's full name, unique email address, password (8 characters minimum with 1 special character required) and choice of unique username. +### Configuration for social login -The homepage of the blog can be viewed by anyone without login. The homepage shall show a list of all blog posts by all users, with most recent posts on top. The list of blog posts shall be paginated, with 8 posts per page. On clicking a post, a user can view the entire post content. +For social login feature, we must configure .env -Every user shall have his/her blog home page at `/`. This page shall show a list of all posts by the particular user, with most recent posts on top. This list of blog posts shall also be paginated, with 8 posts per page. On clicking a post, a user can view the entire post content. -A blog post has the URL `//`. A blog post has a post title and post content. Anyone can view a blog post without login. However, you need to login to comment on a blog post. Any user can comment on any blog post. However, a user can only delete comments that he has made on other users' blog posts. The author of the blog post can delete any comment on the blog post made by any user. The comments are shown below the blog post content, with most recent comments on top. A form to add a new comment is shown above the comments thread. +``` +facebook_CLIENT_ID = +facebook_CLIENT_SECRET = -Every user can access the admin panel at `/admin`. A user has to login to access the admin panel. The admin panel should show a list of all posts, with an option to edit and delete each post. The admin panel should also have an option to create a new post. +google_CLIENT_ID = +google_CLIENT_SECRET = -### UI -You are free to use any UI framework or library of your choice. We recommend [Bootstrap](https://getbootstrap.com) as a good place to get started. +twitter_CLIENT_ID = +twitter_CLIENT_SECRET = -Note that you are not required to build a mobile responsive website, although if you build one, we will be assigning extra credits for that. +``` -### Libraries & Frameworks +### Configuration for Storage -You are free to use any libraries, frameworks & tools which you think will be useful to build this application. No credits are deducted for use of libraries. +I use Storage link command for Storage sortcut -### Extra Credits +``` +php artisan storage:link -- Implement a social login feature which allows users to login and sign up via their Google+/Facebook/Twitter/Github accounts. -- Allow photos to be inserted into blog posts. -- Allow WYSIWYG editing of blog posts with rich formatting support. -- Implement a CAPTCHA for adding comments. -- Implement two-factor authentication for login using SMS for one-time passwords. -- Surprise us. :smiley: \ No newline at end of file +``` \ No newline at end of file diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index b2ea669..3697ccc 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -4,6 +4,10 @@ use App\Http\Controllers\Controller; use Illuminate\Foundation\Auth\AuthenticatesUsers; +use Socialite; +use App\user; +use Illuminate\Support\Facades\Auth; + class LoginController extends Controller { @@ -25,7 +29,7 @@ class LoginController extends Controller * * @var string */ - protected $redirectTo = '/home'; + protected $redirectTo = '/admin'; /** * Create a new controller instance. @@ -36,4 +40,58 @@ public function __construct() { $this->middleware('guest')->except('logout'); } + + + /** + * Redirect the user to the facebook authentication page. + * + * @return \Illuminate\Http\Response + */ + public function redirectToProvider($service) + { + return Socialite::driver($service)->redirect(); + } + + /** + * Obtain the user information from facebook. + * + * @return \Illuminate\Http\Response + */ + public function handleProviderCallback($service) + { + if($service == 'twitter'){ + + $socialuser = Socialite::driver($service)->user(); + + } else{ + + $socialuser = Socialite::driver($service)->stateless()->user(); + + } + + + //find user + $finduser = User::where('email', $socialuser->email)->first(); + + if($finduser){ + + Auth::login($finduser); + + } + else{ + + $user = new User; + $user->name = $socialuser->name; + $user->u_name = $socialuser->name.$socialuser->id; + $user->email = $socialuser->email; + $user->password = bcrypt(123456789); + $user->save(); + Auth::login($user); + + } + + } + + + } diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index e749c07..a6f5685 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 = '/admin'; /** * Create a new controller instance. @@ -40,6 +40,9 @@ public function __construct() $this->middleware('guest'); } + + + /** * Get a validator for an incoming registration request. * @@ -50,8 +53,12 @@ protected function validator(array $data) { return Validator::make($data, [ 'name' => 'required|string|max:255', + 'u_name' => 'required|string|max:255|unique:users', 'email' => 'required|string|email|max:255|unique:users', - 'password' => 'required|string|min:6|confirmed', + 'address' => 'required|string|max:2000', + 'password' => 'required|string|min:8|confirmed|regex:/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{6,}$/', + + // ]); } @@ -65,7 +72,9 @@ protected function create(array $data) { return User::create([ 'name' => $data['name'], + 'u_name' => $data['u_name'], 'email' => $data['email'], + 'address' => $data['address'], 'password' => Hash::make($data['password']), ]); } diff --git a/app/Http/Controllers/Auth/ResetPasswordController.php b/app/Http/Controllers/Auth/ResetPasswordController.php index cf726ee..4467258 100644 --- a/app/Http/Controllers/Auth/ResetPasswordController.php +++ b/app/Http/Controllers/Auth/ResetPasswordController.php @@ -25,7 +25,7 @@ class ResetPasswordController extends Controller * * @var string */ - protected $redirectTo = '/home'; + protected $redirectTo = '/admin'; /** * Create a new controller instance. diff --git a/app/Http/Controllers/PagesController.php b/app/Http/Controllers/PagesController.php new file mode 100644 index 0000000..682cfdd --- /dev/null +++ b/app/Http/Controllers/PagesController.php @@ -0,0 +1,42 @@ +paginate(8); + return view('pages.index')->with('posts', $posts); + + } + //about page + public function about() + { + return view('pages.about'); + } + + //user page + public function urname($uname) + { + //find user + $finduser = User::where('u_name', '=', $uname)->first(); + if(!$finduser){ + return redirect('/')->with('error' , "Sorry We Can not find any user by this name"); + }else{ + + $posts = Post::where('user_id', '=', $finduser->id)->orderBy('id', 'desc')->paginate(8); + return view('pages.profile')->with(compact('posts', 'finduser')); + + } + } + + + +} diff --git a/app/Http/Controllers/PostsController.php b/app/Http/Controllers/PostsController.php new file mode 100644 index 0000000..e4c4d49 --- /dev/null +++ b/app/Http/Controllers/PostsController.php @@ -0,0 +1,208 @@ +middleware('auth', [ 'except' =>['singlepost']]); + } + + + + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\Response + */ + public function index() + { + + $user_id =Auth()->user()->id; + $posts = Post::where('user_id', '=', $user_id)->orderBy('id', 'desc')->paginate(8); + return view('posts.index')->with('posts', $posts); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + return view('posts.create'); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(Request $request) + { + $this->validate($request, [ + + 'title' => 'required', + 'body' => 'required', + 'cover_img' => 'image|nullable|max:1999' + ]); + + + //handel image + if($request->hasFile('cover_img')){ + //FILE NAME WITH EXT + $fileNameWithExt = $request->file('cover_img')->getClientOriginalName(); + //ONLY FILE NAME + $fileName = pathinfo($fileNameWithExt, PATHINFO_FILENAME); + //ONLY EXT + $extension = $request->file('cover_img')->getClientOriginalExtension(); + //new file name create + $fileNameToStore = 'JBlog_'.time().'.'.$extension; + //store + $path = $request->file('cover_img')->storeAs('public/cover_img' , $fileNameToStore); + + } else{ + $fileNameToStore = 'noimage.jpg'; + } + + // other data + + $post = new Post; + $post->title = $request->input('title'); + $post->body = $request->input('body'); + $post->user_id = Auth()->user()->id; + $post->cover_img = $fileNameToStore; + $post->save(); + return redirect('/admin')->with('success', 'Post Created'); + } + + /** + * Display the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + + public function singlepost($uname, $id) + { + //find user + $finduser = User::where('u_name', '=', $uname)->first(); + + if(!$finduser){ + return redirect('/')->with('error' , "Sorry We Can not find any user by this name"); + }else{ + //find post + $post = Post::find($id); + + if(!$post){ + return redirect('/')->with('error' , "Sorry We Can not find any post by this id"); + } + else{ + $post = Post::find($id); + return view('posts.show')->with('post' , $post); + } + + } + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function edit($id) + { + $post = Post::find($id); + if(auth()->user()->id == $post->user_id){ + return view('posts.edit')->with('post' , $post); + } + else + return redirect('admin')->with('error' , "Be Carefull. You are trying to Edit a Post that's does not belongs to you"); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update(Request $request, $id) + { + $this->validate($request, [ + + 'title' => 'required', + 'body' => 'required', + 'cover_img' => 'image|nullable|max:1999' + ]); + + //handel image + if($request->hasFile('cover_img')){ + //FILE NAME WITH EXT + $fileNameWithExt = $request->file('cover_img')->getClientOriginalName(); + //ONLY FILE NAME + $fileName = pathinfo($fileNameWithExt, PATHINFO_FILENAME); + //ONLY EXT + $extension = $request->file('cover_img')->getClientOriginalExtension(); + //new file name create + $fileNameToStore = 'JBlog_'.time().'.'.$extension; + //store + $path = $request->file('cover_img')->storeAs('public/cover_img' , $fileNameToStore); + + } + + $post = Post::find($id); + $post->title = $request->input('title'); + $post->body = $request->input('body'); + $post->user_id = Auth()->user()->id; + + if($request->hasFile('cover_img')){ + if($post->cover_img != 'noimage.jpg'){ + Storage::delete('public/cover_img/'.$post->cover_img); + } + $post->cover_img = $fileNameToStore; + } + $post->save(); + return redirect('/admin')->with('success', 'Post Update'); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + $post = Post::find($id); + if(auth()->user()->id == $post->user_id){ + + //delete image + if($post->cover_img != 'noimage.jpg'){ + Storage::delete('public/cover_img/'.$post->cover_img); + } + $post->delete(); + return redirect('/admin')->with('success', 'Post Deleted'); + + + }else + return redirect('admin')->with('error' , "Be Carefull. You are trying to Delete a Post that's does not belongs to you"); + } +} diff --git a/app/Http/Middleware/RedirectIfAuthenticated.php b/app/Http/Middleware/RedirectIfAuthenticated.php index e4cec9c..e786472 100644 --- a/app/Http/Middleware/RedirectIfAuthenticated.php +++ b/app/Http/Middleware/RedirectIfAuthenticated.php @@ -18,7 +18,7 @@ class RedirectIfAuthenticated public function handle($request, Closure $next, $guard = null) { if (Auth::guard($guard)->check()) { - return redirect('/home'); + return redirect('/admin'); } return $next($request); diff --git a/app/Post.php b/app/Post.php new file mode 100644 index 0000000..4ad0dc4 --- /dev/null +++ b/app/Post.php @@ -0,0 +1,37 @@ +belongsTo('App\User'); + } + +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 35471f6..9c71133 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,8 @@ class AppServiceProvider extends ServiceProvider */ public function boot() { - // + Schema::defaultStringLength(191); + } /** diff --git a/app/User.php b/app/User.php index bfd96a6..ebc23d3 100644 --- a/app/User.php +++ b/app/User.php @@ -15,7 +15,7 @@ class User extends Authenticatable * @var array */ protected $fillable = [ - 'name', 'email', 'password', + 'name','u_name', 'email','address', 'password', ]; /** @@ -26,4 +26,15 @@ class User extends Authenticatable protected $hidden = [ 'password', 'remember_token', ]; + + + /** + * This is relation model + * + */ + + public function posts() + { + return $this->hasMany('App\Post'); + } } diff --git a/composer.json b/composer.json index 65bf8b4..56f72bd 100644 --- a/composer.json +++ b/composer.json @@ -1,14 +1,20 @@ { "name": "laravel/laravel", "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], + "keywords": [ + "framework", + "laravel" + ], "license": "MIT", "type": "project", "require": { "php": "^7.1.3", + "albertcht/invisible-recaptcha": "^1.9", "fideloper/proxy": "^4.0", "laravel/framework": "5.6.*", - "laravel/tinker": "^1.0" + "laravel/socialite": "3.2.0", + "laravel/tinker": "^1.0", + "unisharp/laravel-ckeditor": "^4.7" }, "require-dev": { "filp/whoops": "^2.0", @@ -33,8 +39,7 @@ }, "extra": { "laravel": { - "dont-discover": [ - ] + "dont-discover": [] } }, "scripts": { @@ -56,4 +61,4 @@ }, "minimum-stability": "dev", "prefer-stable": true -} +} \ No newline at end of file diff --git a/composer.lock b/composer.lock index 55137ce..5d7d762 100644 --- a/composer.lock +++ b/composer.lock @@ -1,11 +1,70 @@ { "_readme": [ "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "d5bca48e56bbf3a25645858fcab9c285", + "content-hash": "62558a3585d0bed46151669f7928e4aa", "packages": [ + { + "name": "albertcht/invisible-recaptcha", + "version": "v1.9.3", + "source": { + "type": "git", + "url": "https://github.com/albertcht/invisible-recaptcha.git", + "reference": "0e03f61f55fdff961f203e9d96cbd9ecfb152df5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/albertcht/invisible-recaptcha/zipball/0e03f61f55fdff961f203e9d96cbd9ecfb152df5", + "reference": "0e03f61f55fdff961f203e9d96cbd9ecfb152df5", + "shasum": "" + }, + "require": { + "guzzlehttp/guzzle": "^6.2", + "illuminate/support": "^5.0|^6.0", + "php": "^5.6.4 || ^7.0" + }, + "require-dev": { + "illuminate/view": "^5.0|^6.0", + "phpunit/phpunit": "^8.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "AlbertCht\\InvisibleReCaptcha\\InvisibleReCaptchaServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "AlbertCht\\InvisibleReCaptcha\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Albert Chen", + "homepage": "https://www.albert-chen.com" + } + ], + "description": "Invisible reCAPTCHA For Laravel.", + "keywords": [ + "captcha", + "invisible", + "invisible-recaptcha", + "laravel", + "laravel5", + "no-captcha", + "php", + "recaptcha" + ], + "time": "2019-09-05T17:22:43+00:00" + }, { "name": "dnoegel/php-xdg-base-dir", "version": "0.1", @@ -366,6 +425,193 @@ ], "time": "2018-02-07T20:20:57+00:00" }, + { + "name": "guzzlehttp/guzzle", + "version": "6.3.3", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba", + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba", + "shasum": "" + }, + "require": { + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.4", + "php": ">=5.5" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", + "psr/log": "^1.0" + }, + "suggest": { + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.3-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "time": "2018-04-22T15:46:56+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "v1.3.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "shasum": "" + }, + "require": { + "php": ">=5.5.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "time": "2016-12-20T10:07:11+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.6.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "239400de7a173fe9901b9ac7c06497751f00727a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a", + "reference": "239400de7a173fe9901b9ac7c06497751f00727a", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0", + "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "ext-zlib": "*", + "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" + }, + "suggest": { + "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Schultze", + "homepage": "https://github.com/Tobion" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "time": "2019-07-01T23:21:34+00:00" + }, { "name": "jakub-onderka/php-console-color", "version": "0.1", @@ -592,6 +838,69 @@ ], "time": "2018-04-09T16:07:04+00:00" }, + { + "name": "laravel/socialite", + "version": "v3.2.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/socialite.git", + "reference": "7194c0cd9fb2ce449669252b8ec316b85b7de481" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/socialite/zipball/7194c0cd9fb2ce449669252b8ec316b85b7de481", + "reference": "7194c0cd9fb2ce449669252b8ec316b85b7de481", + "shasum": "" + }, + "require": { + "guzzlehttp/guzzle": "~6.0", + "illuminate/contracts": "~5.4", + "illuminate/http": "~5.4", + "illuminate/support": "~5.4", + "league/oauth1-client": "~1.0", + "php": ">=5.6.4" + }, + "require-dev": { + "mockery/mockery": "~0.9", + "phpunit/phpunit": "~4.0|~5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Socialite\\SocialiteServiceProvider" + ], + "aliases": { + "Socialite": "Laravel\\Socialite\\Facades\\Socialite" + } + } + }, + "autoload": { + "psr-4": { + "Laravel\\Socialite\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Laravel wrapper around OAuth 1 & OAuth 2 libraries.", + "homepage": "https://laravel.com", + "keywords": [ + "laravel", + "oauth" + ], + "time": "2018-10-18T03:39:04+00:00" + }, { "name": "laravel/tinker", "version": "v1.0.5", @@ -739,6 +1048,69 @@ ], "time": "2018-04-06T09:58:14+00:00" }, + { + "name": "league/oauth1-client", + "version": "1.7.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/oauth1-client.git", + "reference": "fca5f160650cb74d23fc11aa570dd61f86dcf647" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/oauth1-client/zipball/fca5f160650cb74d23fc11aa570dd61f86dcf647", + "reference": "fca5f160650cb74d23fc11aa570dd61f86dcf647", + "shasum": "" + }, + "require": { + "guzzlehttp/guzzle": "^6.0", + "php": ">=5.5.0" + }, + "require-dev": { + "mockery/mockery": "^0.9", + "phpunit/phpunit": "^4.0", + "squizlabs/php_codesniffer": "^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "League\\OAuth1\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Corlett", + "email": "bencorlett@me.com", + "homepage": "http://www.webcomm.com.au", + "role": "Developer" + } + ], + "description": "OAuth 1.0 Client Library", + "keywords": [ + "Authentication", + "SSO", + "authorization", + "bitbucket", + "identity", + "idp", + "oauth", + "oauth1", + "single sign on", + "trello", + "tumblr", + "twitter" + ], + "time": "2016-08-17T00:36:58+00:00" + }, { "name": "monolog/monolog", "version": "1.23.0", @@ -1018,6 +1390,56 @@ ], "time": "2017-02-14T16:28:37+00:00" }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06T14:39:51+00:00" + }, { "name": "psr/log", "version": "1.0.2", @@ -1185,6 +1607,46 @@ ], "time": "2018-04-02T05:41:44+00:00" }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "time": "2019-03-08T08:55:37+00:00" + }, { "name": "ramsey/uuid", "version": "3.7.3", @@ -2173,6 +2635,60 @@ "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", "time": "2017-11-27T11:13:29+00:00" }, + { + "name": "unisharp/laravel-ckeditor", + "version": "4.7.2", + "source": { + "type": "git", + "url": "https://github.com/UniSharp/laravel-ckeditor.git", + "reference": "5c75f3f9128ec8567955913074795deee5869c5c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/UniSharp/laravel-ckeditor/zipball/5c75f3f9128ec8567955913074795deee5869c5c", + "reference": "5c75f3f9128ec8567955913074795deee5869c5c", + "shasum": "" + }, + "require": { + "illuminate/support": "~5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Unisharp\\Ckeditor\\": "./" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0+", + "LGPL-2.1+", + "MPL-1.1+" + ], + "authors": [ + { + "name": "CKSource", + "homepage": "http://cksource.com" + }, + { + "name": "UniSharp Ltd. (Composer Package Maintainer)", + "homepage": "http://www.unisharp.com" + } + ], + "description": "JavaScript WYSIWYG web text editor (for laravel).", + "homepage": "http://ckeditor.com", + "keywords": [ + "CKEditor", + "editor", + "fckeditor", + "html", + "javascript", + "laravel", + "richtext", + "text", + "wysiwyg" + ], + "time": "2017-11-01T04:33:40+00:00" + }, { "name": "vlucas/phpdotenv", "version": "v2.4.0", @@ -3310,6 +3826,7 @@ "mock", "xunit" ], + "abandoned": true, "time": "2018-04-06T08:14:40+00:00" }, { @@ -3975,4 +4492,4 @@ "php": "^7.1.3" }, "platform-dev": [] -} +} \ No newline at end of file diff --git a/config/app.php b/config/app.php index b16e7f7..ae03539 100644 --- a/config/app.php +++ b/config/app.php @@ -146,6 +146,9 @@ Illuminate\Translation\TranslationServiceProvider::class, Illuminate\Validation\ValidationServiceProvider::class, Illuminate\View\ViewServiceProvider::class, + Unisharp\Ckeditor\ServiceProvider::class, + AlbertCht\InvisibleReCaptcha\InvisibleReCaptchaServiceProvider::class, + /* * Package Service Providers... @@ -159,7 +162,7 @@ // App\Providers\BroadcastServiceProvider::class, App\Providers\EventServiceProvider::class, App\Providers\RouteServiceProvider::class, - + ], /* diff --git a/config/mail.php b/config/mail.php index bb92224..974d341 100644 --- a/config/mail.php +++ b/config/mail.php @@ -29,7 +29,7 @@ | */ - 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), + 'host' => env('MAIL_HOST', 'smtp.mailtrap.io'), /* |-------------------------------------------------------------------------- @@ -42,7 +42,7 @@ | */ - 'port' => env('MAIL_PORT', 587), + 'port' => env('MAIL_PORT', 2525), /* |-------------------------------------------------------------------------- diff --git a/config/services.php b/config/services.php index aa1f7f8..2969740 100644 --- a/config/services.php +++ b/config/services.php @@ -35,4 +35,24 @@ 'secret' => env('STRIPE_SECRET'), ], + 'facebook' => [ + 'client_id' => env('facebook_CLIENT_ID'), // Your facebook Client ID + 'client_secret' => env('facebook_CLIENT_SECRET'), // Your facebook Client Secret + 'redirect' => 'http://localhost:8000/login/facebook/callback', + ], + + 'google' => [ + 'client_id' => env('google_CLIENT_ID'), // Your google Client ID + 'client_secret' => env('google_CLIENT_SECRET'), // Your google Client Secret + 'redirect' => 'http://localhost:8000/login/google/callback', + ], + + 'twitter' => [ + 'client_id' => env('twitter_CLIENT_ID'), // Your twitter Client ID + 'client_secret' => env('twitter_CLIENT_SECRET'), // Your twitter Client Secret + 'redirect' => 'http://localhost:8000/login/twitter/callback', + ], + + + ]; diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index 689cbee..0178869 100644 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -16,7 +16,9 @@ public function up() Schema::create('users', function (Blueprint $table) { $table->increments('id'); $table->string('name'); + $table->string('u_name')->unique(); $table->string('email')->unique(); + $table->mediumText('address'); $table->string('password'); $table->rememberToken(); $table->timestamps(); diff --git a/database/migrations/2019_10_11_075832_create_posts_table.php b/database/migrations/2019_10_11_075832_create_posts_table.php new file mode 100644 index 0000000..538cc90 --- /dev/null +++ b/database/migrations/2019_10_11_075832_create_posts_table.php @@ -0,0 +1,35 @@ +bigIncrements('id'); + $table->integer('user_id'); + $table->mediumText('title'); + $table->mediumText('body'); + $table->string('cover_img'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('posts'); + } +} diff --git a/package.json b/package.json index e81ab87..c672c9c 100644 --- a/package.json +++ b/package.json @@ -19,4 +19,4 @@ "lodash": "^4.17.4", "vue": "^2.5.7" } -} +} \ No newline at end of file diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php new file mode 100644 index 0000000..b586851 --- /dev/null +++ b/resources/views/auth/login.blade.php @@ -0,0 +1,79 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+
{{ __('Login') }}
+ +
+
+ @csrf + +
+ + +
+ + + @if ($errors->has('email')) + + {{ $errors->first('email') }} + + @endif +
+
+ +
+ + +
+ + + @if ($errors->has('password')) + + {{ $errors->first('password') }} + + @endif +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + + {{ __('Forgot Your Password?') }} + +
+
+
+
+ + + +
+
+
+
+@endsection diff --git a/resources/views/auth/passwords/email.blade.php b/resources/views/auth/passwords/email.blade.php new file mode 100644 index 0000000..4d46900 --- /dev/null +++ b/resources/views/auth/passwords/email.blade.php @@ -0,0 +1,47 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+
{{ __('Reset Password') }}
+ +
+ @if (session('status')) +
+ {{ session('status') }} +
+ @endif + +
+ @csrf + +
+ + +
+ + + @if ($errors->has('email')) + + {{ $errors->first('email') }} + + @endif +
+
+ +
+
+ +
+
+
+
+
+
+
+
+@endsection diff --git a/resources/views/auth/passwords/reset.blade.php b/resources/views/auth/passwords/reset.blade.php new file mode 100644 index 0000000..292f302 --- /dev/null +++ b/resources/views/auth/passwords/reset.blade.php @@ -0,0 +1,71 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+
{{ __('Reset Password') }}
+ +
+
+ @csrf + + + +
+ + +
+ + + @if ($errors->has('email')) + + {{ $errors->first('email') }} + + @endif +
+
+ +
+ + +
+ + + @if ($errors->has('password')) + + {{ $errors->first('password') }} + + @endif +
+
+ +
+ + +
+ + + @if ($errors->has('password_confirmation')) + + {{ $errors->first('password_confirmation') }} + + @endif +
+
+ +
+
+ +
+
+
+
+
+
+
+
+@endsection diff --git a/resources/views/auth/register.blade.php b/resources/views/auth/register.blade.php new file mode 100644 index 0000000..c6c404d --- /dev/null +++ b/resources/views/auth/register.blade.php @@ -0,0 +1,109 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+
{{ __('Register') }}
+ +
+
+ @csrf + +
+ + +
+ + + @if ($errors->has('name')) + + {{ $errors->first('name') }} + + @endif +
+
+ +
+ + +
+ + + @if ($errors->has('u_name')) + + {{ $errors->first('u_name') }} + + @endif +
+
+ +
+ + +
+ + + @if ($errors->has('email')) + + {{ $errors->first('email') }} + + @endif +
+
+ + +
+ + +
+ + + @if ($errors->has('address')) + + {{ $errors->first('address') }} + + @endif +
+
+ +
+ + +
+ +

+ Your password must be more than 8 characters long, should contain at-least 1 Uppercase, 1 Lowercase, 1 Numeric and 1 special character. +

+ + @if ($errors->has('password')) + + {{ $errors->first('password') }} + + @endif +
+
+ +
+ + +
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+
+@endsection diff --git a/resources/views/inc/message.blade.php b/resources/views/inc/message.blade.php new file mode 100644 index 0000000..3d07c27 --- /dev/null +++ b/resources/views/inc/message.blade.php @@ -0,0 +1,45 @@ +{{-- error message --}} + +@if(count($errors)>0) + +@foreach ($errors->all() as $error) + + + +@endforeach + +@endif + + {{-- session success message --}} + +@if (session('success')) + + + + +@endif + + + {{-- session error message --}} + + @if (session('error')) + + + + +@endif \ No newline at end of file diff --git a/resources/views/inc/nav.blade.php b/resources/views/inc/nav.blade.php new file mode 100644 index 0000000..982db37 --- /dev/null +++ b/resources/views/inc/nav.blade.php @@ -0,0 +1,54 @@ + \ No newline at end of file diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php new file mode 100644 index 0000000..9369f27 --- /dev/null +++ b/resources/views/layouts/app.blade.php @@ -0,0 +1,51 @@ + + + + + + + + + + {{ config('app.name') }} + + + + + + + + + @include('inc.nav') +
+ + @include('inc.message') +
+ @yield('content') +
+
+ + + + + + + + + + + + diff --git a/resources/views/pages/about.blade.php b/resources/views/pages/about.blade.php new file mode 100644 index 0000000..721bc22 --- /dev/null +++ b/resources/views/pages/about.blade.php @@ -0,0 +1,8 @@ +@extends('layouts.app') + +@section('content') + + +

About page

+ + @endsection diff --git a/resources/views/pages/index.blade.php b/resources/views/pages/index.blade.php new file mode 100644 index 0000000..6d64bc9 --- /dev/null +++ b/resources/views/pages/index.blade.php @@ -0,0 +1,61 @@ +@extends('layouts.app') + +@section('content') + + + +
+ +

Welcome!

+

I am Joy Dey

+

This Is a simple Blog App. Please Log in and create a post, to see details.

+ +
+ + + + + @if (count($posts)>0) + @foreach ($posts as $post) + +
+
+

{{Str_limit($post->title)}}

+
+ +
+
+ JBlog +
+
+
+ +
{!!Str_limit($post->body)!!}
+
+ Read More +
+ + +
+
+
+ + +
+ + @endforeach + {{$posts->links()}} + @else +

Ther is no post

+ @endif + + + + @endsection diff --git a/resources/views/pages/profile.blade.php b/resources/views/pages/profile.blade.php new file mode 100644 index 0000000..e8e0438 --- /dev/null +++ b/resources/views/pages/profile.blade.php @@ -0,0 +1,54 @@ +@extends('layouts.app') + +@section('content') + +
+ +

{{$finduser->name}}'s Post

+ +
+ + @if (count($posts)>0) + @foreach ($posts as $post) + +
+
+

{{Str_limit($post->title)}}

+
+ +
+
+ JBlog +
+
+
+ +
{!!Str_limit($post->body)!!}
+
+ Read More +
+ + +
+
+
+ + +
+ + @endforeach + {{$posts->links()}} + @else +

Ther is no post

+ @endif + + + + @endsection diff --git a/resources/views/posts/create.blade.php b/resources/views/posts/create.blade.php new file mode 100644 index 0000000..4a472af --- /dev/null +++ b/resources/views/posts/create.blade.php @@ -0,0 +1,52 @@ +@extends('layouts.app') + +@section('content') + + +

Create Post

+ + +
+
+
+ {{csrf_field()}} + + {{-- Post title input --}} +
+
+ Post Title +
+ +
+ + {{-- Post Image input --}} +
+
+ Upload +
+
+ + +
+
+ + {{-- Post body input --}} +
+
+ Post Body +
+ +
+ + + + {{-- Post Submit Button --}} + + +
+
+ +
+ + + @endsection diff --git a/resources/views/posts/edit.blade.php b/resources/views/posts/edit.blade.php new file mode 100644 index 0000000..92de468 --- /dev/null +++ b/resources/views/posts/edit.blade.php @@ -0,0 +1,53 @@ +@extends('layouts.app') + +@section('content') + + +

Edit Post

+ + +
+
+
+ {{-- {{route('admin.update', $post->id)}} --}} + {{csrf_field()}} + @method('PUT') + + + {{-- Post title input --}} +
+
+ Post Title +
+ +
+ + {{-- Post Image input --}} +
+
+ Upload +
+
+ + +
+
+ + {{-- Post body input --}} +
+
+ Post Body +
+ +
+ + {{-- Post Submit Button --}} + + +
+
+ +
+ + + @endsection diff --git a/resources/views/posts/index.blade.php b/resources/views/posts/index.blade.php new file mode 100644 index 0000000..d5c6492 --- /dev/null +++ b/resources/views/posts/index.blade.php @@ -0,0 +1,72 @@ +@extends('layouts.app') + +@section('content') + +
+
+
+
+
HELLO {{Auth::User()->name}}
+ +
+ @if (session('status')) + + @endif +

You are logged in!

+
+ + Create Post +
+ + + + + @if (count($posts)>0) + @foreach ($posts as $post) + +
+
+

{{Str_limit($post->title)}}

+
+
+
+ +
+ JBlog +
+ +
+ Open Post + Edit +
+ {{csrf_field()}} + @method('DELETE') + +
+
+ +
+
+ + + +
+ + @endforeach + {{$posts->links()}} + @else +

Ther is no post. Create One.

+ @endif + + + +
+
+
+@endsection diff --git a/resources/views/posts/show.blade.php b/resources/views/posts/show.blade.php new file mode 100644 index 0000000..bb2dc85 --- /dev/null +++ b/resources/views/posts/show.blade.php @@ -0,0 +1,40 @@ +@extends('layouts.app') + +@section('content') + + + +
+
{{$post->title}}
+
+
Created By: + {{$post->user->name}} + +
+
+ JBlog + +

{!!$post->body!!}

+
+ +
+ + @if (!Auth::guest()) + @if (Auth::user()->id == $post->user_id) + +
+ Edit + +
+ {{csrf_field()}} + @method('DELETE') + +
+
+ + @endif + @endif +@endsection diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php deleted file mode 100644 index a246e10..0000000 --- a/resources/views/welcome.blade.php +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - Laravel - - - - - - - - -
- @if (Route::has('login')) - - @endif - -
-
- Laravel -
- - -
-
- - diff --git a/routes/api.php b/routes/api.php index c641ca5..0e1e038 100644 --- a/routes/api.php +++ b/routes/api.php @@ -16,3 +16,5 @@ Route::middleware('auth:api')->get('/user', function (Request $request) { return $request->user(); }); + + diff --git a/routes/web.php b/routes/web.php index 810aa34..576a157 100644 --- a/routes/web.php +++ b/routes/web.php @@ -11,6 +11,36 @@ | */ -Route::get('/', function () { - return view('welcome'); -}); +// Route::get('/', function () { +// return view('welcome'); +// }); + +//public page + +Route::get('/', 'PagesController@index'); +Route::get('/about', 'PagesController@about'); + +Route::get('/profile/{uname}', 'PagesController@urname'); + +Auth::routes(); + +//admin page +Route::get('admin', 'PostsController@index'); + +Route::get('admin/create', 'PostsController@create'); + +Route::get('/profile/{uname}/{id}', 'PostsController@singlepost'); + +Route::get('admin/{id}/edit', 'PostsController@edit'); + +Route::post('admin/{id}/update', 'PostsController@update'); + +Route::delete('admin/{id}/delete', 'PostsController@destroy'); + + + + +//socialite +Route::get('login/{service}', 'Auth\LoginController@redirectToProvider'); +Route::get('login/{service}/callback', 'Auth\LoginController@handleProviderCallback'); + From ca14264f326f187273a73cb12343dcee43833bbf Mon Sep 17 00:00:00 2001 From: JOY DEY <48199795+joydey1800@users.noreply.github.com> Date: Sun, 13 Oct 2019 18:51:51 +0530 Subject: [PATCH 02/10] Update create.blade.php --- resources/views/posts/create.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/posts/create.blade.php b/resources/views/posts/create.blade.php index 4a472af..e8bc7c3 100644 --- a/resources/views/posts/create.blade.php +++ b/resources/views/posts/create.blade.php @@ -8,7 +8,7 @@
-
+ {{csrf_field()}} {{-- Post title input --}} From 8cf31719ae75728ab642e9387161eb42d8cda74f Mon Sep 17 00:00:00 2001 From: JOY DEY <48199795+joydey1800@users.noreply.github.com> Date: Sun, 13 Oct 2019 18:52:35 +0530 Subject: [PATCH 03/10] Update edit.blade.php --- resources/views/posts/edit.blade.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/resources/views/posts/edit.blade.php b/resources/views/posts/edit.blade.php index 92de468..b4030c6 100644 --- a/resources/views/posts/edit.blade.php +++ b/resources/views/posts/edit.blade.php @@ -8,8 +8,7 @@
- - {{-- {{route('admin.update', $post->id)}} --}} + {{csrf_field()}} @method('PUT') From 06a86e5c085bd6fd9442e91356ad2663d88990cf Mon Sep 17 00:00:00 2001 From: JOY DEY <48199795+joydey1800@users.noreply.github.com> Date: Sun, 13 Oct 2019 18:53:25 +0530 Subject: [PATCH 04/10] Update index.blade.php --- resources/views/posts/index.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/posts/index.blade.php b/resources/views/posts/index.blade.php index d5c6492..1d6a2f7 100644 --- a/resources/views/posts/index.blade.php +++ b/resources/views/posts/index.blade.php @@ -20,7 +20,7 @@ Create Post
- + @if (count($posts)>0) From d65b4b1fbefc8fb788c620dc44acb2a4536224a9 Mon Sep 17 00:00:00 2001 From: JOY DEY <48199795+joydey1800@users.noreply.github.com> Date: Sun, 13 Oct 2019 18:54:20 +0530 Subject: [PATCH 05/10] Update web.php --- routes/web.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/routes/web.php b/routes/web.php index 576a157..813c496 100644 --- a/routes/web.php +++ b/routes/web.php @@ -27,17 +27,19 @@ //admin page Route::get('admin', 'PostsController@index'); +Route::post('admin/store', 'PostsController@store'); + Route::get('admin/create', 'PostsController@create'); Route::get('/profile/{uname}/{id}', 'PostsController@singlepost'); Route::get('admin/{id}/edit', 'PostsController@edit'); -Route::post('admin/{id}/update', 'PostsController@update'); +Route::put('admin/{id}/update', 'PostsController@update'); Route::delete('admin/{id}/delete', 'PostsController@destroy'); - + //socialite From f30f9fcee9456bab9e3d9172ecc3343fa17ae979 Mon Sep 17 00:00:00 2001 From: JOY DEY <48199795+joydey1800@users.noreply.github.com> Date: Sun, 13 Oct 2019 19:13:19 +0530 Subject: [PATCH 06/10] Update README.md --- README.md | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7d0c67c..9d32cd1 100644 --- a/README.md +++ b/README.md @@ -15,12 +15,13 @@ I did use - social login feature which allows users to login and sign up via their Google+/Facebook/Twitter/Github accounts. - Allow photos to be inserted into blog posts. -- Allow CK editing of blog posts with rich formatting support. +- Allow ckeditor editing of blog posts with rich formatting support. ### Configuration for social login For social login feature, we must configure .env +[Socialite](https://laravel.com/docs/6.x/socialite) ``` @@ -36,6 +37,12 @@ twitter_CLIENT_SECRET = ``` + +### Configuration for CKeditor + +[CKeditor](https://github.com/UniSharp/laravel-ckeditor) + + ### Configuration for Storage I use Storage link command for Storage sortcut @@ -43,4 +50,12 @@ I use Storage link command for Storage sortcut ``` php artisan storage:link -``` \ No newline at end of file +``` + + +### Configuration for Database + +``` +php artisan migrate + +``` From 6c85695e8965af71d5a56b08253abb465a2584ea Mon Sep 17 00:00:00 2001 From: JOY DEY <48199795+joydey1800@users.noreply.github.com> Date: Sun, 13 Oct 2019 19:13:56 +0530 Subject: [PATCH 07/10] Update show.blade.php --- resources/views/posts/show.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/posts/show.blade.php b/resources/views/posts/show.blade.php index bb2dc85..a640293 100644 --- a/resources/views/posts/show.blade.php +++ b/resources/views/posts/show.blade.php @@ -28,7 +28,7 @@
Edit - + {{csrf_field()}} @method('DELETE') From 2922bcbfb53e982bf96ca5375a2eb21f771fb7c0 Mon Sep 17 00:00:00 2001 From: JOY DEY <48199795+joydey1800@users.noreply.github.com> Date: Sun, 13 Oct 2019 19:23:56 +0530 Subject: [PATCH 08/10] Update PostsController.php --- app/Http/Controllers/PostsController.php | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/app/Http/Controllers/PostsController.php b/app/Http/Controllers/PostsController.php index e4c4d49..758b3ba 100644 --- a/app/Http/Controllers/PostsController.php +++ b/app/Http/Controllers/PostsController.php @@ -107,16 +107,25 @@ public function singlepost($uname, $id) if(!$finduser){ return redirect('/')->with('error' , "Sorry We Can not find any user by this name"); }else{ + //find post $post = Post::find($id); - if(!$post){ - return redirect('/')->with('error' , "Sorry We Can not find any post by this id"); - } - else{ - $post = Post::find($id); - return view('posts.show')->with('post' , $post); - } + if($finduser->id == $post->user_id){ + + if(!$post){ + return redirect('/')->with('error' , "Sorry We Can not find any post by this id"); + } + else{ + $post = Post::find($id); + return view('posts.show')->with('post' , $post); + } + } + else{ + return redirect('/')->with('error' , "Sorry We Can not find any post by this information"); + } + + } } From a5aff4f80e7fbeb83547f092074afd89c2ce2ef8 Mon Sep 17 00:00:00 2001 From: JOY DEY <48199795+joydey1800@users.noreply.github.com> Date: Sun, 13 Oct 2019 19:33:21 +0530 Subject: [PATCH 09/10] Update README.md --- README.md | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9d32cd1..e4caadc 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,17 @@ I did use - Allow photos to be inserted into blog posts. - Allow ckeditor editing of blog posts with rich formatting support. - +### Link + +- Home page link: `````` +- About page link: ```/``` +- Admin page link: ```/``` +- One User All Post Link: ```//``` +- One Single Post Link: ```///``` + + + + ### Configuration for social login For social login feature, we must configure .env @@ -38,9 +48,11 @@ twitter_CLIENT_SECRET = ``` -### Configuration for CKeditor +### Configuration for CKeditor [CKeditor](https://github.com/UniSharp/laravel-ckeditor) -[CKeditor](https://github.com/UniSharp/laravel-ckeditor) +``` +composer require unisharp/laravel-ckeditor +``` ### Configuration for Storage From b4dd6488f00be5badb421df845cfc677b1b74175 Mon Sep 17 00:00:00 2001 From: JOY DEY <48199795+joydey1800@users.noreply.github.com> Date: Sun, 13 Oct 2019 19:36:29 +0530 Subject: [PATCH 10/10] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index e4caadc..0519400 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ I did use - Allow photos to be inserted into blog posts. - Allow ckeditor editing of blog posts with rich formatting support. + ### Link - Home page link: `````` @@ -24,6 +25,7 @@ I did use - Admin page link: ```/``` - One User All Post Link: ```//``` - One Single Post Link: ```///``` +And I use Link verification.