NOTE: This bundle depends in the SonataAdminBundle, SonataUserBundle and in the SonataDoctrineORMAdminBundle.
In an already working Symfony installation edit your composer.json file and add this line:
require: {
"hasheado/admin-bundle": "dev-master"
}
and then, open a command console, enter your project directory and execute the following command to download the latest stable version of this bundle:
$ composer update
This command requires you to have Composer installed globally, as explained in the installation chapter of the Composer documentation.
To enable the bundle we need to add the following line in the app/AppKernel.php
file of your project:
<?php
// app/AppKernel.php
// ...
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = array(
// ...
// Add dependencies
new Sonata\CoreBundle\SonataCoreBundle(),
new Sonata\BlockBundle\SonataBlockBundle(),
new Knp\Bundle\MenuBundle\KnpMenuBundle(),
new Sonata\DoctrineORMAdminBundle\SonataDoctrineORMAdminBundle(),
new FOS\UserBundle\FOSUserBundle(),
new Sonata\UserBundle\SonataUserBundle('FOSUserBundle'),
new Sonata\EasyExtendsBundle\SonataEasyExtendsBundle(),
// Then add SonataAdminBundle
new Sonata\AdminBundle\SonataAdminBundle(),
// And HasheadoAdminBundle
new Hasheado\AdminBundle\HasheadoAdminBundle(),
);
// ...
}
// ...
}
If you followed the installation instructions, HasheadoAdminBundle should be installed but inaccessible. You first need to configure it for your models before you can start using it.
Import the HasheadoAdminBundle’s config files:
# app/config/config.yml
imports:
- { resource: @HasheadoAdminBundle/Resources/config/config.yml }
sonata_user:
class:
user: pathToYourBundle\Entity\User
group: pathToYourBundle\Entity\Group
fos_user:
db_driver: orm # can be orm or odm
firewall_name: admin
user_class: pathToYourBundle\Entity\User
group:
group_class: pathToYourBundle\Entity\Group
group_manager: sonata.user.orm.group_manager # If you're using doctrine orm (use sonata.user.mongodb.user_manager for mongodb)
service:
user_manager: sonata.user.orm.user_manager # If you're using doctrine orm (use sonata.user.mongodb.group_manager for mongodb)
from_email:
address: noreply@adminbundle.com
sender_name: Hasheado Admin Bundle
Of course, replace the path to your User and/or Group entities, and do not forget to make your classes extend the Sonata\UserBundle\Entity\BaseUser and the Sonata\UserBundle\Entity\BaseGroup classes.
Then you need to add the below security configuration:
# app/config/security.yml
security:
role_hierarchy:
ROLE_ADMIN: [ROLE_USER, ROLE_SONATA_ADMIN]
ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
SONATA:
- ROLE_SONATA_PAGE_ADMIN_PAGE_EDIT # if you are using acl then this line must be commented
providers:
fos_userbundle:
id: fos_user.user_manager
encoders:
FOS\UserBundle\Model\UserInterface: sha512
firewalls:
# Disabling the security for the web debug toolbar, the profiler and Assetic.
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
# -> custom firewall for the admin area of the URL
admin:
pattern: /admin(.*)
context: user
form_login:
provider: fos_userbundle
login_path: /admin/login
use_forward: false
check_path: /admin/login_check
failure_path: null
logout:
path: /admin/logout
target: /admin
anonymous: true
# -> end custom configuration
acl:
connection: default
access_control:
# Admin login page needs to be access without credential
- { path: ^/admin/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/logout$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/login_check$, role: IS_AUTHENTICATED_ANONYMOUSLY }
# Secured part of the site
# This config requires being logged for the whole site and having the admin role for the admin part.
# Change these rules to adapt them to your needs
- { path: ^/admin/, role: [ROLE_ADMIN, ROLE_SONATA_ADMIN] }
- { path: ^/.*, role: IS_AUTHENTICATED_ANONYMOUSLY }
At this point, the bundle is functional, but not quite ready yet.
You need to update the schema:
php app/console doctrine:schema:update --force
and create a new root user:
php app/console fos:user:create --super-admin
To be able to access HasheadoAdminBundle’s pages, you need to add its routes to your application’s routing file:
# app/config/routing.yml
admin:
resource: '@HasheadoAdminBundle/Resources/config/routing.yml'
Finally, publish the assets:
php app/console assets:install
At this point you can already access the (empty) admin dashboard by visiting the url: http://yoursite.local/admin/dashboard. And, start adding your admins following SonataAdminBundle documentation.
Please, submit an issue: HasheadoAdminBundle's issues