miamilaw / base
:迈阿密大学法学院 - Laravel 基础
Requires
- php: ^7.2
- illuminate/support: ~5
- metrogistics/laravel-azure-ad-oauth: ^1.2
Requires (Dev)
- mockery/mockery: ^1.1
- orchestra/testbench: ~3.0
- phpunit/phpunit: ~7.0
- sempro/phpunit-pretty-print: ^1.0
README
此包是 MiamiLaw Laravel 项目的基座。它提供
- 角色
- Web 模板
- 根据 Laravel Socialite Azure Active Directory 插件 将单点登录(SSO)集成到 Azure AD
安装
通过 Composer
>对于本地开发,将仓库添加为本地路径
"repositories": [
{
"type": "path",
"url": "/path/to/miamilaw_laravel_base"
}
]
>添加到 composer.json
$ composer require miamilaw/base
>安装后的要求
$ php artisan make:auth
$ php artisan vendor:publish --provider="Metrogistics\AzureSocialite\ServiceProvider" --force
$ php artisan vendor:publish --provider="MiamiLaw\Base\BaseServiceProvider" --force
数据库
本地开发使用 Sqlite
$ touch database/local.sqlite
编辑 .env
DB_CONNECTION=sqlite
DB_DATABASE=/path/to/database/local.sqlite
>或者,根据 文档 设置您首选的数据库。
使用方法
包含服务提供者
将服务提供者添加到 config/app.php
'providers' => [
// ...
/*
* Package Service Providers...
*/
MiamiLaw\Base\BaseServiceProvider::class,
// ...
]
将角色添加到 User
将 trait Roles 添加到 app/User.php
<?php
//...
use MiamiLaw\Base\Traits\Roles;
class User extends Authenticatable
{
use Notifiable, Roles;
//...
}
为新用户附加角色(可选)
在 app/Http/Controllers/Auth/RegisterController.php 中添加或替换以下内容
protected function create(array $data)
{
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
// Assign Role (guest for example)
$user
->roles()
->attach(Role::where('name', 'guest')->first());
return $user;
}
基于角色的检查
在控制器全局中,将中间件添加到构造函数中,与 auth 一起
public function __construct() {
$this->middleware('auth');
$this->middleware('checkadmin');
}
对于特定的操作
public function myAction(Request $request){
// Check for admin role
$request->user()->authorizeRoles(['admin']);
// ...
}
>为了使中间件正常工作,您可能需要将 \Illuminate\Session\Middleware\StartSession::class 从 app/Http/Kernel.php 中的应用程序 $middlewareGroups 移动到全局 $middleware
迁移
运行数据库迁移
$ php artisan migrate:fresh
>注意:如果使用 sqlite,请确保已安装 doctrine/dbal
将初始管理员用户添加到 .env 以进行填充
MIAMILAW_BASE_ADMIN_NAME="Last Name, First Name"
MIAMILAW_BASE_ADMIN_EMAIL=myuser@someplace.com
MIAMILAW_BASE_ADMIN_AZURE_ID=####
MIAMILAW_BASE_ADMIN_LOCAL_PASSWORD=####
>确保清除缓存
运行种子数据以添加基本角色和用户
$ php artisan config:cache
$ php artisan db:seed --class=MiamiLaw\\Base\\Database\\Seeds\\DatabaseSeeder
如果需要,为开发添加以下内容到 database/seeds/DatabaseSeeder.php
...
use MiamiLaw\Base\Database\Seeds\DatabaseSeeder as BaseSeeder;
...
public function run()
{
$this->call(BaseSeeder::class);
}
...
设置认证类型
从 routes/web.php 中删除 Auth 默认路由
// Auth::routes();
在配置文件 config/miamilaw.php 中,您可以设置 auth 使用 'local' 或 'azure'。清除缓存
php artisan config:cache
使用本地认证
使用 tinker 工具(或参见 Artisan 命令部分)添加管理员用户
$ php artisan tinker
Psy Shell v0.9.9 (PHP 7.2.17-0ubuntu0.18.04.1 — cli) by Justin Hileman
>>> $user = new User();
>>> $user->name = 'Last name, First Name';
>>> $user->email = 'lf@yourcompany.com';
>>> $user->password = Hash::make('password');
>>> $user->save();
>>> $role_admin = Role::where('name', 'admin')->first();
>>> $user->roles()->attach($role_admin);
>>> exit
配置 Azure SSO 认证
在 Azure Active Directory 中创建一个新的应用程序。有关注册应用程序的更多详细信息,请参阅以下文章。>快速入门:使用 Microsoft 身份平台注册应用程序
注册您的应用程序后,编辑 .env 并添加客户端和密钥
AZURE_AD_CLIENT_ID=XXXX
AZURE_AD_CLIENT_SECRET=XXXX
>点击此处 获取有关插件的更多信息
Artisan 命令
运行 artisan 查看选项
$ php artisan
...
make
...
make:miamilaw-crud Create CRUD for my miamilaw templates
...
...
user
user:add Modify a users attributes
user:delete Delete a user
user:list Get list of all available users
user:modify Modify a user's attributes
...
生成 CRUD
生成 CRUD 的示例
$ php artisan make:miamilaw-crud Example
将产生以下项目,并将条目添加到 routes/web.php
- app/Example.php
- app/Http/Controllers/ExampleController.php
- database/migrations/######_create_examples_table.php
- resources/views/admin/example/index.blade.php
- resources/views/admin/example/create.blade.php
- resources/views/admin/example/edit.blade.php
用户工具
您可以通过运行以下命令之一直接列出、添加、修改和删除用户
$ php artisan user:list
----------------------------
$ php artisan user:add
----------------------------
$ php artisan user:modify
----------------------------
$ php artisan user:delete
路由
当前提供路由
+--------+-----------+-------------------------------------+--------------------+------------------------------------------------------------+-----------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+-----------+-------------------------------------+--------------------+------------------------------------------------------------+-----------------+
| | POST | admin/menu | menu.store | MiamiLaw\Base\Http\Controllers\MenuController@store | auth,checkadmin |
| | GET|HEAD | admin/menu | menu.index | MiamiLaw\Base\Http\Controllers\MenuController@index | auth,checkadmin |
| | GET|HEAD | admin/menu/create | menu.create | MiamiLaw\Base\Http\Controllers\MenuController@create | auth,checkadmin |
| | DELETE | admin/menu/{menu} | menu.destroy | MiamiLaw\Base\Http\Controllers\MenuController@destroy | auth,checkadmin |
| | PUT|PATCH | admin/menu/{menu} | menu.update | MiamiLaw\Base\Http\Controllers\MenuController@update | auth,checkadmin |
| | GET|HEAD | admin/menu/{menu}/edit | menu.edit | MiamiLaw\Base\Http\Controllers\MenuController@edit | auth,checkadmin |
| | POST | admin/menu/{menu}/items | menu.items.store | MiamiLaw\Base\Http\Controllers\MenuController@itemsStore | auth,checkadmin |
| | GET|HEAD | admin/menu/{menu}/items | menu.items.index | MiamiLaw\Base\Http\Controllers\MenuController@itemsIndex | auth,checkadmin |
| | GET|HEAD | admin/menu/{menu}/items/create | menu.items.create | MiamiLaw\Base\Http\Controllers\MenuController@itemsCreate | auth,checkadmin |
| | PUT|PATCH | admin/menu/{menu}/items/{item} | menu.items.update | MiamiLaw\Base\Http\Controllers\MenuController@itemsUpdate | auth,checkadmin |
| | DELETE | admin/menu/{menu}/items/{item} | menu.items.destroy | MiamiLaw\Base\Http\Controllers\MenuController@itemsDestroy | auth,checkadmin |
| | GET|HEAD | admin/menu/{menu}/items/{item}/edit | menu.items.edit | MiamiLaw\Base\Http\Controllers\MenuController@itemsEdit | auth,checkadmin |
| | POST | admin/user | user.store | MiamiLaw\Base\Http\Controllers\UserController@store | auth |
| | GET|HEAD | admin/user | user.index | MiamiLaw\Base\Http\Controllers\UserController@index | auth |
| | GET|HEAD | admin/user/create | user.create | MiamiLaw\Base\Http\Controllers\UserController@create | auth |
| | DELETE | admin/user/{user} | user.destroy | MiamiLaw\Base\Http\Controllers\UserController@destroy | auth |
| | PUT|PATCH | admin/user/{user} | user.update | MiamiLaw\Base\Http\Controllers\UserController@update | auth |
| | GET|HEAD | admin/user/{user} | user.show | MiamiLaw\Base\Http\Controllers\UserController@show | auth |
| | GET|HEAD | admin/user/{user}/edit | user.edit | MiamiLaw\Base\Http\Controllers\UserController@edit | auth |
| | GET|HEAD | login/microsoft | | Closure | |
| | GET|HEAD | login/microsoft/callback | | Closure | |
| | GET|HEAD | logout | | Closure | web |
| | GET|HEAD | user/profile | user.profile | MiamiLaw\Base\Http\Controllers\UserController@profile | auth |
+--------+-----------+-------------------------------------+--------------------+------------------------------------------------------------+-----------------+
变更日志
请参阅 changelog 以获取有关最近更改的更多信息。
测试
$ composer test
贡献
请参阅 contributing.md 了解详细信息以及待办事项列表。
安全
如果您发现任何安全相关的问题,请通过电子邮件 m.gavidia@miami.edu 而不是使用问题跟踪器。
版权信息
许可协议
许可协议。请参阅许可协议文件获取更多信息。