PHPackages                             nextgen-tech/laravel-abilities - 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. nextgen-tech/laravel-abilities

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

nextgen-tech/laravel-abilities
==============================

v0.2.0(5y ago)162MITPHPPHP ^5.6|^7.0

Since Oct 20Pushed 5y ago1 watchersCompare

[ Source](https://github.com/nextgen-tech/laravel-abilities)[ Packagist](https://packagist.org/packages/nextgen-tech/laravel-abilities)[ RSS](/packages/nextgen-tech-laravel-abilities/feed)WikiDiscussions master Synced today

READMEChangelog (1)Dependencies (5)Versions (3)Used By (0)

Laravel Abilities
=================

[](#laravel-abilities)

Spis treści

- [Instalacja](#instalacja)
    - [composer](#composer)
    - [Service Provider](#service-provider)
    - [Middleware](#middleware)
    - [Kopiowanie plików](#kopiowanie-plik%C3%B3w)
    - [Migracje](#migracje)
- [Konfiguracja](#konfiguracja)
- [Definicja uprawnień](#definicja-uprawnie%C5%84)
    - [Grupy uprawnień](#grupy-uprawnie%C5%84)
    - [Pojedyncze uprawnienie](#pojedyncze-uprawnienie)
        - [Aliasy](#aliasy)
        - [Własna funkcja](#w%C5%82asna-funkcja)
    - [Zasoby uprawnień](#zasoby-uprawnie%C5%84)
- [Sprawdzanie uprawnień](#sprawdzanie-uprawnie%C5%84)

Instalacja
----------

[](#instalacja)

### composer

[](#composer)

W terminalu wpisz

```
composer require nextgen-tech/laravel-abilities:^1.0
```

### Service Provider

[](#service-provider)

> Jeśli aplikacja korzysta z Laravela w wersji 5.5 lub wyższej to możesz pominąć ten krok.

W pliku `config/app.php` do listy providerów dopisz:

```
'providers' => [
    ...
    NGT\Laravel\Abilities\AbilityServiceProvider::class
]
```

### Middleware

[](#middleware)

W pliku `app/Http/Kernel.php` do grupy `web` należy dopisać:

```
protected $middlewareGroups = [
    'web' => [
        ...
        \NGT\Laravel\Abilities\Middleware\CheckUserAbilities::class
    ]
]
```

### Kopiowanie plików

[](#kopiowanie-plików)

Aby skopiować z paczki niezbędne pliki wykonaj następujące polecenie:

```
php artisan vendor:publish --provider="NGT\\Laravel\\Abilities\\AbilityServiceProvider"
```

Można także opublikować część plików podając jeden z tagów: `config`, `translations`, `models` lub `migrations`:

```
php artisan vendor:publish --provider="NGT\\Laravel\\Abilities\\AbilityServiceProvider" --tag=config
```

### Migracje

[](#migracje)

Uruchom migracje

```
php artisan migrate
```

Konfiguracja
------------

[](#konfiguracja)

Konfiguracja paczki znajduje się w pliku `config/abilities.php`.

```
return [
    'path'   => base_path('routes/abilities.php'), // Ścieżka do definicji uprawnień

    'models' => [
        'user'               => App\User::class, // Model użytkowników
        'user_ability'       => App\UserAbility::class, // Model uprawnień użytkowników

        'user_group'         => App\UserGroup::class, // Model grup użytkowników
        'user_group_ability' => App\UserGroupAbility::class, // Model uprawnień grup użytkowników
    ],
];
```

Definicja uprawnień
-------------------

[](#definicja-uprawnień)

Domyślnie uprawnienia znajdują się w pliku `routes/abilities.php`. Ścieżkę tę można zmienić w konfiguracji.

Definiować uprawnienia należy za pomocą fasady `NGT\Laravel\Abilities\Facades\Ability` lub instancji klasy `NGT\Laravel\Abilities\AbilityRegistrar`.

### Grupy uprawnień

[](#grupy-uprawnień)

```
Ability::group(array $attributes, callable $abilities)
```

Grupy definiujemy za pomocą metody `group`. Grupa może składać się z wyświetlanej nazwy (`label`) oraz przedrostka (`prefix`), ale żadna z tych opcji nie jest obowiązkowa. Grupa może także zawierać w sobie inne grupy. Dane grupy są przekazywane do podrzędnych elementów znajdujących się w anonimowej funkcji.

```
Ability::group(['label' => 'Panel administracyjny', 'prefix' => 'admin'], function() {
    ...
})
```

### Pojedyncze uprawnienie

[](#pojedyncze-uprawnienie)

```
Ability::define(string $slug, string $label, array $options = [])
```

Każde uprawnienie posiada swoją uproszczoną nazwe (`$slug`) oraz wyświetlaną nazwe (`$label`). Dodatkowo można zdefiniować opcje (`$options`).

#### Aliasy

[](#aliasy)

Każde uprawnienie może posiadać aliasy. Najlepszym przykładem są akcje `create-store` oraz `edit-update`. Aby zarządzać nimi jako jednym uprawnieniem można je zdefiniować w następujący sposób:

```
Ability::define('create', 'Tworzenie', [
    'aliases' => ['store'],
]);
```

#### Własna funkcja

[](#własna-funkcja)

Aby uprawnienie nie korzystało z domyślnej metody weryfikacji można przekazać do niego funkcję. Funkcja ta zostanie wykonana zamiast domyślnej.

```
Ability::define('index', 'Wyświetlanie', [
    'callback' => function($user, $ability) {
        return $user->is_activated;
    }
])
```

### Zasoby uprawnień

[](#zasoby-uprawnień)

```
Ability::resource(string $prefix, string $label, array $options = [])
```

Podobnie jak w routingu, w uprawnieniach również można definiować zasoby. Podczas tworzenia zasobu należy podać przedrostek grupy (`$prefix`) oraz wyświetlaną nazwę grupy (`$label`).

```
Ability::resource('user', 'Użytkownicy');
```

Dodatkowo można przekazać opcje wykluczace lub dopuszczające tylko wybrane uprawnienia.

```
Ability::resource('user', 'Użytkownicy', [
    'only' => ['index', 'create', 'edit'],
]);

Ability::resource('user', 'Użytkownicy', [
    'except' => ['show', 'destroy'],
]);
```

Sprawdzanie uprawnień
---------------------

[](#sprawdzanie-uprawnień)

Kaźde uprawnienie można sprawdzać za pomocą standardowych metod klasy `Gate`:

```
Gate::allows('admin.user.index');
@can('admin.user.index');
Route::get('/', 'UserController@index')->middleware('can:admin.user.index');
```

Aby kontroler automatycznie sprawdzał uprawnienia do danych akcji można zdefiniować w nim listę powiązań między akcjami a uprawnieniami

```
class UserController extends Controller
{
    ...

    public $actionAbilities = [
        'index'  => 'admin.user.index',
        'create' => 'admin.user.create',
    ];

    ...
}
```

###  Health Score

21

—

LowBetter than 19% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity10

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity40

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

Every ~1 days

Total

2

Last Release

2025d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/95dd08b3f7f83eedb53d6a13b37a9c2121336d1ae1615e79d5b274e59d32ead8?d=identicon)[Dartui](/maintainers/Dartui)

---

Top Contributors

[![Dartui](https://avatars.githubusercontent.com/u/2657856?v=4)](https://github.com/Dartui "Dartui (2 commits)")

---

Tags

laravellaravel-packagephp

###  Code Quality

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/nextgen-tech-laravel-abilities/health.svg)

```
[![Health](https://phpackages.com/badges/nextgen-tech-laravel-abilities/health.svg)](https://phpackages.com/packages/nextgen-tech-laravel-abilities)
```

###  Alternatives

[tymon/jwt-auth

JSON Web Token Authentication for Laravel and Lumen

11.5k49.1M344](/packages/tymon-jwt-auth)[php-open-source-saver/jwt-auth

JSON Web Token Authentication for Laravel and Lumen

8359.8M52](/packages/php-open-source-saver-jwt-auth)[laragear/two-factor

On-premises 2FA Authentication for out-of-the-box.

339785.3k8](/packages/laragear-two-factor)[codegreencreative/laravel-samlidp

Make your PHP Laravel application an Identification Provider using SAML 2.0. This package allows you to implement your own Identification Provider (idP) using the SAML 2.0 standard to be used with supporting SAML 2.0 Service Providers (SP).

263763.5k1](/packages/codegreencreative-laravel-samlidp)[alajusticia/laravel-logins

Session management in Laravel apps, user notifications on new access, support for multiple separate remember tokens, IP geolocation, User-Agent parser

2011.0k](/packages/alajusticia-laravel-logins)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

255.2k](/packages/aedart-athenaeum)

PHPackages © 2026

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