You may buy me a Beer, a Tea or help with Server fees with a paypal donation to the address [email protected].
Don't forget to show your love for this project, feel free to report bugs to the author, issues which are security relevant should be disclosed privately first.
Patches are welcomed and grant credit when requested.
Add bundle custom repository to your project's composer.json
file:
{
...,
"repositories": [
{
"type": "package",
"package": {
"name": "rapsys/userbundle",
"version": "dev-master",
"source": {
"type": "git",
"url": "https://git.rapsys.eu/userbundle",
"reference": "master"
},
"autoload": {
"psr-4": {
"Rapsys\\UserBundle\\": ""
}
},
"require": {
"doctrine/doctrine-bundle": "^1.0|^2.0",
"rapsys/packbundle": "dev-master",
"symfony/flex": "^1.0",
"symfony/form": "^4.0|^5.0",
"symfony/framework-bundle": "^4.0|^5.0",
"symfony/security-bundle": "^4.0|^5.0",
"symfony/validator": "^4.0|^5.0"
}
}
}
],
...
}
Then open a command console, enter your project directory and execute:
$ composer require rapsys/userbundle dev-master
Open a command console, enter your project directory and execute the following command to download the latest stable version of this bundle:
$ composer require rapsys/userbundle dev-master
This command requires you to have Composer installed globally, as explained in the installation chapter of the Composer documentation.
Then, enable the bundle by adding it to the list of registered bundles
in the app/AppKernel.php
file of your project:
<?php
// app/AppKernel.php
// ...
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = array(
// ...
new Rapsys\UserBundle\RapsysUserBundle(),
);
// ...
}
// ...
}
Setup configuration file config/packages/rapsysuser.yaml
with the following
content available in Rapsys/UserBundle/Resources/config/packages/rapsysuser.yaml
:
#Doctrine configuration
doctrine:
#Orm configuration
orm:
#Force resolution of UserBundle entities to CustomBundle one
#XXX: without these lines, relations are lookup in parent namespace ignoring CustomBundle extension
resolve_target_entities:
Rapsys\UserBundle\Entity\Group: 'CustomBundle\Entity\Group'
Rapsys\UserBundle\Entity\Civility: 'CustomBundle\Entity\Civility'
Rapsys\UserBundle\Entity\User: 'CustomBundle\Entity\User'
#RapsysUser configuration
rapsysuser:
#Class replacement
class:
group: 'CustomBundle\Entity\Group'
civility: 'CustomBundle\Entity\Civility'
user: 'CustomBundle\Entity\User'
#Default replacement
default:
group: [ 'User' ]
civility: 'Mister'
#Route replacement
route:
index:
name: 'custom_index'
#Service configuration
services:
#Register security context service
rapsysuser.access_decision_manager:
class: 'Symfony\Component\Security\Core\Authorization\AccessDecisionManager'
public: true
arguments: [ [ '@security.access.role_hierarchy_voter' ] ]
#Register default controller
Rapsys\UserBundle\Controller\DefaultController:
arguments: [ '@service_container', '@router', '@translator' ]
autowire: true
tags: [ 'controller.service_arguments' ]
#Register Authentication success handler
security.authentication.success_handler:
class: 'Rapsys\UserBundle\Handler\AuthenticationSuccessHandler'
arguments: [ '@router', {} ]
#Register Authentication failure handler
security.authentication.failure_handler:
class: 'Rapsys\UserBundle\Handler\AuthenticationFailureHandler'
arguments: [ '@http_kernel', '@security.http_utils', {}, '@logger', '@service_container', '@router', '@rapsys_pack.slugger_util']
#Register logout success handler
security.logout.success_handler:
class: 'Rapsys\UserBundle\Handler\LogoutSuccessHandler'
arguments: [ '@service_container', '/', '@router' ]
#Register security user checker
security.user_checker:
class: 'Rapsys\UserBundle\Checker\UserChecker'
Open a command console, enter your project directory and execute the following command to see default bundle configuration:
$ php bin/console config:dump-reference RapsysUserBundle
Open a command console, enter your project directory and execute the following command to see current bundle configuration:
$ php bin/console debug:config RapsysUserBundle
Setup configuration file CustomBundle/Resources/config/doctrine/User.orm.yml
with the
following content:
CustomBundle\Entity\User:
type: entity
#repositoryClass: CustomBundle\Repository\UserRepository
table: users
associationOverride:
groups:
joinTable:
name: users_groups
joinColumns:
id:
name: user_id
inverseJoinColumns:
id:
name: group_id
Setup configuration file Resources/config/doctrine/Group.orm.yml
with the
following content:
CustomBundle\Entity\Group:
type: entity
#repositoryClass: CustomBundle\Repository\GroupRepository
table: groups
manyToMany:
users:
targetEntity: Rapsys\AirBundle\Entity\User
mappedBy: groups
Setup configuration file Resources/config/doctrine/Civility.orm.yml
with the
following content:
CustomBundle\Entity\Civility:
type: entity
#repositoryClass: CustomBundle\Repository\CivilityRepository
table: civilities
oneToMany:
users:
targetEntity: User
mappedBy: civility
Setup entity file CustomBundle/Entity/User.php
with the following content:
<?php
namespace CustomBundle\Entity;
use Rapsys\UserBundle\Entity\User as BaseUser;
class User extends BaseUser {}
Setup entity file CustomBundle/Entity/Group.php
with the following content:
<?php
namespace CustomBundle\Entity;
use Rapsys\GroupBundle\Entity\Group as BaseGroup;
class Group extends BaseGroup {}
Setup entity file CustomBundle/Entity/Civility.php
with the following content:
<?php
namespace CustomBundle\Entity;
use Rapsys\CivilityBundle\Entity\Civility as BaseCivility;
class Civility extends BaseCivility {}