نصب و راه اندازی
مورد نیاز
قبل از شروع مطمئن شوید موارد زیر نصب هستند :
- Composer
- Laravel Framework 5.6+
- PHP 7.1+
پشتیبانی مرورگر
زرتشت رو مروگر های زیر بدون مشکل اجرا می شه :
- Google Chrome
- Firefox
- Microsoft Edge
مشخصات دیتابیس
به داخل فایل .env
برید و مشخصات دیتابیس خود رو وارد کنید:
APP_URL=http://localhost:8000
DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
نصب زرتشت
حالا terminal رو باز کنید و کدهای زیر رو اجرا کنید :
composer require karim-qaderi/zoroaster
php artisan Zoroaster:install
php artisan migrate
php artisan storage:link
WARNING
Specified key was too long error
اگر با همچین خطای رو به رو شدید به این قسمت مراجعه کنید: https://laravel-news.com/laravel-5-4-key-too-long-error
بصورت پیشفرض زرتشت App\User
Model رو برای Resource قرار داد شده برای تغیر به Resource رفته و بصورت زیر اقدام به تغیر Model کنید :
public static $model = 'App\\Models\\User';
ادرس پنل ادمین http://127.0.0.1:8000/Zoroaster
هست
اگر هیچ کاربری رو در داخل جدول users
ندارید در terminal با وارد کردن کد زیر یک کاربر بسازید :
php artisan Zoroaster:user
سطح دسترسی کلی
به طور پیش فرض، هر کاربری می تواند به داشبورد زرتشت وارد شود .
برای اینکه سطح دسترسی رو بزارید فایل app/Providers/ZoroasterServiceProvider.php
رو باز کنید کد زیر رو در boot
قرار دهید.
/**
* Bootstrap any application services.
*
* @return void
*/
protected function boot()
{
Gate::define('Zoroaster', function ($user) {
return in_array($user->email, [
'karimqaderi1@gmail.com',
]);
});
}
فعال کردن resource مجوزها
با فعال کردن این شما می توانید مشخص کنید هر کاربر چه مجوزهای داشته باشه.
php artisan Zoroaster:Permission
حالا به Model User رفته و کد زیر را قرار بدید.
<?php
namespace App;
use KarimQaderi\Zoroaster\Traits\HasPermissions;
class User extends Authenticatable
{
use HasPermissions;
}
وقتی کارهای بالا رو انجام دادید برای اینکه مجوز برای کاربر ادمین بسازید از کد پایین استفاده کنید.
اگر کاربر از قبل وجود داشت براتون اپدیت می کنه وگرنه کاربر رو براتون می سازه.
php artisan Zoroaster:admin
حالا شما الان باید بتونید وارد قسمت ادمین بشید.
حالا به این مسیر برید app/Zoroaster/Resources/User.php
و این فیلد رو قرار بدید.
use KarimQaderi\Zoroaster\Fields\Select;
use KarimQaderi\Zoroaster\Models\Role;
public function fields()
{
return [
Select::make('role_id' , 'role_id')->options(Role::all()->pluck('name','id')),
]
}
یا می توانید کل کد پایین رو جایگزین کنید:
<?php
namespace App\Zoroaster\Resources;
use Illuminate\Database\Eloquent\Model;
use KarimQaderi\Zoroaster\Abstracts\ZoroasterResource;
use KarimQaderi\Zoroaster\Fields\btnSave;
use KarimQaderi\Zoroaster\Fields\Group\Col;
use KarimQaderi\Zoroaster\Fields\Group\Panel;
use KarimQaderi\Zoroaster\Fields\Group\Row;
use KarimQaderi\Zoroaster\Fields\Group\RowOneColBg;
use KarimQaderi\Zoroaster\Fields\ID;
use KarimQaderi\Zoroaster\Fields\Password;
use KarimQaderi\Zoroaster\Fields\Select;
use KarimQaderi\Zoroaster\Fields\Text;
use KarimQaderi\Zoroaster\Models\Role;
class User extends ZoroasterResource
{
/**
* مربوطه Model نام
*
* @var Model
*/
public static $model = 'App\\User';
/**
* دادن نمایش برای پیشفرض فیلد نام
*
* @var string
*/
public $title = 'name';
/**
* جمع بصورت Resource نام
*
* مثال : ها پست
*
* @var string
*/
public $label = 'کاربران';
/**
* فرد بصورت Resource نام
*
* مثال : پست
*
* @var string
*/
public $singularLabel = 'کاربر';
/**
* جستحو قابل های فیلد
*
* @var array
*/
public $search = [
'name' , 'id' ,
];
/**
* دادها نمایش برای فیلدها گرفتن
*
* @return array
*/
public function fields()
{
return [
new Row([
new Col('uk-width-2-3' , [
new Panel('' , [
ID::make()->rules('required')->onlyOnIndex()->sortable() ,
Text::make('نام' , 'name')->rules('required') ,
Password::make('رمز کاربر' , 'password')->help('برای تغیر نکردن رمز کادر را خالی بزارید') ,
Text::make('ایمیل' , 'email')->rules('required' , 'max:255') ,
]) ,
]) ,
new Col('uk-width-1-3' , [
new Panel('مشخصات' , [
Select::make('role_id' , 'role_id')->options(Role::all()->pluck('name','id')) ,
Text::make('created_at' , 'created_at') ,
]) ,
new RowOneColBg([
btnSave::make() ,
]) ,
]) ,
]) ,
];
}
/**
* فیلترها
*
* @return array
*/
public function filters()
{
return[];
}
}
آپدیت کردن زرتشت
فقط کافیه composer update
رو اجرا کنید .
composer update