toddish/verify

为 Laravel 4/5 提供的简单身份验证包。它具有角色、权限、密码加盐,并且完全可扩展。

v5.0.0 2015-07-07 19:23 UTC

README

Laravel 5.1 的简单角色/权限身份验证包

对于 Laravel 5.0,请使用 Verify 4.*。
对于 Laravel 4.2,请使用 Verify 3.*。
对于 Laravel < 4.2,请使用 Verify 2.*。

  • 使用盐值的加密密码存储
  • 基于角色/权限的身份验证
  • 智能处理错误的异常
  • 可配置/可扩展
  • MIT 协议许可

安装

将 Verify 添加到你的 composer.json 文件

"require": {
	"toddish/verify": "~5"
}

现在,从项目的根目录在命令行中运行 composer update

composer update

注册包

将 Verify 服务提供者添加到你的 config/app.php 配置文件

'providers' => [
	'Toddish\Verify\Providers\VerifyServiceProvider
],

更改驱动

然后在 app/config/auth.php 中将你的 Auth 驱动更改为 'verify'

'driver' => 'verify',

如果你想在使用 Auth::user() 时加载 Verify 的 User 模型,可以将 'model' 的值更改为 'Toddish\Verify\Models\User'

或者,你可以简单地创建自己的 User 模型,并扩展 Verify 的

use Toddish\Verify\Models\User as VerifyUser;

class User extends VerifyUser
{
    // Code
}

发布资源

从项目的根目录在命令行中运行此命令

php artisan vendor:publish

或者,如果你想单独发布 Verify 的部分

php artisan vendor:publish --provider="Toddish\Verify\Providers\VerifyServiceProvider" --tag="config"

可用的标签是 configmigrationsseeds

迁移

现在迁移 Verify 的数据库表。从项目的根目录在命令行中运行这些命令

php artisan migrate
php artisan db:seed

你现在应该已经导入了所有表,包括一个名为 admin 的示例用户,密码为 password

使用方法

该包故意设计得轻量级。你可以像添加其他模型一样添加用户、角色和权限。

$user = new Toddish\Verify\Models\User;
$role = new Toddish\Verify\Models\Role;
$permission = new Toddish\Verify\Models\Permission;

等等。

所有模型都在命名空间 'Toddish\Verify\Models' 中。

关系如下

  • 角色属于多个用户
  • 用户属于多个角色
  • 角色属于多个权限
  • 权限属于多个角色

关系也通过 Eloquent ORM 处理

$role->permissions()->sync([$permission->id, $permission2->id]);

有关关系的更多信息,请参阅 Laravel 5 Eloquent 文档

基本示例

// Create a new Permission
$permission = new Toddish\Verify\Models\Permission;
$permission->name = 'delete_user';
$permission->save();

// Create a new Role
$role = new Toddish\Verify\Models\Role;
$role->name = 'Moderator';
$role->level = 7;
$role->save();

// Assign the Permission to the Role
$role->permissions()->sync([$permission->id]);

// Create a new User
$user = new Toddish\Verify\Models\User;
$user->username = 'Todd';
$user->email = 'todd@toddish.co.uk';
$user->password = 'password'; // This is automatically salted and encrypted
$user->save();

// Assign the Role to the User
$user->roles()->sync(array($role->id));

// Using the public methods available on the User object
var_dump($user->is('Moderator')); // true
var_dump($user->is('Admin')); // false

var_dump($user->can('delete_user')); // true
var_dump($user->can('add_user')); // false

var_dump($user->level(7)); // true
var_dump($user->level(5, '<=')); // false

Auth::verify()

Verify 提供了一个新的登录方法,Auth::verify()

此方法与 Auth::attempt() 使用相同的参数,主要区别是它返回一个字符串,并检查用户是否被禁用或验证。

use Toddish\Verify\Helpers\Verify;

switch (Auth::verify($credentials))
{
  case Verify::SUCCESS:
    // Successful log in
    break;
  case Verify::INVALID_CREDENTIALS:
  case Verify::UNVERIFIED:
  case Verify::DISABLED:
    // Error!
    break;
}

文档

有关完整文档,请参阅 http://docs.toddish.co.uk/verify