divineomega/thisishowirole

'This Is How I Role' 是一个PHP角色管理系统,可以应用于任何类。

v2.1.7 2018-01-27 00:01 UTC

This package is auto-updated.

Last update: 2024-09-06 09:17:40 UTC


README

'This Is How I Role' 是一个PHP角色管理系统,可以应用于任何类。

安装

您可以使用 composer 来安装此包。只需运行 composer require divineomega/thisishowirole

设置

创建表

首先,在您应用程序的数据库中创建一个新的表来存储 TIHIR 角色。您可以使用以下 SQL 片段来创建表。

CREATE TABLE IF NOT EXISTS `tihir_roles` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `class_name` varchar(1000) NOT NULL,
  `foreign_id` bigint(20) NOT NULL,
  `roles` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

如果您使用 Laravel,您可以使用以下数据库迁移来创建 TIHIR 角色表。

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateThisIsHowIRoleRolesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('tihir_roles', function (Blueprint $table) {
            $table->increments('id');
            $table->string('class_name');
            $table->bigInteger('foreign_id');
            $table->text('roles');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('tihir_roles');
    }
}

数据库连接配置

如果您使用 Laravel,TIHIR 将自动使用您为应用程序配置的数据库,因此您不需要在这里做任何事情。我们还将使用 Eloquent 与您的数据库进行通信。

否则,您需要设置一些环境变量,以将 TIHIR 指向您的数据库。以下内容类似即可。如果您使用的框架支持,您可以将此内容放入 .env 文件中。如果不支持,则可以使用 PHP 内置的 putenv 函数。

TIHIR_DB_TYPE=mysql
TIHIR_DB_NAME=tihir_test
TIHIR_DB_HOST=192.168.1.44
TIHIR_DB_USER=tihir_test
TIHIR_DB_PASSWORD=PAMBSHcHssQqpw4A

用法

This Is How I Role 通过增强现有类来工作。这适用于任何 PHP 类,无论是手动创建的类还是 Laravel Eloquent 模型。唯一的要求是类必须有一个可访问的、数字的 id 属性。

您只需在类中添加两条额外的 use 行即可。这可以在下面的示例 User 类中看到。

require 'vendor/autoload.php';

use DivineOmega\ThisIsHowIRole\RolesTrait as Roles; // <-- Line 1

class User
{
  use Roles; // <-- Line 2

  public $id = 123;

}

这个 User 类现在可以使用 TIHIR 角色系统了。您现在可以使用各种方法来对此类添加、删除或检查角色。下面的片段显示了如何操作角色。

$user = new User;

$user->roles->add('can_eat_cake');
$user->roles->add('can_eat_cookies');
$user->roles->remove('can_eat_cookies');

echo 'This user can ';

if ($user->roles->has('can_eat_cake')) {
  echo 'eat cakes... ';
}

if ($user->roles->has('can_eat_cookies')) {
  echo 'eat cookies... ';
}

echo "\n";