Loading legacy chamilo session in chamilo/symfony2 see BT#10668

ofaj
jmontoyaa 10 years ago
parent 53ebcbbaeb
commit 9dc25afb0d
  1. 1
      app/AppKernel.php
  2. 10
      app/config/config.yml
  3. 4
      app/config/routing.yml
  4. 3
      composer.json
  5. 2
      main/admin/index.php
  6. 3
      main/inc/lib/chamilo_session.class.php
  7. 85
      src/Chamilo/CoreBundle/EventListener/LegacyLoginListener.php
  8. 4
      src/Chamilo/CoreBundle/Menu/NavBuilder.php
  9. 12
      src/Chamilo/CoreBundle/Resources/config/services.yml
  10. 13
      src/Chamilo/FaqBundle/Resources/views/Faq/index.html.twig
  11. 1
      src/Chamilo/FaqBundle/Resources/views/Faq/index_without_collapse.html.twig
  12. 3
      src/Chamilo/UserBundle/Resources/views/Security/base_login.html.twig

@ -52,6 +52,7 @@ class AppKernel extends Kernel
new Sonata\DatagridBundle\SonataDatagridBundle(),
new Sonata\MediaBundle\SonataMediaBundle(),
new Sonata\PageBundle\SonataPageBundle(),
new Theodo\Evolution\Bundle\SessionBundle\TheodoEvolutionSessionBundle(),
new Spy\TimelineBundle\SpyTimelineBundle(),
new Sonata\TimelineBundle\SonataTimelineBundle(),

@ -67,10 +67,18 @@ framework:
trusted_proxies: ~
session:
# handler_id set to null will use default session handler from php.ini
handler_id: ~
handler_id: ~
name: ch_sid
fragments: ~
http_method_override: true
theodo_evolution_session:
bag_manager:
class: Theodo\Evolution\Bundle\SessionBundle\Manager\Symfony1\BagManager
configuration_class: Theodo\Evolution\Bundle\SessionBundle\Manager\Symfony1\BagConfiguration
# Twig Configuration
twig:
debug: "%kernel.debug%"

@ -1,6 +1,10 @@
home:
path: /
userportal:
path: ../../user_portal.php
#index:
# path: /

@ -141,7 +141,8 @@
"jeroendesloovere/vcard": "^1.2",
"a2lix/translation-form-bundle": "~2.0",
"knplabs/doctrine-behaviors": "~1.1",
"lunetics/locale-bundle": "^2.4"
"lunetics/locale-bundle": "^2.4",
"theodo-evolution/session-bundle": "1.0.*"
},
"require-dev": {
"behat/behat": "@stable",

@ -540,5 +540,3 @@ $content = $tpl->fetch($admin_template);
$tpl->assign('content', $content);
$tpl->assign('message', $message);
$tpl->display_one_col_template();
// Note: version checking mechanism has now been moved to main/inc/ajax/admin.ajax.php

@ -1,5 +1,8 @@
<?php
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage;
/**
* Chamilo session (i.e. the session that maintains the connection open after usr login)
*

@ -0,0 +1,85 @@
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\CoreBundle\EventListener;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Chamilo\UserBundle\Entity\User;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
/**
* Class LegacyLoginListener
* @package Chamilo\CoreBundle\EventListener
*/
class LegacyLoginListener implements EventSubscriberInterface
{
/** @var ContainerInterface */
protected $container;
protected $tokenStorage;
/**
* LegacyLoginListener constructor.
* @param $container
* @param TokenStorage $tokenStorage
*/
public function __construct($container, $tokenStorage)
{
$this->container = $container;
$this->tokenStorage = $tokenStorage;
}
/**
* @param GetResponseEvent $event
*/
public function onKernelRequest(GetResponseEvent $event)
{
$request = $event->getRequest();
if (!$request->hasPreviousSession()) {
return;
}
$token = $this->tokenStorage->getToken();
if ($token) {
$isGranted = $this->container->get('security.authorization_checker')->isGranted('IS_AUTHENTICATED_FULLY');
if (!$isGranted) {
if (isset($_SESSION) && isset($_SESSION['_user'])) {
if ($_SESSION['_user']['active'] == 1) {
$userManager = $this->container->get('fos_user.user_manager');
$username = $_SESSION['_user']['username'];
/** @var User $user */
$user = $userManager->findUserByUsername($username);
if ($user) {
$token = new UsernamePasswordToken($user, null, "main", $user->getRoles());
$this->tokenStorage->setToken($token); //now the user is logged in
//now dispatch the login event
$event = new InteractiveLoginEvent($request, $token);
$this->container->get("event_dispatcher")->dispatch("security.interactive_login", $event);
}
}
}
}
}
}
/**
* @return array
*/
public static function getSubscribedEvents()
{
return array(
// must be registered before the default Locale listener
KernelEvents::REQUEST => array(array('onKernelRequest', 17)),
);
}
}

@ -65,11 +65,11 @@ class NavBuilder extends ContainerAware
if ($checker->isGranted('IS_AUTHENTICATED_FULLY')) {
/*$menu->addChild(
$menu->addChild(
$translator->trans('MyCourses'),
array('route' => 'userportal')
);
/*
$menu->addChild(
$translator->trans('Calendar'),
array(

@ -132,12 +132,12 @@ services:
# - { name: kernel.event_listener, event: kernel.response, method: onKernelResponse }
# - { name: kernel.event_listener, event: kernel.controller, method: onKernelController }
# Setting locale
# chamilo_core.listener.locale:
# class: Chamilo\CoreBundle\EventListener\LocaleListener
# arguments: ["%kernel.default_locale%", "@service_container"]
# tags:
# - { name: kernel.event_subscriber }
#Setting locale
chamilo_core.listener.legacy_login_listener:
class: Chamilo\CoreBundle\EventListener\LegacyLoginListener
arguments: ["@service_container", '@security.token_storage']
tags:
- { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
# Setting user and platform locale
# chamilo_core.listener.user_locale_listener:

@ -12,7 +12,9 @@
</li>
{% else %}
<li>
<a href="{{ path('faq', { 'categorySlug': category.getSlug }) }}">{{ category.getHeadline|e }}</a>
<a href="{{ path('faq', { 'categorySlug': category.getSlug }) }}">
{{ category.getHeadline|e }}
</a>
</li>
{% endif %}
{% endfor %}
@ -21,9 +23,14 @@
{% if selectedCategory is not null %}
<h2>Questions</h2>
<ul>
{% for question in questions %}
{% set list = [false] %}
{% if is_granted('IS_AUTHENTICATED_FULLY') %}
{% set list = [false, true] %}
{% endif %}
{% for question in questions if question.onlyAuthUsers in list %}
{% if selectedQuestion.getSlug is defined and selectedQuestion.getSlug == question.getSlug %}
<li class="active" >
<li class="active">
<strong>{{ question.getHeadline|e }}</strong>
<div>{{ selectedQuestion.getBody }}</div>
</li>

@ -3,6 +3,7 @@
{% for category in categories %}
<h2>{{ category.headline|e }}</h2>
{% for question in category.questions %}
{{ question.isAuth |var_dump }}
<p><strong>{{ question.headline|e }}</strong></p>
<p>{{ question.body }}</p>
{% endfor %}

@ -27,7 +27,8 @@
<div class="form-group">
<label for="username"
class="col-sm-4 control-label">{{ 'security.login.username'|trans({}, 'FOSUserBundle') }}</label>
class="col-sm-4 control-label">
{{ 'security.login.username'|trans({}, 'FOSUserBundle') }}</label>
<div class="col-sm-8"><input type="text"
class="form-control"

Loading…
Cancel
Save