maykonn/rapid-authorization

RapidAuthorization 是一个基于角色访问控制(RBAC)的 PHP 访问控制框架。

1.4 2018-06-08 19:46 UTC

This package is not auto-updated.

Last update: 2024-09-19 14:59:01 UTC


README

SensioLabsInsight

RapidAuthorization 是一个基于 PHP 的访问控制框架,基于 *Role-based Access Control (RBAC)。

有关 RBAC 的更多信息,请访问维基百科:https://en.wikipedia.org/wiki/Role-based_access_control

您可以在任何用 PHP 编写的系统中使用 RapidAuthorization。使用它,您可以快速轻松地编写应用程序的访问控制。您只需要将其集成到应用程序中,请参阅此处示例

如果您的应用程序的域/责任等不是访问控制,那么它不应该知道如何执行此操作。这种责任应该交给另一个系统,一个服务,在这种情况下是 RapidAuthorization,以便它关注访问控制,而不是您的应用程序。

目标是尽可能地将访问控制从使用它的应用程序的域中解耦。您的应用程序已经有了足够的责任,让 RapidAuthorization 负责访问控制。

RBAC

实体:用户、角色、任务和操作

用户是客户端应用程序的用户。他可能拥有零个、一个或多个角色。

角色是在客户端应用程序中由用户承担的角色/职位。它可能没有访问任何、一个或多个任务。

任务是客户端应用程序执行的任务,例如管理客户。它可能没有访问任何、一个或多个操作。

操作是客户端应用程序任务执行的操作/动作,例如注册客户。

注意事项

要安装,只需将下载的内容放入应用程序的 lib/RapidAuthorization 文件夹中,例如,然后查看示例,您将知道该怎么做。

一些程序员喜欢将任务视为控制器,例如 ClientController,将操作视为控制器的动作,例如 actionCreate 或 createAction。

它使用简单的 PDO 与数据库通信。您不应该在应用程序中使用 /Datase 中存在的现有类。我们还提供了一个简单的 autoload,它与 RapidAuthorization 工作得很好,我们还在测试其他 autoload。目前请使用提供的。

它仅支持允许使用命名空间、自动加载和 PDO 的 PHP 版本。我们认为在新的应用程序中使用旧版本的 PHP 是不可接受的、丑陋的,而且没有理由这么做。

数据库

在配置中,您提供数据库连接信息,然后,默认情况下,Rapid Authorization 会创建以下表格及其关系的结构,如果不存在的话:user、rpd_user_has_role、rpd_role、rpd_role_has_task、rpd_task、rpd_task_has_operation 和 rpd_operation

user、rpd_user_has_role、rpd_role、rpd_role_has_task、rpd_task、rpd_task_has_operation 和 rpd_operation

表名开头的 rpd_ 是尝试组织并分隔这些表与客户端应用程序的表的尝试。只有 user 表不以 rpd_ 开头,因为这不属于 RapidAuthorization 的责任,而是客户端应用程序的责任。

注意:您可以在配置中指定用户表的名称及其主键名称,如果您不指定,则会创建一个名为 user 的表。

用户表是您希望对其访问进行控制的客户端应用程序的所有用户。

功能

配置

1) Permite ligar ou desligar a geração automática de tabelas (só cria as tabelas caso não existam).
2) Permite utilizar qualquer nome para a tabela de Users e para sua chave primária.
3) Permite gerar as tabelas com qualquer encoding (utf8, latin1, etc).
4) Permite configurar se usará o próprio autoload ou o fornecido pela aplicação cliente.
5) Permite passar nas configurações uma instância PDO criada pela aplicação cliente

用户

1) Listar um User (findById).
2) Listar todos os Users (findAll).
3) Anexar um Role a um User (attachRole).
4) Listar todos os Roles anexados a um User (getRoles).
5) Listar todas as Tasks que um User tem acesso (getTasks).
6) Listar todas as Operations que um User tem acesso (getOperations).
7) Verificar se User tem permissões de um Role (hasPermissionsOfTheRole).
8) Verificar se User possui acesso a determinada Task (hasAccessToTask).
9) Verificar se User possui acesso a determinada Operation (hasAccessToOperation).
10) Remover User de um Role (removeUserFromRole).

角色

1) Criar um Role (create).
2) Editar um Role (update).
3) Apagar um Role (delete).
4) Listar um Role (findById, findByName).
5) Listar todos os Roles (findAll).
6) Anexar uma Task a um Role (attachTask).
7) Listar todas as Tasks que um Role tem acesso (getTasks).
8) Listar todas as Operations que um Role tem acesso (getOperations).
9) Verificar se possui acesso a determinada Task (hasAccessToTask).
10) Verificar se possui acesso a determinada Operation (hasAccessToOperation).
11) Listar todos os Users que possuem permissão a um Role (getUsersThatHasPermission).
12) Remover todos os Users de um Role (removeUsersFromRole).

任务

1) Criar uma Task (create).
2) Editar uma Task (update).
3) Apagar uma Task (delete).
4) Listar uma Task (findById, findByName).
5) Listar todas as Tasks (findAll).
6) Anexar uma Operation a uma Task (attachOperation).
7) Listar todas as Operations anexadas a uma Task (getOperations).
8) Verificar se possui determinada Operation (hasOperation).
9) Listar todos os Roles que possuem acesso a uma Task (getRolesThatHasAccess).
10) Remover Task de um Role (removeTaskFromRole).

操作

1) Criar uma Operation (create).
2) Editar uma Operation (update).
3) Apagar uma Operation (delete).
4) Listar uma Operation (findById, findByName).
5) Listar todas as Operations (findAll).
6) Listar todas as Tasks que possuem uma Operation (getTasksThatCanExecute).
7) Listar Operations que requerem Autorização (findByRequireAuthorization).
8) *Listar Operations que não requerem Autorização (findByNotRequireAuthorization).
  • 无需授权意味着所有用户可以在任何时间点访问操作