1. 程式人生 > >laravel學習-安裝entrust和l5-repository2個基本依賴

laravel學習-安裝entrust和l5-repository2個基本依賴

1.安裝 'l5-repository':
	直接參照github文件:https://github.com/andersao/l5-repository

	1>composer require prettus/l5-repository

	2>vim config/app.php
		給 'providers' 元素,新增 'Prettus\Repository\Providers\RepositoryServiceProvider::class,'

	3>php artisan vendor:publish	
		在 config/ 下,生成一個 'repository.php' 的配置檔案

	4>安裝 'league/fractal',l5-repository的presenter可能需要
		https://packagist.org/packages/leagua/fractal - 官方映象包介紹
		composer require league/fractal - 進行安裝

	5>vim repository.php
		我們配置命令的生成器:
		    'generator'  => [
		        'basePath'      => app_path(),
		        'rootNamespace' => 'App\\',
		        'paths'         => [
		            'models'       => 'Models',
		            'repositories' => 'Repositories',
		            'interfaces'   => 'Repositories',
		            'transformers' => 'Transformers',
		            'presenters'   => 'Presenters',
		            // 'validators'   => 'Validators',
		            // 'controllers'  => 'Http/Controllers',
		            // 'provider'     => 'RepositoryServiceProvider',
		            // 'criteria'     => 'Criteria',
		            // 'stubsOverridePath' => app_path()
		        ]
		    ]
		這個只是針對生成的目錄進行配置,不想生成這些檔案,還不行

	6>l5-repository的相關的一些命令:
		php artisan make:entity Post - 有提示,需要生成哪些檔案,yes | no
		php artisan make:repository "Blog\Post" - 只生成repository,會生成 'model/repository/migration'
		php artisan make:transformer Post - 生成 transformers
		php artisan make:presenter Post - 生成 presenters

		// 這2個使用較少
		php artisan make:bindings Post - 會生成 'repositoryProviderServer.php',並繫結一個post相關的服務
		php artisan make:criteria My - 生成 MyCriteria

2.安裝 'Zizaco/entrust'

	直接參照github文件:
		https://github.com/Zizaco/entrust
	中文相關資料:
		http://laravelacademy.org/post/3755.html
		http://laravelacademy.org/post/3761.html

	1>composer require zizaco/entrust 5.2.x-dev

	2>vim config/app.php
		1)給 'providers' 元素,新增 'Zizaco\Entrust\EntrustServiceProvider::class,'
		2)給 'aliases' 元素,新增 ''Entrust' => Zizaco\Entrust\EntrustFacade::class,'

	3>php artisan vendor:publish	
		在 config/ 下,生成一個 'entrust.php' 的配置檔案

	4>vim config/auth.php,可新增 '使用者認證' 配置:

		假設我們需要驗證的是後臺使用者表 'admin_users':

		'guards' 元素:
	        'admin' => [
	            'driver' => 'session',
	            'provider' => 'admin_users',
	        ],

		'providers' 元素:
	        'admin_users' => [
	            'driver' => 'eloquent',
	            'model' => App\Models\AdminUser::class,
	            'table' => 'admin_users',
	        ],

	    'passwords' 元素:
	        'admin_users' => [
	            'provider' => 'admin_users',
	            'email' => 'auth.emails.password',
	            'table' => 'admin_password_resets',
	            'expire' => 60,
	        ],

	5>vim app/Http/Kernel.php
		給 'routeMiddleware' 陣列,新增 'entrust' 自帶的中介軟體:
			'role' => \Zizaco\Entrust\Middleware\EntrustRole::class,
			'permission' => \Zizaco\Entrust\Middleware\EntrustPermission::class,
			'ability' => \Zizaco\Entrust\Middleware\EntrustAbility::class,

	6>生成遷移資料表:
		這裡我們需要進行配置:config/entrust.php 進行RBAC許可權表的配置。
		php artisan entrust:migration - 根據我們的entrust.php的配置,生成遷移的資料表語句

	7>建立真實資料表(暫不執行):
		php artisan migrate

3.安裝的RBAC後臺許可權認證,是沒有使用者表的,所以我們還得建立 'admin_users' 資料表,以及模仿laravel自帶的Auth前臺認證。
	1>參閱laravel的Auth使用者認證文件:
		http://laravelacademy.org/post/3074.html
	快速配置出前臺使用者認證:
		1)php artisan make:auth - 生成一堆檔案,以及新增檢視:
		2)vim app/Http/Controllers/Auth/AuthController.php
			protected $redirectTo = '/home';		// 預設是 '/',登入認證成功後的跳轉地址
		3)php artisan migrate - 生成Auth認證相關資料表(暫不執行,因為一旦執行,會生成所有的資料表)
		就可訪問前端頁面,登入、註冊、忘記密碼等頁面。

	2>我們搭建後臺認證
		可檢視專案原始碼,模仿 admin_users 後臺使用者認證:
			https://github.com/yuansir/laravel5-rbac-example

/*
	模仿 'laravel5-rbac-example' 專案進行修改:
 */
1.資料庫相關:
	1>找到我們專案中的 database/migrations/xx_entrust_setup_table.php,對照 'laravel5-rbac-example' 的database/migrations/的 'xx_entrust_base.php' 和 'xx_entrust_pivot_admin_user_role.php' 進行比對。我們修改成我們自己想要的後臺一些欄位!
	2>admin_users資料表和忘記密碼錶
		建立2個遷移記錄:
			php artisan make:migration create_admin_users_table
			php artisan make:migration create_admin_password_resets_table
		編輯2個遷移記錄:	
			xx_create_admin_users_table.php
			xx_create_admin_password_resets_table.php

2.開始搞admin_users相關內容:
	1>控制器:app/Http/Controllers/Admin
	2>中介軟體:app/Http/Middleware/AuthenticateAdmin.php
		php artisan make:middleware AuthenticateAdmin
		編輯進行修改
	3>Kernel.php - 將上面的admin相關的中介軟體,得註冊到 中介軟體配置檔案中
		vim Kernel.php,在 $routeMiddleware 陣列中,新增:
			'auth.admin' => \App\Http\Middleware\AuthenticateAdmin::class,
	4>表單請求驗證:app/Http/Requests/
	5>routes.php - 新增後臺所有相關的路由
	6>後臺所有相關的 'Model',我們定的目錄為 'app/Models/'
	7>後臺模板:resources/views/admin
	8>public:存放後臺靜態檔案,圖片、js、css
	--------
	9>複製l5-repository依賴相關目錄,這個也是需要的:
		app/Repositories
		app/Presenters
		app/Transformers
	10>對複製過來的各個東西進行修改