{"id":41912523,"url":"https://github.com/nextgen-tech/laravel-abilities","last_synced_at":"2026-01-25T16:11:51.512Z","repository":{"id":57026058,"uuid":"305688139","full_name":"nextgen-tech/laravel-abilities","owner":"nextgen-tech","description":null,"archived":false,"fork":false,"pushed_at":"2020-10-22T08:09:28.000Z","size":13,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-29T04:19:42.640Z","etag":null,"topics":["laravel","laravel-package","php"],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nextgen-tech.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-10-20T11:37:39.000Z","updated_at":"2022-08-23T10:43:44.000Z","dependencies_parsed_at":"2022-08-23T15:00:24.230Z","dependency_job_id":null,"html_url":"https://github.com/nextgen-tech/laravel-abilities","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/nextgen-tech/laravel-abilities","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nextgen-tech%2Flaravel-abilities","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nextgen-tech%2Flaravel-abilities/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nextgen-tech%2Flaravel-abilities/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nextgen-tech%2Flaravel-abilities/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nextgen-tech","download_url":"https://codeload.github.com/nextgen-tech/laravel-abilities/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nextgen-tech%2Flaravel-abilities/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28755080,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T13:59:49.818Z","status":"ssl_error","status_checked_at":"2026-01-25T13:59:33.728Z","response_time":113,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["laravel","laravel-package","php"],"created_at":"2026-01-25T16:11:46.429Z","updated_at":"2026-01-25T16:11:51.506Z","avatar_url":"https://github.com/nextgen-tech.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Laravel Abilities\n\nSpis treści\n\n* [Instalacja](#instalacja)\n    * [composer](#composer)\n    * [Service Provider](#service-provider)\n    * [Middleware](#middleware)\n    * [Kopiowanie plików](#kopiowanie-plików)\n    * [Migracje](#migracje)\n* [Konfiguracja](#konfiguracja)\n* [Definicja uprawnień](#definicja-uprawnień)\n    * [Grupy uprawnień](#grupy-uprawnień)\n    * [Pojedyncze uprawnienie](#pojedyncze-uprawnienie)\n        * [Aliasy](#aliasy)\n        * [Własna funkcja](#własna-funkcja)\n    * [Zasoby uprawnień](#zasoby-uprawnień)\n* [Sprawdzanie uprawnień](#sprawdzanie-uprawnień)\n\n## Instalacja\n\n### composer\n\nW terminalu wpisz\n\n```sh\ncomposer require nextgen-tech/laravel-abilities:^1.0\n```\n\n### Service Provider\n\n\u003e Jeśli aplikacja korzysta z Laravela w wersji 5.5 lub wyższej to możesz pominąć ten krok.\n\nW pliku `config/app.php` do listy providerów dopisz:\n\n```php\n'providers' =\u003e [\n    ...\n    NGT\\Laravel\\Abilities\\AbilityServiceProvider::class\n]\n```\n\n### Middleware\n\nW pliku `app/Http/Kernel.php` do grupy `web` należy dopisać:\n\n```php\nprotected $middlewareGroups = [\n    'web' =\u003e [\n        ...\n        \\NGT\\Laravel\\Abilities\\Middleware\\CheckUserAbilities::class\n    ]\n]\n```\n\n### Kopiowanie plików\n\nAby skopiować z paczki niezbędne pliki wykonaj następujące polecenie:\n\n```sh\nphp artisan vendor:publish --provider=\"NGT\\\\Laravel\\\\Abilities\\\\AbilityServiceProvider\"\n```\n\nMożna także opublikować część plików podając jeden z tagów: `config`, `translations`, `models` lub `migrations`:\n\n```sh\nphp artisan vendor:publish --provider=\"NGT\\\\Laravel\\\\Abilities\\\\AbilityServiceProvider\" --tag=config\n```\n\n### Migracje\n\nUruchom migracje\n\n```sh\nphp artisan migrate\n```\n\n## Konfiguracja\n\nKonfiguracja paczki znajduje się w pliku `config/abilities.php`.\n\n```php\nreturn [\n    'path'   =\u003e base_path('routes/abilities.php'), // Ścieżka do definicji uprawnień\n\n    'models' =\u003e [\n        'user'               =\u003e App\\User::class, // Model użytkowników\n        'user_ability'       =\u003e App\\UserAbility::class, // Model uprawnień użytkowników \n\n        'user_group'         =\u003e App\\UserGroup::class, // Model grup użytkowników\n        'user_group_ability' =\u003e App\\UserGroupAbility::class, // Model uprawnień grup użytkowników\n    ],\n];\n```\n\n## Definicja uprawnień\n\nDomyślnie uprawnienia znajdują się w pliku `routes/abilities.php`. Ścieżkę tę można zmienić w konfiguracji.\n\nDefiniować uprawnienia należy za pomocą fasady `NGT\\Laravel\\Abilities\\Facades\\Ability` lub instancji klasy `NGT\\Laravel\\Abilities\\AbilityRegistrar`.\n\n### Grupy uprawnień\n\n```php\nAbility::group(array $attributes, callable $abilities)\n```\n\nGrupy 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.\n\n```php\nAbility::group(['label' =\u003e 'Panel administracyjny', 'prefix' =\u003e 'admin'], function() {\n    ...\n})\n```\n\n### Pojedyncze uprawnienie\n\n```php\nAbility::define(string $slug, string $label, array $options = [])\n```\n\nKażde uprawnienie posiada swoją uproszczoną nazwe (`$slug`) oraz wyświetlaną nazwe (`$label`). Dodatkowo można zdefiniować opcje (`$options`).\n\n#### Aliasy\n\nKaż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:\n\n```php\nAbility::define('create', 'Tworzenie', [\n    'aliases' =\u003e ['store'],\n]);\n```\n\n#### Własna funkcja\n\nAby uprawnienie nie korzystało z domyślnej metody weryfikacji można przekazać do niego funkcję. Funkcja ta zostanie wykonana zamiast domyślnej.\n\n```php\nAbility::define('index', 'Wyświetlanie', [\n    'callback' =\u003e function($user, $ability) {\n        return $user-\u003eis_activated;\n    }\n])\n```\n\n### Zasoby uprawnień\n\n```php\nAbility::resource(string $prefix, string $label, array $options = [])\n```\n\nPodobnie 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`).\n\n```php\nAbility::resource('user', 'Użytkownicy');\n```\n\nDodatkowo można przekazać opcje wykluczace lub dopuszczające tylko wybrane uprawnienia.\n\n```php\nAbility::resource('user', 'Użytkownicy', [\n    'only' =\u003e ['index', 'create', 'edit'],\n]);\n\nAbility::resource('user', 'Użytkownicy', [\n    'except' =\u003e ['show', 'destroy'],\n]);\n```\n\n## Sprawdzanie uprawnień\n\nKaźde uprawnienie można sprawdzać za pomocą standardowych metod klasy `Gate`:\n\n```php\nGate::allows('admin.user.index');\n@can('admin.user.index');\nRoute::get('/', 'UserController@index')-\u003emiddleware('can:admin.user.index');\n```\n\nAby kontroler automatycznie sprawdzał uprawnienia do danych akcji można zdefiniować w nim listę powiązań między akcjami a uprawnieniami\n\n```php\nclass UserController extends Controller\n{\n    ...\n    \n    public $actionAbilities = [\n        'index'  =\u003e 'admin.user.index',\n        'create' =\u003e 'admin.user.create',\n    ];\n    \n    ...\n}","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnextgen-tech%2Flaravel-abilities","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnextgen-tech%2Flaravel-abilities","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnextgen-tech%2Flaravel-abilities/lists"}