PHPackages                             photon/auth-mongodb - 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. [Database &amp; ORM](/categories/database)
4. /
5. photon/auth-mongodb

ActiveLibrary[Database &amp; ORM](/categories/database)

photon/auth-mongodb
===================

Authentification and users for MongoDB

v3.0(6y ago)0399LGPL-2.1PHPPHP ^5.5 || ^7.0

Since Dec 1Pushed 5y ago2 watchersCompare

[ Source](https://github.com/photon/auth-mongodb)[ Packagist](https://packagist.org/packages/photon/auth-mongodb)[ Docs](http://www.photon-project.com/)[ RSS](/packages/photon-auth-mongodb/feed)WikiDiscussions master Synced 2mo ago

READMEChangelog (1)Dependencies (4)Versions (12)Used By (0)

auth-mongodb
============

[](#auth-mongodb)

[![Build Status](https://camo.githubusercontent.com/6846420b4ee5e94081bcef318dceec76008b6985ddba475c850df79a736adb2f/68747470733a2f2f7472617669732d63692e6f72672f70686f746f6e2f617574682d6d6f6e676f64622e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/photon/auth-mongodb)

MongoDB Backend for user, group, acl storage in photon

Quick start
-----------

[](#quick-start)

1. Add the module in your project

    composer require "photon/auth-mongodb:dev-master"

or for a specific version

```
composer require "photon/auth-mongodb:^2.0"

```

2. Define a MongoDB connection in your project configuration

Declare your MongoBD database

```
'databases' => array(
    'default' => array(
        'engine' => '\photon\db\MongoDB',
        'server' => 'mongodb://localhost:27017/',
        'database' => 'orm',
        'options' => array(
            'connect' => true,
        ),
    ),
),

```

3. Enable session backend

The authentification module use a session to store user information

```
'session_storage' => '\photon\session\storage\MongoDB',
'session_cookie_path' => '/',
'session_timeout' => 4 * 60 * 60,
'session_mongodb' => array(
    'database' => 'default',
    'collection' => 'session',
),

```

4. Configure the authentification backend

Configure the authentification backend to use this module

```
'auth_backend' => '\photon\Auth\MongoDBBackend',

```

5. Create a user

Create your first user to be able to login

```
$user = new \photon\auth\MongoDBUser;
$user->setLogin('jd@exemple.com');
$user->setPassword('strong');
$user->save();

```

6. Create a login view

Add a login view in your app, the following code is the minimal one

```
class MyViews {
    public function login($request, $match)
    {
        if ($request->method === 'POST') {
            $user = \photon\auth\Auth::authenticate($request->POST);
            if ($user !== false) {
                \photon\auth\Auth::login($request, $user);
                return new Redirect('/');
            }
        }

	    return shortcuts\Template::RenderToResponse('login.html', array(), $request);
    }
}

```

Declare the login view in your urls.

```
array('regex' => '#^/login$#',
      'view' => array('\Dummy', 'dummy'),
      'name' => 'login_view')

```

7. Enjoy !

Advanced usage
--------------

[](#advanced-usage)

### Custom user class

[](#custom-user-class)

If you want to add application specific content to the user class, you just have to extends it. It's allow you to change the collection name where object are stored.

```
class MyUser extends \photon\auth\MongoDBUser
{
    const collectionName = 'foobarcollection';

    public function isAdmin()
    {
        return $this->admin;
    }
}

```

Then, you must configure the MongoDB auth backend to use your class. Edit your photon configuration file to add :

```
'auth_mongodb' => array(
    'user_class' => '\My\App\MyUser',
)

```

### Protect your view with ACLs

[](#protect-your-view-with-acls)

The following view `dummy` is protected by precondition. The class `MongoDBPrecondition` will load the ACL with name `adminPanel` and ensure the user can access to this view, otherwize a 403 will be generated.

```
class Dummy
{
  public $dummy_precond = array(
  '\photon\auth\MongoDBPrecondition::adminPanel'
  );
  public function dummy($request, $match)
  {
    return new \photon\http\response\NoContent;
  }
}

```

The ACL can be created with the following code

```
$acl = new \photon\auth\MongoDBAcl;
$acl->setName('adminPanel');
$acl->addUser($user);
$acl->save();

```

You can ensure all ACL are created with the following code, users can be added later.

```
\photon\auth\MongoDBAcl::ensureExists(['admin', 'api', 'ntp']);

```

### Conditional rendering in templates

[](#conditional-rendering-in-templates)

You can use `MongoDBTemplateTag` in your template to test user ACL.

```
{acl 'adminPanel'}
Will be display only if the user have the adminPanel acl
{/acl}

```

The template must be declared in your configuration file

```
'template_tags' => array(
    'acl' => '\photon\auth\MongoDBTemplateTag',
)

```

###  Health Score

29

—

LowBetter than 59% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity12

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity65

Established project with proven stability

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

Recently: every ~222 days

Total

11

Last Release

2261d ago

Major Versions

v1.2.0 → v2.0.02017-04-19

v2.1.1 → v3.02020-03-06

PHP version history (2 changes)v1.0.0PHP ~5.5

v2.0.0PHP ^5.5 || ^7.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/32f98ddde8bc7b4f6fadce6a4030a77dc6dfd8e08d8e5b122ab4cc70232f6341?d=identicon)[delkia](/maintainers/delkia)

---

Top Contributors

[![wysman](https://avatars.githubusercontent.com/u/1042272?v=4)](https://github.com/wysman "wysman (42 commits)")

---

Tags

authusermongodbphoton

###  Code Quality

TestsPHPUnit

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/photon-auth-mongodb/health.svg)

```
[![Health](https://phpackages.com/badges/photon-auth-mongodb/health.svg)](https://phpackages.com/packages/photon-auth-mongodb)
```

###  Alternatives

[mongodb/mongodb

MongoDB driver library

1.6k64.0M546](/packages/mongodb-mongodb)[doctrine/mongodb-odm

PHP Doctrine MongoDB Object Document Mapper (ODM) provides transparent persistence for PHP objects to MongoDB.

1.1k23.3M302](/packages/doctrine-mongodb-odm)[moriony/silex-mongo-provider

Mongo service provider for the Silex framwork.

118.5k](/packages/moriony-silex-mongo-provider)

PHPackages © 2026

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