<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های سعید خیری راهدانه</title>
        <link>https://virgool.io/feed/@nesazit</link>
        <description>Full Stack Developer</description>
        <language>fa</language>
        <pubDate>2026-06-10 13:01:58</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/3118803/avatar/1fPOwh.png?height=120&amp;width=120</url>
            <title>سعید خیری راهدانه</title>
            <link>https://virgool.io/@nesazit</link>
        </image>

                    <item>
                <title>استفاده از لاراول پاسپورت و مونگو باهم</title>
                <link>https://virgool.io/@nesazit/%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D9%84%D8%A7%D8%B1%D8%A7%D9%88%D9%84-%D9%BE%D8%A7%D8%B3%D9%BE%D9%88%D8%B1%D8%AA-%D9%88-%D9%85%D9%88%D9%86%DA%AF%D9%88-%D8%A8%D8%A7%D9%87%D9%85-rxu2up7t6qt4</link>
                <description>سلام خدمت دوستان گرامی!این اولین پست من تو سایت ویرگوله.امیدوارم که بتونم از تجربیاتم در لاراول و مباحث دیگر در اینجا به اشتراک بزارم.سوال: چگونه از لاراول پاسپورت و MongoDB باهم تو لاراول استفاده کنیم؟!بعد از نصب لاراول, اول از همه باید پکیج mongoDB را با استفاده از کامند زیر نصب کنید:composer require mongodb/laravel-mongodb:^4.1اضافه کردن تنظیمات مونگو در فایل کانفیگ database.php    &#039;connections&#039; =&gt; [        &#039;mongodb&#039; =&gt; [            &#039;driver&#039; =&gt; &#039;mongodb&#039;,            &#039;dsn&#039; =&gt; env(&#039;DB_URI&#039;, &#039;mongodb://127.0.0.1:27017&#039;),            &#039;database&#039; =&gt; env(&#039;DB_DATABASE&#039;, &#039;mydatabase&#039;),        ],],ویرایش مدل ها برای مثال:&lt;?phpnamespace App\Models;use Illuminate\Database\Eloquent\Factories\HasFactory;// قراردادن کلاس مدل پکیج نصب شده به جای مدل پیش فرضuse MongoDB\Laravel\Eloquent\Model;// استفاده از سافت دیلیت خود پکیجuse MongoDB\Laravel\Eloquent\SoftDeletes;class Visitor extends Model{    use HasFactory, SoftDeletes;    // از هردو مورد فیل ایبل یا گاردد میشه استفاده کرد ولی فیل ایبل بهتره    protected $fillable = [&#039;ip&#039;, &#039;visitable_id&#039;, &#039;visitable_type&#039;];    protected $guarded = [&#039;_id&#039;];    public function visitable(){        return $this-&gt;morphTo();    }}و یا اینکه یک کلاس Model.php بسازید و همه موارد مورد نیاز پایه رو در اون قرار بدید. تو مدل های دیگه ازش ارث بری کنید. اینجوری اگه خواستین دیتابیستون رو تغییر بدید دیگه نیاز نیست همه مدل هارو ویرایش کنید فقط فایل Model.php رو تغییر بدید کافیه.قسمت مهم ماجرا اینجاست!برای استفاده از لاراول پاسپورت جهت احراز هویت ابتدا یک فایل باید ایجاد کنیم در آدرس :App\Console\Commandsبه اصطلاح یک کامند سفارشی ایجاد کنیم.میتونید به صورت دستی بسازید و یا با کامند خود لاراول هم بسازید:php artisan make:command PassportMongoDBمحتوای فایل را از گیت هاب من میتونید بردارید و داخل فایلتون بزارید.بعد از نصب لاراول پاسپورت برای اینکه بتوینم از کامند php artisan passport:install برای ایجاد کلیدها استفاده کنیم, بعد از ساخت فایل بالا طبق کامندی که تعریف کردیم باید استفاده کنیم:php artisan change:passportاین کامند به داخل پکیج پاسپورت رفته و تمامی فایلایی که از Model خود لاراول ارث بری کردند را تغییر میدهدچنانچه خواستید به تنظیمات قبلی برگردید از کامند رول بکش باید استفاده کنید:php artisan change:passport --rollbackبعد از انجام موارد بالا باید در مدل کاربر یا ادمین تغییراتی انجام دهیم:
&lt;?phpnamespace App\Models;use Illuminate\Database\Eloquent\Factories\HasFactory;use MongoDB\Laravel\Auth\User as Authenticatable;use Illuminate\Notifications\Notifiable;use Laravel\Passport\HasApiTokens;class User extends Authenticatable{    use HasApiTokens, HasFactory, Notifiable;    protected $fillable = [        &#039;name&#039;,        &#039;email&#039;,        &#039;password&#039;,        &#039;email_verified_at&#039;,    ];    protected $hidden = [        &#039;password&#039;,        &#039;remember_token&#039;,    ];    protected $casts = [        &#039;email_verified_at&#039; =&gt; &#039;datetime&#039;,        &#039;password&#039; =&gt; &#039;hashed&#039;,    ];}تغییرات در فایل کانفیگ auth.php :    &#039;guards&#039; =&gt; [        &#039;web&#039; =&gt; [            &#039;driver&#039; =&gt; &#039;session&#039;,            &#039;provider&#039; =&gt; &#039;users&#039;,        ],        &#039;user-api&#039; =&gt; [            &#039;driver&#039; =&gt; &#039;passport&#039;,            &#039;provider&#039; =&gt; &#039;users&#039;,        ],        &#039;user&#039; =&gt; [            &#039;driver&#039; =&gt; &#039;session&#039;,            &#039;provider&#039; =&gt; &#039;users&#039;,        ],    ],از گارد user برای قسمت سشن استفاده میشه و از گارد user-api برای api هانکته  برای اینکه از اسکوپ در پاسپورت استفاده کنیم باید مواردی را در AuthServiceProcider.php در متود boot قرار بدیم:    public function boot(): void    {        Passport::tokensCan([            &#039;user&#039; =&gt; &#039;user&#039;,            &#039;admin&#039; =&gt; &#039;admin&#039;,        ]);    }کنترلر مربوط به احراز هویت:&lt;?phpnamespace App\Http\Controllers;use Illuminate\Http\Request;use App\Http\Controllers\Controller;use App\Models\User;use Illuminate\Support\Facades\Auth;use Illuminate\Support\Facades\DB;use Illuminate\Support\Facades\Hash;class TestController extends Controller{    public function login(Request $request)    {        if(Auth::guard(&#039;user&#039;)-&gt;attempt([&#039;email&#039; =&gt; $request-&gt;email, &#039;password&#039; =&gt; $request-&gt;password])){            $user = User::query()-&gt;firstWhere(&#039;email&#039;, $request-&gt;email);            $response = $user;            $response[&#039;token&#039;] = $user-&gt;createToken(&#039;login&#039;, [&#039;user&#039;])-&gt;accessToken;            return response()-&gt;json([                &#039;status&#039; =&gt; true,                &#039;message&#039; =&gt; &#039;با موفقیت وارد شدید&#039;,                &#039;user&#039; =&gt; $response            ]);        }else {            return response()-&gt;json([                &#039;status&#039; =&gt; false,                &#039;message&#039; =&gt; &#039;اطلاعات ورودی شما اشتباه میباشد.&#039;            ]);        }    }}</description>
                <category>سعید خیری راهدانه</category>
                <author>سعید خیری راهدانه</author>
                <pubDate>Fri, 12 Apr 2024 18:03:03 +0330</pubDate>
            </item>
            </channel>
</rss>