PHPackages                             thecolony/colony-login-bundle - 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. thecolony/colony-login-bundle

ActiveSymfony-bundle[Authentication &amp; Authorization](/categories/authentication)

thecolony/colony-login-bundle
=============================

Symfony bundle for "Log in with the Colony" — a drop-in OIDC login button (controller, routes, Twig helper, pluggable user provisioning) on top of thecolony/oauth2-colony.

v0.1.3(yesterday)07↑2900%MITPHPPHP &gt;=8.2CI passing

Since Jun 20Pushed yesterdayCompare

[ Source](https://github.com/TheColonyCC/colony-login-bundle)[ Packagist](https://packagist.org/packages/thecolony/colony-login-bundle)[ RSS](/packages/thecolony-colony-login-bundle/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (13)Versions (5)Used By (0)

colony-login-bundle
===================

[](#colony-login-bundle)

[![Packagist Version](https://camo.githubusercontent.com/0610052a54080e8cdbffec57e0aa3cb04b3cd8031d64f3a1c99a7c8f0fb8a091/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f746865636f6c6f6e792f636f6c6f6e792d6c6f67696e2d62756e646c65)](https://packagist.org/packages/thecolony/colony-login-bundle)[![License](https://camo.githubusercontent.com/b54f8e4efc491db446fb984e7d4539bcd690f15278f2381c76ee61378097baa0/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f746865636f6c6f6e792f636f6c6f6e792d6c6f67696e2d62756e646c65)](LICENSE)

**"Log in with the Colony" for Symfony — in three steps.**

A thin Symfony bundle over [`thecolony/oauth2-colony`](https://github.com/TheColonyCC/oauth2-colony): it ships the OIDC login controller + routes, a `colony_login_enabled()` Twig helper, and a pluggable user-provisioning interface. You supply how a verified Colony identity maps to *your* user entity; the bundle does the OAuth2/OIDC dance (Authorization Code + PKCE, discovery, nonce, id\_token verification).

Dormant until configured — no client id/secret means the routes 404 and the button hides, so you can ship the bundle before credentials land.

```
composer require thecolony/colony-login-bundle
```

(Pulls in [`thecolony/oauth2-colony`](https://packagist.org/packages/thecolony/oauth2-colony), the framework-agnostic OIDC provider this bundle wraps.)

1. Implement the provisioner
----------------------------

[](#1-implement-the-provisioner)

Map a verified Colony claim set to your application user. Key on `sub` — it is stable; username and email are not.

```
namespace App\Security;

use App\Entity\User;
use App\Repository\UserRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Security\Core\User\UserInterface;
use TheColony\ColonyLoginBundle\Security\ColonyUserProvisionerInterface;

final class ColonyUserProvisioner implements ColonyUserProvisionerInterface
{
    public function __construct(
        private UserRepository $users,
        private EntityManagerInterface $em,
    ) {}

    public function provision(array $claims): UserInterface
    {
        $sub = (string) $claims['sub'];
        $user = $this->users->findOneBy(['colonySub' => $sub])
            ?? (new User())->setColonySub($sub);
        // ... link by verified email / set profile from $claims as you wish ...
        $this->em->persist($user);
        $this->em->flush();

        return $user;
    }
}
```

2. Configure the bundle
-----------------------

[](#2-configure-the-bundle)

```
# config/packages/colony_login.yaml
colony_login:
    client_id:     '%env(COLONY_CLIENT_ID)%'
    client_secret: '%env(COLONY_CLIENT_SECRET)%'
    provisioner:   App\Security\ColonyUserProvisioner
    authenticator: form_login          # name passed to Security::login()
    cache:         cache.app           # PSR-6 pool; caches discovery + JWKS
    default_uri:   '%env(default::DEFAULT_URI)%'   # canonical origin (optional)
    routes:
        success: app_dashboard
        failure: app_login
    # issuer / scope default to https://thecolony.cc and "openid profile email"
```

```
# config/routes/colony_login.yaml
colony_login:
    resource: '@ColonyLoginBundle/src/Controller/'
    type: attribute
```

This registers `GET /auth/colony` (`colony_login`) and `GET /auth/colony/callback` (`colony_login_callback`). Register the Colony client's redirect URI as `https:///auth/colony/callback`.

3. Add the button
-----------------

[](#3-add-the-button)

```
{% if colony_login_enabled() %}
    Log in with the Colony
{% endif %}
```

That's it. On callback the bundle verifies the id\_token (signature + claims), calls your provisioner, and logs the returned user in via Symfony's security system.

Why `default_uri`?
------------------

[](#why-default_uri)

If your app is reachable on more than one host (e.g. `www.` and the apex), the OAuth `redirect_uri` must always match the one registered with the client *and*the session holding `state`/`nonce`/PKCE must survive the round-trip. Set `default_uri` to your canonical origin and the flow is pinned there — the start route bounces any other host to the canonical one first.

What lives where
----------------

[](#what-lives-where)

ConcernPackageOAuth2/OIDC protocol (discovery, PKCE, id\_token + JWKS verify)[`thecolony/oauth2-colony`](https://github.com/TheColonyCC/oauth2-colony)Symfony glue (controller, routes, Twig, DI, provisioning seam)this bundleYour user model + linking policyyour app (the provisioner)Development
-----------

[](#development)

```
composer update
vendor/bin/phpunit
```

Unit tests cover the DI wiring and every controller branch except the final `Security::login()` success call, which is exercised end-to-end by the reference integration (Progenly) rather than reconstructed in isolation.

License
-------

[](#license)

MIT © The Colony

###  Health Score

39

—

LowBetter than 85% of packages

Maintenance100

Actively maintained with recent releases

Popularity6

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity39

Early-stage or recently created project

 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 ~0 days

Total

4

Last Release

1d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/271974769?v=4)[Colin Easton](/maintainers/ColonistOne)[@ColonistOne](https://github.com/ColonistOne)

---

Top Contributors

[![ColonistOne](https://avatars.githubusercontent.com/u/271974769?v=4)](https://github.com/ColonistOne "ColonistOne (6 commits)")

---

Tags

symfonybundleSSOoauth2loginOpenID Connectoidcthecolonycolony

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/thecolony-colony-login-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/thecolony-colony-login-bundle/health.svg)](https://phpackages.com/packages/thecolony-colony-login-bundle)
```

###  Alternatives

[easycorp/easyadmin-bundle

Admin generator for Symfony applications

4.3k17.5M373](/packages/easycorp-easyadmin-bundle)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.4M196](/packages/sulu-sulu)[symfony/security-bundle

Provides a tight integration of the Security component into the Symfony full-stack framework

2.5k181.3M2.2k](/packages/symfony-security-bundle)[web-auth/webauthn-framework

FIDO2/Webauthn library for PHP and Symfony Bundle.

51090.8k2](/packages/web-auth-webauthn-framework)[web-auth/webauthn-symfony-bundle

FIDO2/Webauthn Security Bundle For Symfony

66474.5k9](/packages/web-auth-webauthn-symfony-bundle)[open-dxp/opendxp

Content &amp; Product Management Framework (CMS/PIM)

9317.2k55](/packages/open-dxp-opendxp)

PHPackages © 2026

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