Compare commits

...

2 Commits

Author SHA1 Message Date
Thomas MONCHICOURT eadb2a397f Fix : probleme connexion apres login 2018-08-22 11:34:58 +02:00
Thomas MONCHICOURT 959dd61435 Feat : ajout lien modification menu et title 2018-08-21 14:33:38 +02:00
5 changed files with 56 additions and 42 deletions
@@ -21,7 +21,7 @@
<script type="text/javascript" defer="defer" src="https://extend.vimeocdn.com/ga/64189815.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>{% block title %}Talents Tube : Le 1er job board 100% vidéo{% endblock %}</title>
<title>{% block title %}Talents Tube : La 1ère plateforme pour lemploi 100% vidéo{% endblock %}</title>
<link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}"/>
{% block metarobot %}<meta name="robots" content="index,follow">{% endblock %}
@@ -33,6 +33,9 @@
<li>
<a class="white-text" href="{{ path('service_cgu') }}">Conditions générales d'utilisation</a>
</li>
<li>
<a class="white-text" href="{{ path('page_Confidentialite') }}">Politique de confidentialité et protection des données</a>
</li>
</ul>
</div>
<div class="col xl3 l3 m6 s12 left-align">
@@ -9,7 +9,7 @@
<li><a href="{{ path('page_accompagnementTalent') }}" title="Accompagnement talent">Accompagnement</a></li>
</ul>
<ul id='dropdown_company' class='dropdown-content'>
<li><a href="{{ path('company_list') }}" title="Listes entreprises">Listes entreprises</a></li>
<li><a href="{{ path('company_list') }}" title="Les entreprises qui recrutent">Les entreprises qui recrutent</a></li>
<li><a href="{{ path('page_OffreEmploi') }}" title="L'offre d'emploi en vidéo">L'offre d'emploi en vidéo</a></li>
<li><a href="{{ path('page_reussirOffrevideo') }}" title="Comment faire une offre en vidéo">Comment faire une offre en vidéo</a></li>
<li><a href="{{ path('page_MarqueEmployeur') }}" title="Vidéo Marque Employeur">Vidéo Marque Employeur</a></li>
@@ -3,8 +3,8 @@ security:
in_memory:
memory: ~
fos_userbundle:
id: fos_user.user_provider.username_email
#id: app.user_provider
#id: fos_user.user_provider.username_email
id: app.user_provider
firewalls:
dev:
@@ -2,19 +2,11 @@
namespace AppBundle\Security\Core\User;
use FOS\UserBundle\Model\UserInterface as FOSUserInterface;
use AppBundle\Entity\Company;
use HWI\Bundle\OAuthBundle\OAuth\Response\UserResponseInterface;
use HWI\Bundle\OAuthBundle\Security\Core\User\FOSUBUserProvider as BaseFOSUBProvider;
use AppBundle\Entity\Company;
use AppBundle\Entity\Answer;
use AppBundle\Entity\Media;
use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
use Symfony\Component\Security\Core\User\UserInterface;
class FOSUBUserProvider extends BaseFOSUBProvider
{
@@ -22,20 +14,19 @@ class FOSUBUserProvider extends BaseFOSUBProvider
public function __construct($userManager, $em, $slug, $container, array $properties)
{
parent::__construct($userManager,$properties);
parent::__construct($userManager, $properties);
$this->em = $em;
$this->slugService = $slug;
$this->container = $container;
}
/**
* {@inheritdoc}
*/
public function connect(UserInterface $user, UserResponseInterface $response)
{
$isTmpUser = false;
if($this->container->get('security.token_storage')->getToken()){
if ($this->container->get('security.token_storage')->getToken()) {
$userConnected = $this->container->get('security.token_storage')->getToken()->getUser();
if ($userConnected->hasRole('ROLE_TALENT_TMP')) {
$isTmpUser = true;
@@ -46,7 +37,7 @@ class FOSUBUserProvider extends BaseFOSUBProvider
$property = $this->getProperty($response);
$username = $response->getUsername(); // get the unique user identifier
$serviceName = $response->getResourceOwner()->getName();
$propertyQuery = str_replace('_', '', lcfirst(ucwords($property, '_')));
$propertyQuery = str_replace('_', '', lcfirst(ucwords($property, '_')));
$setter = 'set' . ucfirst($serviceName) . 'Id';
$setterToken = 'set' . ucfirst($serviceName) . 'AccessToken';
$existingUser = $this->userManager->findUserBy(array($propertyQuery => $username));
@@ -56,7 +47,7 @@ class FOSUBUserProvider extends BaseFOSUBProvider
}
if (null !== $existingUser) {
$this->disconnect($existingUser, $response);
if($isTmpUser){
if ($isTmpUser) {
$this->assignToRealAccount($userConnected, $existingUser);
$user = $existingUser;
$token = new UsernamePasswordToken($user, null, "main", $user->getRoles());
@@ -66,7 +57,7 @@ class FOSUBUserProvider extends BaseFOSUBProvider
$existingUser->$setterToken($response->getAccessToken());
$this->userManager->updateUser($existingUser);
} else {
if($isTmpUser){
if ($isTmpUser) {
$existingUser = $this->loadUserByOAuthUserResponse($response);
$this->assignToRealAccount($userConnected, $existingUser);
$existingUser->$setter($username);
@@ -81,9 +72,17 @@ class FOSUBUserProvider extends BaseFOSUBProvider
}
}
public function assignToRealAccount($userConnected, $existingUser) {
/**
* This function is meant to reassign data from a temporary account to a real account
*
* @param $userConnected
* @param $existingUser
* @return void
*/
public function assignToRealAccount($userConnected, $existingUser)
{
$answers = $this->em->getRepository('AppBundle:Answer')->findBy(array('user' => $userConnected));
$medias = $this->em->getRepository('AppBundle:Media')->findBy(array('creator'=> $userConnected));
$medias = $this->em->getRepository('AppBundle:Media')->findBy(array('creator' => $userConnected));
foreach ($medias as $key => $media) {
$media->setCreator($existingUser);
}
@@ -95,41 +94,54 @@ class FOSUBUserProvider extends BaseFOSUBProvider
$this->userManager->deleteUser($userConnected);
}
/**
* Load a user by username.
*
* @param string $username
*
* @return UserInterface|null
*/
public function loadUserByUsername($username)
{
$existingUser = $this->userManager->findUserByEmail($username);
if($this->container->get('security.token_storage')->getToken()){
$existingUser = $this->userManager->findUserByUsername($username);
if($existingUser == null){
$existingUser = $this->userManager->findUserByEmail($username);
}
//Used to assign data from temporry account to real account
if ($this->container->get('security.token_storage')->getToken()) {
$userConnected = $this->container->get('security.token_storage')->getToken()->getUser();
if ($userConnected->hasRole('ROLE_TALENT_TMP')) {
$this->assignToRealAccount($userConnected, $existingUser);
}
}
return $existingUser;
}
/**
* {@inheritDoc}
*/
* Used to create or load user when linkedin or Facebook Oauth is used
*
* @param UserResponseInterface $response
* @return $user
*/
public function loadUserByOAuthUserResponse(UserResponseInterface $response)
{
{
$serviceName = $response->getResourceOwner()->getName();
$data = $response->getData();
$userConnected = null;
if($this->container->get('security.token_storage')->getToken()){
if ($this->container->get('security.token_storage')->getToken()) {
$userConnected = $this->container->get('security.token_storage')->getToken()->getUser();
}
$userEmail = $response->getEmail();
$user = $this->userManager->findUserByEmail($userEmail);
if($serviceName == "linkedin"){
if ($serviceName == "linkedin") {
$id = $data['id'];
$birthday = null;
$gender = null;
$userPhoto = $data['pictureUrls']['values'][0];
$username = $data['firstName']."-".$data['lastName'];
$username = $data['firstName'] . "-" . $data['lastName'];
$firstname = $data['firstName'];
$lastname = $data['lastName'];
@@ -150,9 +162,9 @@ class FOSUBUserProvider extends BaseFOSUBProvider
$lastname = $data['last_name'];
}
if (null === $user) {
if (null === $user) {
$user = $this->userManager->createUser();
$user->setUsername($firstname."-".$lastname);
$user->setUsername($firstname . "-" . $lastname);
$user->setFirstname($firstname);
$user->setLastname($lastname);
$user->setEmail($userEmail);
@@ -162,10 +174,10 @@ class FOSUBUserProvider extends BaseFOSUBProvider
$user->setRoles(array('ROLE_TALENT'));
$user->setBirthday($birthday);
$user->setGender($gender);
if($serviceName == "linkedin"){
if ($serviceName == "linkedin") {
$user->setLinkedinId($id);
}
if($serviceName == "facebook"){
if ($serviceName == "facebook") {
$user->setFacebookId($id);
}
$this->userManager->updateUser($user);
@@ -184,10 +196,10 @@ class FOSUBUserProvider extends BaseFOSUBProvider
return $user;
} else {
if($userConnected) {
if ($userConnected) {
$userConnected->hasRole('ROLE_TALENT_TMP');
if ($userConnected->hasRole('ROLE_TALENT_TMP')) {
$user->setUsername($firstname."-".$lastname);
$user->setUsername($firstname . "-" . $lastname);
$user->setFirstname($firstname);
$user->setLastname($lastname);
$user->setEmail($userEmail);
@@ -197,10 +209,10 @@ class FOSUBUserProvider extends BaseFOSUBProvider
$user->setRoles(array('ROLE_TALENT'));
$user->setBirthday($birthday);
$user->setGender($gender);
if($serviceName == "linkedin"){
if ($serviceName == "linkedin") {
$user->setLinkedinId($id);
}
if($serviceName == "facebook"){
if ($serviceName == "facebook") {
$user->setFacebookId($id);
}
$token = new UsernamePasswordToken($user, null, "main", $user->getRoles());
@@ -213,7 +225,6 @@ class FOSUBUserProvider extends BaseFOSUBProvider
$serviceName = $response->getResourceOwner()->getName();
$setter = 'set' . ucfirst($serviceName) . 'AccessToken';
$user->$setter($response->getAccessToken());
return $user;
return $user;
}
}