reshadman / laravel-mongo-auth
A native mongo db auth driver on Laravel 5's default auth module.
Installs: 45
Dependents: 0
Suggesters: 0
Security: 0
Stars: 29
Watchers: 1
Forks: 4
Open Issues: 1
pkg:composer/reshadman/laravel-mongo-auth
Requires
- illuminate/auth: 5.0.*
- illuminate/contracts: 5.0.*
- illuminate/support: 5.0.*
This package is auto-updated.
Last update: 2021-09-12 00:33:25 UTC
README
This package does not require any external MongoDB related dependencies except the Php MongoDB Driver and simply uses Auth::extend() to extend the native Laravel Auth module.
Installation
- Run
composer require reshadman/laravel-mongo-authin your project's composer root. - Add the
Reshadman\LmAuth\LmAuthServiceProviderservice provider to your app. - Run
php artisan vendor:publishcommand to generate package config files. - In
auth.phpconfig set thedrivertolmauth:
<?php return [ //... 'driver' => 'lmauth' ];
Approach
An instance of MongoCollection is passed to \Reshadman\LmAuth\MongoDbUserProvider like below :
From \Reshadman\LmAuth\LmAuthServiceProvider :
<?php $this->app['auth']->extend('lmauth', function(Application $app){ $config = $app['config']->get('lmauth'); return new MongoDbUserProvider( $app['lmauth.collection'], // Should be bound to an instance of \MongoCollection $app['hash'], $config ); });
The above code needs $app['lmauth.collection'] to be available in IoC container which is an instance of MongoCollection.
If you set the use_default_collection_provider config option to true, the package will create a new binding for that.
You may also create your own driver with another driver name and pass your own config and mongo collection instance to it.
<?php Auth::extend('my-lmauth', function($app) { $config = $app['config']->get('lmauth'); // or your desired $mongoCollection = $app['global_mongo_connection']->myDb->myCollection; return new \Reshadman\LmAuth\MongoDbUserProvider($mongoCollection, $app['hash'], $config); });
The default_connection_closure config
If you pass a closure to this config key then the package will use this closure to get the MongoClient connection to connect to mongodb. Usefull when using Doctrine Mongo db package or alternatives.
<?php return [ //... 'default_connection_closure' => function($app) { return new \MongoClient('192.168.0.2:27013'); // or $app['mongo.singleton_connection'] } ];
If you set the above option to null the the package will use a singleton shared instance ( new \MongoClient()) which has lmauth.connection key in the container.