{"id":18573,"date":"2020-09-10T10:44:57","date_gmt":"2020-09-10T10:44:57","guid":{"rendered":"http:\/\/www.devopsschool.com\/blog\/?p=18573"},"modified":"2020-11-10T11:08:09","modified_gmt":"2020-11-10T11:08:09","slug":"argument-1-passed-to-tymonjwtauthjwtfromuser-must-be-an-instance-of-tymonjwtauthcontractsjwtsubject","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/argument-1-passed-to-tymonjwtauthjwtfromuser-must-be-an-instance-of-tymonjwtauthcontractsjwtsubject\/","title":{"rendered":"[SOLVED] Argument 1 passed to Tymon\\JWTAuth\\JWT::fromUser() must be an instance of Tymon\\JWTAuth\\Contracts\\JWTSubject"},"content":{"rendered":"\n<p><strong><span class=\"has-inline-color has-vivid-red-color\">Step 1.<\/span><\/strong> Go to <strong><span class=\"has-inline-color has-vivid-purple-color\">config\/app.php<\/span><\/strong> and add <\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">Tymon\\JWTAuth\\Providers\\LaravelServiceProvider::<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span><\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p> to <strong>Providers<\/strong>.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong><span class=\"has-inline-color has-vivid-red-color\">Step 2.<\/span><\/strong>  In your terminal publish the config file:&nbsp; <\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">php artisan vendor:publish --provider=<span class=\"hljs-string\">\"Tymon\\JWTAuth\\Providers\\LaravelServiceProvider\"<\/span> <\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>and add it to your list service providers in&nbsp;<code><strong>app.php<\/strong><\/code><\/p>\n\n\n\n<p><span class=\"has-inline-color has-vivid-red-color\"><strong>Step 3.<\/strong><\/span> In your terminal generate the secret:&nbsp;<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">php<\/span> <span class=\"hljs-selector-tag\">artisan<\/span> <span class=\"hljs-selector-tag\">jwt<\/span><span class=\"hljs-selector-pseudo\">:secret<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong><span class=\"has-inline-color has-vivid-red-color\">Step 4.<\/span><\/strong> In <code>config\/auth.php<\/code>&nbsp;&#8211; set the <strong>default guard <\/strong>to&nbsp;<code><strong>api<\/strong><\/code>, and change the&nbsp;<strong><code>api<\/code>&nbsp;driver <\/strong>to&nbsp;<code><strong>jwt<\/strong><\/code><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-string\">'defaults'<\/span> =&gt; &#91;\n    <span class=\"hljs-string\">'guard'<\/span> =&gt; <span class=\"hljs-string\">'api'<\/span>,\n    <span class=\"hljs-string\">'passwords'<\/span> =&gt; <span class=\"hljs-string\">'users'<\/span>,\n],<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-string\">'guards'<\/span> =&gt; &#91;\n    ...\n\n    <span class=\"hljs-string\">'api'<\/span> =&gt; &#91;\n        <span class=\"hljs-string\">'driver'<\/span> =&gt; <span class=\"hljs-string\">'jwt'<\/span>,\n        <span class=\"hljs-string\">'provider'<\/span> =&gt; <span class=\"hljs-string\">'users'<\/span>,\n    ],\n],<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong><span class=\"has-inline-color has-vivid-red-color\">Step 5.<\/span><\/strong> In your <strong>User Model<\/strong> you need to implement the <code>Tymon\\JWTAuth\\Contracts\\JWTSubject<\/code> contract on your <strong>User model<\/strong>, which requires to implement the 2 methods <code>getJWTIdentifier()<\/code> and <code>getJWTCustomClaims()<\/code>.  See Below <\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">public<\/span>  <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span>  <span class=\"hljs-title\">getJWTIdentifier<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n        <span class=\"hljs-keyword\">return<\/span>  <span class=\"hljs-keyword\">$this<\/span>-&gt;getKey();\n    }<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<script src=\"https:\/\/gist.github.com\/SushantSinghRajput03\/5edb0ddfa70f949e96447acc1e5da6c1.js\"><\/script>\n","protected":false},"excerpt":{"rendered":"<p>Step 1. Go to config\/app.php and add to Providers. Step 2. In your terminal publish the config file:&nbsp; and add it to your list service providers in&nbsp;app.php Step 3. In&#8230; <\/p>\n","protected":false},"author":19,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[5201],"tags":[5203],"class_list":["post-18573","post","type-post","status-publish","format-standard","hentry","category-laravel","tag-laravel"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/18573","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/19"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=18573"}],"version-history":[{"count":15,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/18573\/revisions"}],"predecessor-version":[{"id":19363,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/18573\/revisions\/19363"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=18573"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=18573"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=18573"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}