{"id":431,"date":"2019-09-03T08:24:01","date_gmt":"2019-09-03T08:24:01","guid":{"rendered":"https:\/\/docs.theironnetwork.org\/vuely\/?page_id=431"},"modified":"2019-09-25T03:32:42","modified_gmt":"2019-09-25T03:32:42","slug":"passport-authentication","status":"publish","type":"page","link":"https:\/\/docs.theironnetwork.org\/vuely\/passport-authentication\/","title":{"rendered":"Passport Authentication"},"content":{"rendered":"\n<h5>Step 1: Create Controller<\/h5>\n\n\n\n<p>Create new controller in<code>Http\/Controllers\/AuthController.php<\/code> by the following command:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">php artisan make:controller AuthController<\/pre>\n\n\n\n<p>And put below code:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"> <br>&lt;?php<br>namespace App\\Http\\Controllers;<br>use Illuminate\\Http\\Request;<br>use Illuminate\\Support\\Facades\\Auth;<br>use Carbon\\Carbon;<br>use App\\User;<br>use DB;<br>use Validator;<br> <br>class AuthController extends Controller<br>{<br>  private $successStatus = ['api_status' =&gt;1 ,'code' =&gt; 200,];<br>  private $wrongHTTP = ['response'=&gt;['api_status'=&gt;0,'code'=&gt;400,<br>  'message'=&gt;'Your HTTP method is not correct']];<br>    <br>  public function signup(Request $request)<br>  {<br>     if($request-&gt;isMethod('post'))<br>     {$validator = Validator::make($request-&gt;all(), [ <br>                        'name' =&gt; 'required', <br>                        'email' =&gt; 'required|email', <br>                        'password' =&gt; 'required', <br>                        ]);<br>      if ($validator-&gt;fails()) {        <br>            return response()-&gt;json(['response'=&gt;[<br>                                'code'=&gt;400,<br>                                'api_status'=&gt;0,<br>                                'message'=&gt;'Data is not in the <br>                                 proper format',]]);        <br>            }<br>       $email = $request-&gt;email;<br>       $eid =DB::table('users')-&gt;where('email' , $email)-&gt;exists();<br>       if($eid == true)<br>       {<br>       return response()-&gt;json(['response'=&gt;[<br>                      'api_status' =&gt; 0 ,<br>                      'code' =&gt; 400,<br>                      'message'=&gt; 'This email already exist'<br>                    ]],400);<br>            }<br>       else<br>       {<br>        $input = $request-&gt;all(); <br>        $input['password'] = bcrypt($input['password']); <br>        $user = User::create($input);<br>        $token =  $user-&gt;createToken('Personal Access Token')-&gt; accessToken; <br>        $name =  $user-&gt;name;<br>        $email = $user-&gt;email;<br>        return response()-&gt;json(['response' =&gt; [<br>                      'api_status'=&gt;1,<br>                      'code'=&gt;201,<br>                      'message' =&gt; 'Successfully registered',<br>                      ]<br>              ],201); <br>            }<br>        }<br>            return response()-&gt;json($this -&gt; wrongHTTP, 400);<br>    }<br>} <\/pre>\n\n\n\n<h5>Step 2: Create Route<\/h5>\n\n\n\n<p>Open <code>api.php<\/code> from routes folder , and replace the code of route with the following<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Route::group([<br>    'prefix' =&gt; 'auth',<br>], function () {<br>    Route::any('signup', 'AuthController@signup');<br>}); <\/pre>\n\n\n\n<h5 id=\"step-3-run-api\"><strong>Step 3: Run API<\/strong><a href=\"#step-3-run-api\"><\/a><\/h5>\n\n\n\n<p>Now we are ready to run our API so run below command to quick run:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">php artisan serve<\/pre>\n\n\n\n<p>you will get an url something like this <code>http:\/\/localhost:8000<\/code>  or <code>http:\/\/127.0.0.1:8000<\/code><\/p>\n\n\n\n<h5>Step 4: Test API<\/h5>\n\n\n\n<p> To test the API, use a tool called Postman, you may have different IP and port number and after the port number, you should use this <code>\/api\/auth\/signup<\/code> <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"https:\/\/docs.theironnetwork.org\/vuely\/wp-content\/uploads\/sites\/2\/2019\/09\/step-control.png\"><img loading=\"lazy\" width=\"497\" height=\"450\" src=\"https:\/\/docs.theironnetwork.org\/vuely\/wp-content\/uploads\/sites\/2\/2019\/09\/step-control.png\" alt=\"\" class=\"wp-image-432\" srcset=\"https:\/\/docs.theironnetwork.org\/vuely\/wp-content\/uploads\/sites\/2\/2019\/09\/step-control.png 497w, https:\/\/docs.theironnetwork.org\/vuely\/wp-content\/uploads\/sites\/2\/2019\/09\/step-control-300x272.png 300w\" sizes=\"(max-width: 497px) 100vw, 497px\" \/><\/a><\/figure><\/div>\n\n\n\n<p><strong>NOTE:<\/strong> If you want to Interact with this api from the frontend (i.e. vuejs), then you need to follow the below steps<\/p>\n\n\n\n<h5>Step 5: Set the URL<\/h5>\n\n\n\n<ol class=\"pl-3\"><li>From 2nd step you will get an URL which looks something like this <code>http:\/\/localhost:8000<\/code> or <code>http:\/\/127.0.0.1:8000<\/code> <\/li><li>Create a webServices folder at location <code>resources\/js\/<\/code><\/li><li>Create a file named <code>index.js<\/code><\/li><li>Then you have to place this <code>http:\/\/127.0.0.1:8000<\/code> url in <code>resources\/js\/webServices\/index.js<\/code> rest of the parameters will remain same.<pre class=\"my-4\">import axios from 'axios';\n\nlet webService = axios.create({\n    baseURL: 'http:\/\/127.0.0.1:8000\/api\/auth'\n});\n\nexport default webService;\n<\/pre><\/li><\/ol>\n\n\n\n<p>5.  For <code>signup <\/code>with laravel-passport, Go to location <code>resources-&gt;js-&gt;views-&gt;session-&gt;SignUpOne.vue <\/code>and add the sign up with laravel passport as shown in screenshot:  <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"https:\/\/docs.theironnetwork.org\/vuely\/wp-content\/uploads\/sites\/2\/2019\/09\/signupone.png\"><img loading=\"lazy\" width=\"942\" height=\"117\" src=\"https:\/\/docs.theironnetwork.org\/vuely\/wp-content\/uploads\/sites\/2\/2019\/09\/signupone.png\" alt=\"\" class=\"wp-image-441\" srcset=\"https:\/\/docs.theironnetwork.org\/vuely\/wp-content\/uploads\/sites\/2\/2019\/09\/signupone.png 942w, https:\/\/docs.theironnetwork.org\/vuely\/wp-content\/uploads\/sites\/2\/2019\/09\/signupone-300x37.png 300w, https:\/\/docs.theironnetwork.org\/vuely\/wp-content\/uploads\/sites\/2\/2019\/09\/signupone-768x95.png 768w\" sizes=\"(max-width: 942px) 100vw, 942px\" \/><\/a><figcaption>SignUpOne.vue<\/figcaption><\/figure><\/div>\n\n\n\n<p>6. For <code>login<\/code> with laravel-passport, Go to location <code>resources-&gt;js-&gt;views-&gt;session-&gt;LoginOne.vue<\/code> and add the login with laravel passport button as mentioned in screenshot.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"https:\/\/docs.theironnetwork.org\/vuely\/wp-content\/uploads\/sites\/2\/2019\/09\/loginone.png\"><img loading=\"lazy\" width=\"955\" height=\"124\" src=\"https:\/\/docs.theironnetwork.org\/vuely\/wp-content\/uploads\/sites\/2\/2019\/09\/loginone.png\" alt=\"\" class=\"wp-image-442\" srcset=\"https:\/\/docs.theironnetwork.org\/vuely\/wp-content\/uploads\/sites\/2\/2019\/09\/loginone.png 955w, https:\/\/docs.theironnetwork.org\/vuely\/wp-content\/uploads\/sites\/2\/2019\/09\/loginone-300x39.png 300w, https:\/\/docs.theironnetwork.org\/vuely\/wp-content\/uploads\/sites\/2\/2019\/09\/loginone-768x100.png 768w\" sizes=\"(max-width: 955px) 100vw, 955px\" \/><\/a><figcaption>LoginOne.vue<\/figcaption><\/figure><\/div>\n\n\n\n<p> 7. Call the <code>signupWithLaravel<\/code> method as you have defined on the button click in the <code>SignUpOne.vue<\/code> file and write following lines of code .<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"> signupWithLaravel() {<br>    let userDetail = {<br>      name: this.name,<br>      email: this.email,<br>      password: this.password<br>    };<br> this.$store.dispatch(\"signupUserWithLaravelPassport\", {<br>   userDetail<br> });<br>  },<br>  signInWithFacebook() {<br>    this.$store.dispatch(\"signinUserWithFacebook\", {<br>    router: this.$router<br>  });<br>  ...<\/pre>\n\n\n\n<p> 8. Call the <code>signInwithLaravelPassport<\/code> method as you have defined on the button click in the <code>LoginOne.vue<\/code> file and write following lines of code .LoginOne.vue<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">signInWithLaravelPassport(){<br>  const user = {<br>        email: this.email,<br>        password: this.password<br>      };<br>      this.$store.dispatch(\"signInWithLaravelPassport\", {<br>        user<br>      });<br> },<br>    signInWithFacebook() {<br>      this.$store.dispatch(\"signinUserWithFacebook\");<br>    },<br>    ...<\/pre>\n\n\n\n<p> 9. Next, Go to location <code>resources-&gt;js-&gt;store-&gt;modules-&gt;auth-&gt;index.js<\/code> and add the following lines of code under <code>action<\/code> .<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ actions<br>const actions = {<br>    signupUserWithLaravelPassport(context, payload){<br>        webServices.post('\/signup', JSON.stringify(payload.userDetail),{ headers: {'Content-Type':'application\/json'}})<br>       .then(response =&gt; {<br> if(response.data.response.api_status){<br> context.commit('signUpUser');<br> Nprogress.done();<br> setTimeout(() =&gt; {<br> context.commit('signUpUserSuccess', payload);<br> }, 500);<br> }else{<br> context.commit('signUpUserFailure', response.data.response);<br> }<br>        })<br>        .catch(error =&gt; {<br>            console.log(error);<br>            console.log(\"Failed\");<br>        })           <br>    },<br>  signInWithLaravelPassport(context, payload){<br>   const { user } = payload;<br>     context.commit('loginUser');<br> webServices.post('\/login', JSON.stringify(user), { headers: {'Content-Type':'application\/json'}})<br> .then(response =&gt; {<br> if(response.data.response.api_status){<br> Nprogress.done();<br> setTimeout(() =&gt; {<br> context.commit('loginUserSuccess', user);<br> }, 500);<br> }else{<br> context.commit('loginUserFailure', response.data.response);<br> }<br>        })<br>        .catch(error =&gt; {<br>            console.log(error);<br>            console.log(\"Failed\");<br>        })<br>  },<br> ...<br>}<\/pre>\n\n\n\n<p>10. Then import the following line in the <code>resources\/js\/store\/modules\/auth\/index.jsimport webServices from 'WebServices<\/code>   As described in screenshot:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"https:\/\/docs.theironnetwork.org\/vuely\/wp-content\/uploads\/sites\/2\/2019\/09\/index.png\"><img loading=\"lazy\" width=\"418\" height=\"152\" src=\"https:\/\/docs.theironnetwork.org\/vuely\/wp-content\/uploads\/sites\/2\/2019\/09\/index.png\" alt=\"\" class=\"wp-image-444\" srcset=\"https:\/\/docs.theironnetwork.org\/vuely\/wp-content\/uploads\/sites\/2\/2019\/09\/index.png 418w, https:\/\/docs.theironnetwork.org\/vuely\/wp-content\/uploads\/sites\/2\/2019\/09\/index-300x109.png 300w\" sizes=\"(max-width: 418px) 100vw, 418px\" \/><\/a><figcaption>index.js<\/figcaption><\/figure><\/div>\n\n\n\n<p>11.Then open the webpack.mix.js file from your root directory and add the following line under <code>mix.webpackConfig<\/code> as shown in screenshot<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">'WebServices': path.resolve(__dirname, 'resources\/js\/webServices\/'),<\/pre>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"https:\/\/docs.theironnetwork.org\/vuely\/wp-content\/uploads\/sites\/2\/2019\/09\/webpackmix.png\"><img loading=\"lazy\" width=\"644\" height=\"232\" src=\"https:\/\/docs.theironnetwork.org\/vuely\/wp-content\/uploads\/sites\/2\/2019\/09\/webpackmix.png\" alt=\"\" class=\"wp-image-446\" srcset=\"https:\/\/docs.theironnetwork.org\/vuely\/wp-content\/uploads\/sites\/2\/2019\/09\/webpackmix.png 644w, https:\/\/docs.theironnetwork.org\/vuely\/wp-content\/uploads\/sites\/2\/2019\/09\/webpackmix-300x108.png 300w\" sizes=\"(max-width: 644px) 100vw, 644px\" \/><\/a><figcaption>webpack.mix.js<\/figcaption><\/figure><\/div>\n\n\n\n<p>After doing above steps, run command <code>npm run dev<\/code> to compile the all the project files and then run <code>php artisan serve<\/code> command to run the project.<\/p>\n\n\n\n<p><strong>Note<\/strong>: To test the login or signup functionality, first you need to start mysql to interact with database from your local server. For E.g xampp.<\/p>\n<div class=\"pld-like-dislike-wrap pld-template-1\">\n    <div class=\"pld-like-wrap  pld-common-wrap\">\n    <a href=\"javascript:void(0);\" class=\"pld-like-trigger pld-like-dislike-trigger \" title=\"\" data-post-id=\"431\" data-trigger-type=\"like\" data-restriction=\"cookie\" data-ip-check=\"0\" data-user-check=\"1\">\n                        <i class=\"fas fa-thumbs-up\"><\/i>\n                    <\/a>\n    <span class=\"pld-like-count-wrap pld-count-wrap\">    <\/span>\n<\/div><div class=\"pld-dislike-wrap  pld-common-wrap\">\n    <a href=\"javascript:void(0);\" class=\"pld-dislike-trigger pld-like-dislike-trigger \" title=\"\" data-post-id=\"431\" data-trigger-type=\"dislike\" data-ip-check=\"0\" data-restriction=\"cookie\" data-user-check=\"1\">\n                        <i class=\"fas fa-thumbs-down\"><\/i>\n                    <\/a>\n    <span class=\"pld-dislike-count-wrap pld-count-wrap\"><\/span>\n<\/div><\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>Step 1: Create Controller Create new controller inHttp\/Controllers\/AuthController.php by the following command: php artisan make:controller AuthController And put below code: &lt;?phpnamespace App\\Http\\Controllers;use Illuminate\\Http\\Request;use Illuminate\\Support\\Facades\\Auth;use Carbon\\Carbon;use App\\User;use DB;use Validator; class AuthController extends Controller{ private $successStatus = [&#8216;api_status&#8217; =&gt;1 ,&#8217;code&#8217; =&gt; 200,]; private $wrongHTTP = [&#8216;response&#8217;=&gt;[&#8216;api_status&#8217;=&gt;0,&#8217;code&#8217;=&gt;400, &#8216;message&#8217;=&gt;&#8217;Your HTTP method is not correct&#8217;]]; public function signup(Request $request) { [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":42,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/docs.theironnetwork.org\/vuely\/wp-json\/wp\/v2\/pages\/431"}],"collection":[{"href":"https:\/\/docs.theironnetwork.org\/vuely\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/docs.theironnetwork.org\/vuely\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/docs.theironnetwork.org\/vuely\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/docs.theironnetwork.org\/vuely\/wp-json\/wp\/v2\/comments?post=431"}],"version-history":[{"count":10,"href":"https:\/\/docs.theironnetwork.org\/vuely\/wp-json\/wp\/v2\/pages\/431\/revisions"}],"predecessor-version":[{"id":718,"href":"https:\/\/docs.theironnetwork.org\/vuely\/wp-json\/wp\/v2\/pages\/431\/revisions\/718"}],"wp:attachment":[{"href":"https:\/\/docs.theironnetwork.org\/vuely\/wp-json\/wp\/v2\/media?parent=431"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}