Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

<?php namespace PickleWeb\Controller; use PickleWeb\Auth\ProviderInterface; use PickleWe..

Decoded Output download

<?php

namespace PickleWeb\Controller;

use PickleWeb\Auth\ProviderInterface;
use PickleWeb\Entity\User;
use PickleWeb\Entity\UserRepository;

/**
 * Class AuthController.
 */
class AuthController extends ControllerAbstract
{
    /**
     * GET /login.
     */
    public function loginAction()
    {
        $this->app
            ->redirectIf($this->app->user(), '/profile')
            ->render('register.html');
    }

    /**
     * GET /logout.
     */
    public function logoutAction()
    {
        session_destroy();

        $this->app->redirect('/');
    }

    /**
     * @param string $provider
     *
     * @throws \ErrorException
     */
    public function loginWithProviderAction($provider)
    {
        $providerKey = 'authentication.provider.'.$provider;

        // Check if provider exist
        if (!$this->app->container->has($providerKey)) {
            $this->app->notFound();
        }

        /* @var $authorizationProvider ProviderInterface */
        $authorizationProvider = $this->app->container->get($providerKey);

        $token = $authorizationProvider->handleAuth($this->app);
        $_SESSION[$provider.'.token'] = $token;

        $providerMetadata = $authorizationProvider->getUserDetails($token);

        if (empty($providerMetadata->getEmail()) || empty($providerMetadata->getUid())) {
            $this->app->flash('error', 'User details incomplete. Unable to fetch user');
            $this->app->redirect('/login');
        }

        // Fetch or persist user from repository
        /* @var $userRepository UserRepository */
        $userRepository = $this->app->container->get('user.repository');
        $user = $userRepository->find($providerMetadata->getEmail());

        if (is_null($user)) {
            $user = $userRepository->findByProviderId($provider, $providerMetadata->getUid());
            if (is_null($user)) {
                $user = new User();
                $user->setEmail($providerMetadata->getEmail())
                    ->setNickname($providerMetadata->getNickName())
                    ->setName($providerMetadata->getRealName())
                    ->setPicture($providerMetadata->getProfilePicture())
                    ->setLocation($providerMetadata->getLocation())
                    ->addProviderMetadata($provider, $providerMetadata);

                $userRepository->persist($user);
            }
        }

        // Complete information if needed
        if (!$user->hasProviderMetadata($provider)) {
            $user->addProviderMetadata($provider, $providerMetadata);

            if (empty($user->getPicture())) {
                $user->setPicture($providerMetadata->getProfilePicture());
            }

            if (empty($user->getLocation())) {
                $user->setLocation($providerMetadata->getLocation());
            }

            $userRepository->persist($user);
        }

        // persist user in session
        $_SESSION['user'] = $user->getId();

        $this->app->redirect('/profile');
    }
}

/* vim: set tabstop=4 shiftwidth=4 expandtab: fdm=marker */
 ?>

Did this file decode correctly?

Original Code

<?php

namespace PickleWeb\Controller;

use PickleWeb\Auth\ProviderInterface;
use PickleWeb\Entity\User;
use PickleWeb\Entity\UserRepository;

/**
 * Class AuthController.
 */
class AuthController extends ControllerAbstract
{
    /**
     * GET /login.
     */
    public function loginAction()
    {
        $this->app
            ->redirectIf($this->app->user(), '/profile')
            ->render('register.html');
    }

    /**
     * GET /logout.
     */
    public function logoutAction()
    {
        session_destroy();

        $this->app->redirect('/');
    }

    /**
     * @param string $provider
     *
     * @throws \ErrorException
     */
    public function loginWithProviderAction($provider)
    {
        $providerKey = 'authentication.provider.'.$provider;

        // Check if provider exist
        if (!$this->app->container->has($providerKey)) {
            $this->app->notFound();
        }

        /* @var $authorizationProvider ProviderInterface */
        $authorizationProvider = $this->app->container->get($providerKey);

        $token = $authorizationProvider->handleAuth($this->app);
        $_SESSION[$provider.'.token'] = $token;

        $providerMetadata = $authorizationProvider->getUserDetails($token);

        if (empty($providerMetadata->getEmail()) || empty($providerMetadata->getUid())) {
            $this->app->flash('error', 'User details incomplete. Unable to fetch user');
            $this->app->redirect('/login');
        }

        // Fetch or persist user from repository
        /* @var $userRepository UserRepository */
        $userRepository = $this->app->container->get('user.repository');
        $user = $userRepository->find($providerMetadata->getEmail());

        if (is_null($user)) {
            $user = $userRepository->findByProviderId($provider, $providerMetadata->getUid());
            if (is_null($user)) {
                $user = new User();
                $user->setEmail($providerMetadata->getEmail())
                    ->setNickname($providerMetadata->getNickName())
                    ->setName($providerMetadata->getRealName())
                    ->setPicture($providerMetadata->getProfilePicture())
                    ->setLocation($providerMetadata->getLocation())
                    ->addProviderMetadata($provider, $providerMetadata);

                $userRepository->persist($user);
            }
        }

        // Complete information if needed
        if (!$user->hasProviderMetadata($provider)) {
            $user->addProviderMetadata($provider, $providerMetadata);

            if (empty($user->getPicture())) {
                $user->setPicture($providerMetadata->getProfilePicture());
            }

            if (empty($user->getLocation())) {
                $user->setLocation($providerMetadata->getLocation());
            }

            $userRepository->persist($user);
        }

        // persist user in session
        $_SESSION['user'] = $user->getId();

        $this->app->redirect('/profile');
    }
}

/* vim: set tabstop=4 shiftwidth=4 expandtab: fdm=marker */

Function Calls

None

Variables

None

Stats

MD5 acd770c1c1fe55b11534e07c11463113
Eval Count 0
Decode Time 122 ms