ems/permit
Composer 安装命令:
composer require ems/permit
包简介
Permission based authentication system
关键字:
README 文档
README
Permission checking library and nice interfaces for access control.
Permit is a library to provide complete access control with permission-codes. Permission codes are just an array with some codes (strings) as keys and 1,0,-1 as values to allow, inherit and deny.
The main features and goals are:
- Have a nice top-level api to check permissions
- Always return a user, no matter if it is logged in or not (return a guest or system/cron user)
- Allow an secure and transparent "login-as-another-user" functionality
- Splits authentication and simple getUser()/setUser functionality
- Works with almost every other authentication system (Laravel, Sentry,...)
It works almost like Sentry, so why not Sentry instead of Permit?
- Sentry bybasses almost all auth functionalities of Laravel
- It sticks a lot of logic into the value objects (like user or group)
- Fat interfaces and therefore little chances to extend/modify it
- Never use a Facade which is named by a package ;-)
The Facade API (which is mostly used in views):
//Return the current user (always returns a user object) Auth::user(); // Set the current user Auth::setUser($user); // Check if the user is logged in Auth::loggedIn(); // Check if the current user has access to permission 'cms.access' Auth::allowed('cms.access'); // Check if user $joe has access to permission 'user.destroy' Auth::can($joe)->access('user.destroy');
Internally the authentication interfaces are splitted into a container:
interface CurrentUser\ContainerInterface{ public function user(); public function setUser($user); public function clearUser(); }
The next interface is a permission holder: (This could be a user or a group)
public function getAuthId(); // returns 1, 0,-1 public function getPermissionAccess($code); public function setPermissionAccess($code, $access); // returns an indexed array of all codes public function permissionCodes($inherited=true); // returns if the user is a guest, same as !Auth::loggedIn() public function isGuest(); // returns if the user is the system itself (like cron or console) public function isSystem(); public function isSuperUser();
The extended version of ContainerInterface is the DualContainerInterface, which allows login as a different user.
interface CurrentUser\DualContainerInterface extends ContainerInterface{ const BOTH = 0; const ACTUAL = 1; const STACKED = 2; // returns the user, which submitted the login form public function actualUser(); public function setActualUser(HolderInterface $user, $persist=true); // Returns the user the actual user wants to be temporarly public function stackedUser(); public function setStackedUser(HolderInterface $user, $persist=true); // Force the returned user to be the actualUser(). // This is very handy if you have an admin interface and the user should // be the actualUser inside the admin interface and outside of the the // stacked one // Laravel Route::when('admin*', Auth::forceActual()); public function forceActual($force=TRUE); // Returns if the currently returned user by user() is the actual user public function isActual(); // Resets this container (logout) public function reset($type=self::BOTH); }
ems/permit 适用场景与选型建议
ems/permit 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 7.91k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2014 年 10 月 18 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「auth」 「permissions」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 ems/permit 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 ems/permit 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 ems/permit 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Laravel Multiauth package
A lightweight and powerful OAuth 2.0 authorization and resource server library with support for all the core specification grants. This library will allow you to secure your API with OAuth and allow your applications users to approve apps that want to access their data from your API.
User permissions for MoonShine
This package provides a flexible way to add Role-based Permissions to Laravel 6.x
Email Toolkit Plugin for CakePHP
Library for advanced filesystem functions
统计信息
- 总下载量: 7.91k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 7
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2014-10-18