اذهب إلى المحتوى

السؤال

نشر

أنا أعمل في مشروع بنظام مصادقة Authentication. وأحتاج إلى إضافة مستخدم في جدول المستخدمين عند رفع المشروع على خادم Server. حيث أن موقع يجب أن يحتوي على مدير admin واحد في بداية الأمر على الأقل، 

فكرت في عمل دالة في المتحكم AuthController تقوم بإضافة هذا المستخدم ولكن أعتقد أنه ليس من الجيد عمل مسار Route لإضافة مستخدمين بصلاحيات المدير Admin في قاعدة البيانات، هل توجد طريقة أفضل أقوم من خلال بإضافة مستخدم جديد عند رفع المشروع على خادم ما؟

 

Recommended Posts

  • 1
نشر

يمكن الاستفادة من Seeders لملئ قاعدة البيانات بالبيانات الأولية اللازمة لتشغيل المشروع كالمستخدم المسؤول الأول، يمكنك التعديل على ملف Seeder الافتراضي database/seeders/DatabaseSeeder.php وإضافة عملية إنشاء المستخدم المسؤول لقاعدة البيانات ضمن التابع run مع ملئ البيانات الضرورية مثل كلمة السر:

class DatabaseSeeder extends Seeder
{
    public function run()
    {
        DB::table('users')->insert([
            'name' => 'اسم المستخدم',
            'email' => 'admin@company.com',
            'password' => Hash::make('كلمة السر'),
        ]);
    }
}

لاحظ أننا استخدمنا Hash::make لكتابة كلمة السر الأولية للمستخدم يدويًا بحيث نتمكن من الدخول لحساب المستخدم باستخدام كلمة السر تلك

بعد ذلك يمكنك ضمن الخادم تنفيذ الأمر التالي لتنفيذ عملية Seeding لقاعدة البيانات وملؤها بالبيانات الأولية:

php artisan db:seed

يمكنك الاستفادة من قراءة قسم "بذر قاعدة البيانات" ضمن المقال التالي:

 

 

  • 1
نشر

أحب تعريف بيانات المشرف وادراجها بقواعد البيانات في ملف تهجير جدول المشرفين بشكل مرافق، يكون هذا عمليا في الحالات التي نقوم بها بتنفيذ أمر التهجير 

php artisan migrate

في الانتاج، وكذلك بعد تصدير قواعد البيانات على الخادم المحلي وتضمينها في قواعد البيانات خادم الاستضافة لديك. 

يمكنك تعريف التابع التالي بملف التهجير المرافق: 

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('admins', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
        
        
        $this->createDefaultAdmin();
    }
   
    /**
     * Creates the deafult admin for app
     *
     * @return void
     */
    private function createDefaultAdmin()
    {
        App\Models\Admin::create([
           'name' => 'admin admin',
           'email' => 'admin@admin.co',
           'password' => Illuminate\Support\Facades\Hash::make('@password'),
        ]);
    }

وسيتم انشاءه كل مرة تقوم فيها بتهجير قواعد البيانات. 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...