PHPackages                             betocampoy/champs-access - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. betocampoy/champs-access

ActiveLibrary[Authentication &amp; Authorization](/categories/authentication)

betocampoy/champs-access
========================

Lightweight access control core for PHP projects. Permission checking by user, resource and provider adapters.

v1.0.0(1mo ago)06proprietaryPHPPHP ^8.1

Since Apr 27Pushed 1mo agoCompare

[ Source](https://github.com/betocampoy/champs-access)[ Packagist](https://packagist.org/packages/betocampoy/champs-access)[ RSS](/packages/betocampoy-champs-access/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependenciesVersions (3)Used By (0)

Champs Access
=============

[](#champs-access)

Lightweight permission checker for PHP projects.

Install
-------

[](#install)

```
composer require betocampoy/champs-access
```

---

Basic Usage
-----------

[](#basic-usage)

```
use BetoCampoy\Champs\Access\AccessChecker;
use BetoCampoy\Champs\Access\ArrayPermissionProvider;
use BetoCampoy\Champs\Access\GenericUser;
use BetoCampoy\Champs\Access\GenericResource;
use BetoCampoy\Champs\Access\Permission;

$provider = new ArrayPermissionProvider([
    'admin' => [
        'users' => [
            Permission::ACCESS => true,
            Permission::CREATE => true,
            Permission::UPDATE => true,
            Permission::DELETE => true,
        ],
    ],
]);

$checker = new AccessChecker($provider);

$user = new GenericUser(1, 'admin');
$resource = new GenericResource('users', 'users');

$checker->can($user, $resource, Permission::UPDATE); // true
```

---

Assert Access
-------------

[](#assert-access)

```
$checker->assertCan($user, $resource, Permission::DELETE);
```

Throws `AccessDeniedException`.

---

Multiple Permissions
--------------------

[](#multiple-permissions)

```
$checker->canAny($user, $resource, [
    Permission::UPDATE,
    Permission::DELETE,
]);

$checker->canAll($user, $resource, [
    Permission::ACCESS,
    Permission::UPDATE,
]);
```

---

Custom Provider
---------------

[](#custom-provider)

```
use BetoCampoy\Champs\Access\PermissionProviderInterface;

final class DatabasePermissionProvider implements PermissionProviderInterface
{
    public function permissionsFor($user, $resource): array
    {
        return [
            'acessar' => true,
            'alterar' => true,
        ];
    }
}
```

---

Recommended Architecture
------------------------

[](#recommended-architecture)

Package responsibilities:

- permission rules
- access checking
- reusable interfaces

Application responsibilities:

- redirects
- flash messages
- JSON responses
- HTTP 403
- database queries
- framework integration

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance91

Actively maintained with recent releases

Popularity5

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity43

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

43d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/f716b40e59d9e04a7a6ce607fb14866a53a5160e31456676ec379f25e324e58b?d=identicon)[betocampoy](/maintainers/betocampoy)

---

Top Contributors

[![betocampoy](https://avatars.githubusercontent.com/u/85419774?v=4)](https://github.com/betocampoy "betocampoy (1 commits)")

---

Tags

phpaccessauthorizationaclpermission

### Embed Badge

![Health badge](/badges/betocampoy-champs-access/health.svg)

```
[![Health](https://phpackages.com/badges/betocampoy-champs-access/health.svg)](https://phpackages.com/packages/betocampoy-champs-access)
```

###  Alternatives

[santigarcor/laratrust

This package provides a flexible way to add Role-based Permissions to Laravel

2.3k5.6M46](/packages/santigarcor-laratrust)[casbin/casbin

a powerful and efficient open-source access control library for php projects.

1.3k1.5M55](/packages/casbin-casbin)[casbin/laravel-authz

An authorization library that supports access control models like ACL, RBAC, ABAC in Laravel.

331361.0k4](/packages/casbin-laravel-authz)[shanmuga/laravel-entrust

This package provides a flexible solution to add ACL to Laravel

69329.8k2](/packages/shanmuga-laravel-entrust)[casbin/think-authz

An authorization library that supports access control models like ACL, RBAC, ABAC for ThinkPHP.

27520.1k6](/packages/casbin-think-authz)[casbin/webman-permission

webman casbin permission plugin

533.5k2](/packages/casbin-webman-permission)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
