PHPackages                             secgin/phalcon-auth-plugin - 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. secgin/phalcon-auth-plugin

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

secgin/phalcon-auth-plugin
==========================

Phalcon framework authorization plugin

v1.0(3y ago)0119MITPHP

Since Apr 24Pushed 1y ago1 watchersCompare

[ Source](https://github.com/secgin/phalcon-auth-plugin)[ Packagist](https://packagist.org/packages/secgin/phalcon-auth-plugin)[ RSS](/packages/secgin-phalcon-auth-plugin/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (2)Dependencies (1)Versions (2)Used By (0)

Phalcon Framework Auth Plugin
=============================

[](#phalcon-framework-auth-plugin)

Outurum bilgisi ile bir kullanıcının giriş yapıp yapmadığını kontrol eder.

- Aynı anda sadece bir ip adresinden girişe izin verilir.
- Kullanıcıların sayfalara erişim izni olup olmadığını kontrol edebilirsiniz.
- Ayarlardan aktif edilirse sadece izin verilen ip adreslerinden erişim yapılmasını sağlayabilirsiniz.

Not: Yetki ve ip adresi izni için 'AuthDataServiceInterface' sınıfını uygulayan bir sınıfınız olmalıdır. Kullanıcıların yetkileri ve izin verilen ip adresleri bu sınıf aracılığı ile alınır.

Kurulum
-------

[](#kurulum)

```
composer require secgin/phalcon-auth-plugin

```

Uygulama Adımları
-----------------

[](#uygulama-adımları)

### Servis kaydedilir

[](#servis-kaydedilir)

```
$di->register(new AuthProvider());
```

### İzinler ve Ip Adresileri (AuthDataServiceInterface)

[](#i̇zinler-ve-ip-adresileri-authdataserviceinterface)

Kullanıcı izinlerini almak için 'AuthDataServiceInterface' arayüzünü uygulayan bir sınıf oluşturup 'authDataService' isminde kaydedilir.

```
class AuthDataService implements AuthDataServiceInterface
{
    private array $permissions = [
        '100' => 7,
        '101' => 9,
        'user' => [
            '100' => 9,
            '101' => 9
        ],
        'customer' => [
            '100' => 9,
            '101' => 3
        ]
    ];

    private array $allowedIpAddresses = [
        '127.0.0.1',
        '::1',
        '192.168.1.42'
    ];

    public function getPermissionLevel(string $permissionCode, ?string $moduleName = null): ?int
    {
        return $moduleName != ''
            ? $this->permissions[$moduleName][$permissionCode] ?? null
            : $this->permissions[$permissionCode] ?? null;
    }

    public function isIpAddressAllowed(string $ipAddress): bool
    {
        return in_array($ipAddress, $this->allowedIpAddresses);
    }
}
```

```
$container->setShared('authDataService', AuthDataService::class);
```

### Sayfaların yetkilerinin kontrol edildiği adım

[](#sayfaların-yetkilerinin-kontrol-edildiği-adım)

Dispatcher servisinin olay dinleyicisine aşığadaki sınıfı uygulayıp açılan sayfaların yetki kontrolü yapılır.

```
class DispatcherEventHandler extends Injectable
{
    public function beforeExecuteRoute(Event $event, Dispatcher $dispatcher): bool
    {
        $result = $this->auth->hasAllowed(
            $dispatcher->getControllerClass(),
            $dispatcher->getActiveMethod(),
            $dispatcher->getModuleName());

        switch ((string)$result)
        {
            case AuthInterface::NOT_LOGGED_IN:
                $this->response
                    ->redirect('user');
                return false;
            case AuthInterface::NOT_ALLOWED_IP_ADDRESS:
                $this->response
                    ->redirect('user/ip');
                return false;
            case AuthInterface::NOT_ALLOWED_RESOURCE:
                $dispatcher->forward([
                    'controller' => 'error',
                    'action' => 'show401'
                ]);
                return false;
        }

        return true;
    }
}
```

### Giriş İşlemi

[](#giriş-i̇şlemi)

Kullanıcının adı ve şifresini doğruladıktan sonra login işlemini başlatmalısınız.

```
try
{
    $auth->login([
        'id' => '1',
        'usernamea' => 'admin',
        'name' => 'Admin',
    ]);
}
catch (LoginRequiredFieldException $e)
{
    echo $e->getMessage();
}
catch (Exception $e)
{
    echo 'Giriş yapılmadı.';
}
```

### Ek Açıklamalar(Annotation) Yetkilerin Belirlenmesi

[](#ek-açıklamalarannotation-yetkilerin-belirlenmesi)

İzin kontrolü izin kodu ve düzey değerlerine göre yapılır.

İzin Kodu: Ugulamada izin verilecek her işlem için bir kod belirlenir. Bu kodları 'AuthDataServiceInterface' arayüzünü uygulayan sınıf ile alınır.

İzin Düzeyi Seçenekleri:

- 3: Okuma
- 5: Okuma, Yazma
- 7: Okuma, Yazma, Güncelleme
- 9: Okuma, Yazma, Güncelleme, Silme

Ek açıklamalar

- @Public: Sayfanın yada işlemin herkese açık olduğunu belirtir. Örneğin login sayfası.
- @Private: Erişim kısıtlaması olan sayfalar için kullanılır. Bu açıklama varsayılan değerdir, eğer izin kodu ve düzeyi belirtilmesse sadece kullanıcını giriş yapması sayafaya erişim için yeterli olur.
- @IpAllowed: Bu açıklama ise bir kullanıcının tüm ip adreslerinden giriş yapmasını sağlar. Örneğin kullanıcıya ip izni vermek için kulanılan sayfaya bu açıklama eklenir.

### Private kullanımı

[](#private-kullanımı)

Sınıf için @Private(izin kodu)

Method için @Private(izin kodu, izin düzeyi(zorunlu değil))

```
/**
* @Private(100)
 */
class UserController extends Controller
{
    /**
    * @Private(3, 100)
     */
    public function listAction()
    {

    }

    /**
    * @Private(5)
     */
    public function newAction()
    {

    }

    /**
    * @Private(7)
     */
    public function editAction()
    {

    }

    /**
    * @Private(9)
     */
    public function deleteAction()
    {

    }
}
```

@Private(3, 100) Burada ilk parametre listAction için yetki düzeyinin en az 3 olması gerektiği, yetki kodunun ise 100 olduğunu verir.

Yetki kodu yazılmaz ise sınıfa tanımlı yetki kodu baz alınır.

Ayarlar
-------

[](#ayarlar)

Projenin config dosyasında auth isminde bir ayar grubu oluşturulur. Varsayılan değerler ile işlem yapıalcak ise aşağıdaki seçenekler girilmeyebilir.

```
new Config([
    'application' => [
        'cacheDir' => BASE_PATH . '/var/cache/',
    ],
    'auth' => [
        'useAllowedIpAddress' => true,
        'defaultAction' => 0,
        'allowMultipleLogin' => true
    ]
]);
```

- useAllowedIpAddress(bool\[false\]): Sadece izin verilen ip adreslerine erişim izni vermek için 'true' gönderilir.
- defaultAction(int): 0-1 değerlerini alır. 0 varsayılan olarak tüm sayfalar private, 1 ise public olarak işlem yapılır.
- allowMultipleLogin(bool\[false\]): Farklı ip adreslerinde login olmayı izin vermek için kullanılır.

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance26

Infrequent updates — may be unmaintained

Popularity10

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity44

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

1120d ago

### Community

Maintainers

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

---

Top Contributors

[![secgin](https://avatars.githubusercontent.com/u/4368834?v=4)](https://github.com/secgin "secgin (3 commits)")

### Embed Badge

![Health badge](/badges/secgin-phalcon-auth-plugin/health.svg)

```
[![Health](https://phpackages.com/badges/secgin-phalcon-auth-plugin/health.svg)](https://phpackages.com/packages/secgin-phalcon-auth-plugin)
```

###  Alternatives

[namshi/jose

JSON Object Signing and Encryption library for PHP.

1.8k99.6M101](/packages/namshi-jose)[league/oauth1-client

OAuth 1.0 Client Library

99698.8M106](/packages/league-oauth1-client)[bezhansalleh/filament-shield

Filament support for `spatie/laravel-permission`.

2.8k2.9M88](/packages/bezhansalleh-filament-shield)[gesdinet/jwt-refresh-token-bundle

Implements a refresh token system over Json Web Tokens in Symfony

70516.4M35](/packages/gesdinet-jwt-refresh-token-bundle)[league/oauth2-google

Google OAuth 2.0 Client Provider for The PHP League OAuth2-Client

41721.2M118](/packages/league-oauth2-google)[illuminate/auth

The Illuminate Auth package.

9327.3M1.0k](/packages/illuminate-auth)

PHPackages © 2026

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