miamilaw/base

:迈阿密大学法学院 - Laravel 基础

v1.5 2019-06-02 17:56 UTC

This package is auto-updated.

Last update: 2024-09-19 06:32:49 UTC


README

Latest Version on Packagist Software License Total Downloads StyleCI

此包是 MiamiLaw Laravel 项目的基座。它提供

安装

通过 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::classapp/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 而不是使用问题跟踪器。

版权信息

许可协议

许可协议。请参阅许可协议文件获取更多信息。