Adding roleController as a service

skala
Julio Montoya 13 years ago
parent 47b1d8829c
commit 83a52d441d
  1. 1
      main/inc/lib/database.lib.php
  2. 87
      main/inc/services.php
  3. 109
      src/ChamiloLMS/Controller/Admin/Administrator/RoleController.php
  4. 32
      src/ChamiloLMS/Form/RoleType.php

@ -183,6 +183,7 @@ class Database
*/
public static function fetch_object(\Doctrine\DBAL\Driver\Statement $result)
{
// Waiting for http://www.doctrine-project.org/jira/browse/DBAL-544 in order to know which constant use.
//return $result->fetch(\Doctrine\ORM\Query::HYDRATE_OBJECT);
return $result->fetch(PDO::FETCH_OBJ);

@ -36,73 +36,36 @@ $app->register(new Silex\Provider\HttpCacheServiceProvider(), array(
// Session provider
//$app->register(new Silex\ProviderSessionServiceProvider());
/*
Implements a UserProvider to login users
use Symfony\Component\Security\Core\User\UserProviderInterface;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\User\User;
use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
use Doctrine\DBAL\Connection;
class UserProvider implements UserProviderInterface
{
private $conn;
public function __construct(Connection $conn)
{
$this->conn = $conn;
}
public function loadUserByUsername($username)
{
$stmt = $this->conn->executeQuery('SELECT * FROM users WHERE username = ?', array(strtolower($username)));
if (!$user = $stmt->fetch()) {
throw new UsernameNotFoundException(sprintf('Username "%s" does not exist.', $username));
}
$roles = 'student';
echo $user['username'];exit;
return new User($user['username'], $user['password'], explode(',', $roles), true, true, true, true);
}
public function refreshUser(UserInterface $user)
{
if (!$user instanceof User) {
throw new UnsupportedUserException(sprintf('Instances of "%s" are not supported.', get_class($user)));
}
public function supportsClass($class)
{
return $class === 'Symfony\Component\Security\Core\User\User';
}
}
$app->register(new Silex\Provider\SecurityServiceProvider(), array(
'security.firewalls' => array(
'login' => array(
'pattern' => '^/login$',
),
'secured' => array(
'pattern' => '^/admin/',
'form' => array(
'login_path' => '/login',
'check_path' => '/admin/login_check'
),
'logout' => array('path' => '/logout', 'target' => '/'),
'users' => $app->share(function() use ($app) {
return new UserProvider($app['db']);
})
)
'pattern' => '^.*$',
'form' => array(
'login_path' => '/login',
'check_path' => '/admin/login_check'
// 'username_parameter' => 'form[username]',
// 'password_parameter' => 'form[password]',
),
'logout' => array('path' => '/logout', 'target' => '/'),
'users' => $app->share(function() use ($app) {
return new Entity\User();
})
)
),
'security.role_hierarchy'=> array(
'ROLE_ADMIN' => array('ROLE_EDITOR'),
"ROLE_EDITOR" => array('ROLE_WRITER'),
"ROLE_WRITER" => array('ROLE_USER'),
"ROLE_USER" => array("ROLE_SUSCRIBER"),
)
'ROLE_ADMIN' => array('ROLE_TEACHER'),
"ROLE_TEACHER" => array('ROLE_STUDENT'),
"ROLE_STUDENT" => array('ROLE_STUDENT'),
"ROLE_ANONYMOUS" => array("ROLE_ANONYMOUS"),
"ROLE_RRHH" => array("ROLE_RRHH"),
"ROLE_QUESTION_MANAGER" => array("ROLE_QUESTION_MANAGER")
)
));*/
// Setting Controllers as services provider
$app->register(new Silex\Provider\ServiceControllerServiceProvider());
@ -603,6 +566,12 @@ $app['exercise_manager.controller'] = $app->share(
}
);
$app['role.controller'] = $app->share(
function () use ($app) {
return new ChamiloLMS\Controller\Admin\Administrator\RoleController($app);
}
);
$app['model_ajax.controller'] = $app->share(
function () use ($app) {
return new ChamiloLMS\Controller\ModelAjaxController();

@ -0,0 +1,109 @@
<?php
/* For licensing terms, see /license.txt */
namespace ChamiloLMS\Controller\Admin\Administrator;
use ChamiloLMS\Controller\BaseController;
use Silex\Application;
use Symfony\Component\Form\Extension\Validator\Constraints\FormValidator;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Entity;
use ChamiloLMS\Form\RoleType;
/**
* Class RoleController
* @todo @route and @method function don't work yet
* @package ChamiloLMS\Controller
* @author Julio Montoya <gugli100@gmail.com>
*/
class RoleController extends BaseController
{
/**
*
* @param Application $app
* @Route("/")
* @Method({"GET"})
*/
public function indexAction()
{
$items = parent::listAction('array');
$template = $this->get('template');
$template->assign('items', $items);
$response = $template->render_template('admin/administrator/role/list.tpl');
return new Response($response, 200, array());
}
/**
*
* @Route("/{id}", requirements={"id" = "\d+"}, defaults={"foo" = "bar"})
* @Method({"GET"})
*/
public function readAction($id)
{
return parent::readAction($id);
}
public function editAction($id)
{
$roleRepo = $this->getRepository();
$role = $roleRepo->findOneById($id);
$form = $this->get('form.factory')->create(new RoleType(), $role);
$template = $this->get('template');
$template->assign('form', $form->createView());
$response = $template->render_template('admin/administrator/role/edit.tpl');
return new Response($response, 200, array());
}
public function addAction()
{
$form = $this->get('form.factory')->create(new RoleType());
$form->bind($this->getRequest());
if ($form->isValid()) {
$em = $this->get('orm.em');
$role = $form->getData();
$em->persist($role);
$em->flush();
$params = array('id' => $role->getId());
$url = $this->get('url_generator')->generate('admin_administrator_roles_read', $params);
return $this->redirect($url);
}
$template = $this->get('template');
$template->assign('form', $form->createView());
$response = $template->render_template('admin/administrator/role/add.tpl');
return new Response($response, 200, array());
}
/**
* @Route("", name="api_events_create")
* @Method({"POST"})
*/
public function createAction()
{
return parent::createAction();
}
/**
* @see BaseController::getRepository()
* @return EntityRepository
*/
protected function getRepository()
{
return $this->get('orm.em')->getRepository('Entity\Role');
}
/**
* @see BaseController::getNewEntity()
* @return Object
*/
protected function getNewEntity()
{
return new Entity\Role();
}
}

@ -0,0 +1,32 @@
<?php
namespace ChamiloLMS\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use Entity;
class RoleType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
//$role = new Entity\Role();
$builder->add('name', 'text');
$builder->add('role', 'text');
$builder->add('submit', 'submit');
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Entity\Role'
));
}
public function getName()
{
return 'role';
}
}
Loading…
Cancel
Save