Skip to content

GMaissa/RedmineUserProviderBundle

Repository files navigation

RedmineUserProviderBundle Packagist

master SensioLabsInsight Scrutinizer Build Status Code Coverage

About

A bundle to use Redmine as a user provider.

Installation

The recommended way to install this bundle is through Composer. Just run :

composer require gmaissa/redmine-user-provider-bundle

Register the bundle in the kernel of your application :

// app/AppKernel.php
public function registerBundles()
{
    $bundles = array(
        // ...
        new GMaissa\RedmineUserProviderBundle\GmRedmineUserProviderBundle(),
    );

    return $bundles;
}

Use the Redmine user provider in your security.yml file :

# app/config/security.yml
security:
    ...
    providers:
        app:
            id: gm_redmine_user_provider.provider
    ...

Configuration reference

# app/config/config.yml
gm_redmine_user_provider:
    redmine:
        url:                  ~ # Required
        allowed_domains:      []
    user_class:           GMaissa\RedmineUserProviderBundle\Model\RedmineUser
    persistence_driver:   ~ # One of "orm"
    oauthserver_bridge:   false

Persist your User

User entity class

Implement your own User Entity class, extending GMaissa\RedmineUserProviderBundle\Entity\User and declare it in the bundle configuration :

# app/config/config.yml
gm_redmine_user_provider:
    ...
    user_class: AppBundle\Entity\User

Using a provided user repository

Enable the provided persistence driver you want to use (for now only Doctrine ORM is provided) :

# app/config/config.yml
gm_redmine_user_provider:
    ...
    user_class: AppBundle\Entity\User
    persistence_driver: orm

Using a custom user repository

Implements the GMaissa\RedmineUserProviderBundle\Repository\UserRepositoryInterface interface for your repository serviceand tag is as a gm_redmine_user_provider.user_repository :

# services.yml
services:
    app.user_repository:
        class: AppBundle\Repository\UserReposioty
        tags:
            -  {name: gm_redmine_user_provider.user_repository}

Using with FOSOAuthServerBundle

Enable the OAuth Server Bridge :

# app/config/config.yml
gm_redmine_user_provider:
    ...
    oauthserver_bridge: true

You can now use the OAuth Storage service gm_redmine_user_provider.bridge.oauth.storage :

# app/config/config.yml
fos_oauth_server:
    ...
    service:
        storage: gm_redmine_user_provider.bridge.oauth.storage

Implementing your own User Factory

If you want to use a custom User Factory, implement the GMaissa\RedmineUserProviderBundle\Factory\UserFactoryInterface interface, register your service and alias it as gm_redmine_user_provider.factory.user.

# services.yml
services:
    app.redmine_user_provider.user_factory:
        class: AppBundle\Factory\CustomUserFactory
        calls:
            - [setUserClass, ["%gm_redmine_user_provider.user_class%"]]
        alias: gm_redmine_user_provider.factory.user

Using your own Redmine Api Client

Like the custom User Factory, implement the GMaissa\RedmineUserProviderBundle\ApiClient\RedmineApiClientInterface interface, register your service and alias it as gm_redmine_user_provider.api.client.

# services.yml
services:
    app.redmine_user_factory.api_client:
        class: AppBundle\ApiClient\CustomApiClient
        arguments:
            - "%gm_redmine_user_provider.redmine.url%"
        alias: gm_redmine_user_provider.api.client

Running tests

Install the dev dependencies :

composer install --dev

Run PHPUnit test suite :

php vendor/bin/phpunit

Contributing

In order to be accepted, your contribution needs to pass a few controls :

  • PHP files should be valid
  • PHP files should follow the PSR-2 standard
  • PHP files should be phpmd and phpcpd warning/error free

To ease the validation process, install the pre-commit framework and install the repository pre-commit hook :

pre-commit install

Finally, in order to homogenize commit messages across contributors (and to ease generation of the CHANGELOG), please apply this git commit message hook onto your local repository.

License

This bundle is released under the MIT license. See the complete license in the bundle:

src/Resources/meta/LICENSE