|
|
@ -17,10 +17,8 @@ |
|
|
|
* You should have received a copy of the GNU Affero General Public License |
|
|
|
* You should have received a copy of the GNU Affero General Public License |
|
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
namespace vierbergenlars\AuthserverExternalAccountBundle\EventListener; |
|
|
|
namespace vierbergenlars\AuthserverExternalAccountBundle\EventListener; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
use App\Event\TemplateEvent; |
|
|
|
use App\Event\TemplateEvent; |
|
|
|
use HWI\Bundle\OAuthBundle\Security\OAuthUtils; |
|
|
|
use HWI\Bundle\OAuthBundle\Security\OAuthUtils; |
|
|
|
use Symfony\Bridge\Doctrine\ManagerRegistry; |
|
|
|
use Symfony\Bridge\Doctrine\ManagerRegistry; |
|
|
@ -33,16 +31,19 @@ use vierbergenlars\AuthserverOAuthAccountBundle\ResourceOwner\ResourceOwnerMap; |
|
|
|
|
|
|
|
|
|
|
|
class ProfileTemplateListener implements EventSubscriberInterface |
|
|
|
class ProfileTemplateListener implements EventSubscriberInterface |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
|
|
|
|
* |
|
|
|
* @var ManagerRegistry |
|
|
|
* @var ManagerRegistry |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
private $registry; |
|
|
|
private $registry; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
|
|
|
|
* |
|
|
|
* @var ExternalAccountProviderManager |
|
|
|
* @var ExternalAccountProviderManager |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
private $accountProviderManager; |
|
|
|
private $accountProviderManager; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function __construct(ManagerRegistry $registry, ExternalAccountProviderManager $accountProviderManager) |
|
|
|
public function __construct(ManagerRegistry $registry, ExternalAccountProviderManager $accountProviderManager) |
|
|
|
{ |
|
|
|
{ |
|
|
|
$this->registry = $registry; |
|
|
|
$this->registry = $registry; |
|
|
@ -53,21 +54,27 @@ class ProfileTemplateListener implements EventSubscriberInterface |
|
|
|
{ |
|
|
|
{ |
|
|
|
return [ |
|
|
|
return [ |
|
|
|
UserEvents::USER_PROFILE_VIEW => [ |
|
|
|
UserEvents::USER_PROFILE_VIEW => [ |
|
|
|
['addExternalAccounts', -60] |
|
|
|
[ |
|
|
|
], |
|
|
|
'addExternalAccounts', |
|
|
|
|
|
|
|
-60 |
|
|
|
|
|
|
|
] |
|
|
|
|
|
|
|
] |
|
|
|
]; |
|
|
|
]; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function addExternalAccounts(TemplateEvent $event) |
|
|
|
public function addExternalAccounts(TemplateEvent $event) |
|
|
|
{ |
|
|
|
{ |
|
|
|
$externalUsers = $this->registry->getManagerForClass(ExternalUser::class) |
|
|
|
$providers = $this->accountProviderManager->getAccountProviders(); |
|
|
|
->getRepository(ExternalUser::class) |
|
|
|
if (count($providers) > 0) { |
|
|
|
->findBy([ |
|
|
|
$externalUsers = $this->registry->getManagerForClass(ExternalUser::class) |
|
|
|
'user' => $event->getSubject(), |
|
|
|
->getRepository(ExternalUser::class) |
|
|
|
|
|
|
|
->findBy([ |
|
|
|
|
|
|
|
'user' => $event->getSubject() |
|
|
|
|
|
|
|
]); |
|
|
|
|
|
|
|
$event->addTemplate(new TemplateReference('AuthserverExternalAccountBundle', 'Profile', 'external_accounts', 'html', 'twig'), [ |
|
|
|
|
|
|
|
'externalUsers' => $externalUsers, |
|
|
|
|
|
|
|
'providerManager' => $this->accountProviderManager |
|
|
|
]); |
|
|
|
]); |
|
|
|
$event->addTemplate(new TemplateReference('AuthserverExternalAccountBundle', 'Profile', 'external_accounts', 'html', 'twig'), [ |
|
|
|
} |
|
|
|
'externalUsers' => $externalUsers, |
|
|
|
|
|
|
|
'providerManager' => $this->accountProviderManager, |
|
|
|
|
|
|
|
]); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|