<commit_before><?php

/**
 * Copyright 2015 SURFnet B.V.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

namespace OpenConext\ProfileBundle\Controller;

use OpenConext\ProfileBundle\Security\Guard;
use OpenConext\ProfileBundle\Service\UserService;
use Psr\Log\LoggerInterface;
use Surfnet\SamlBundle\SAML2\Attribute\AttributeDefinition;
use Symfony\Component\HttpFoundation\Response;
use Twig\Environment;

class IntroductionController
{
    /**
     * @var UserService
     */
    private $userService;

    /**
     * @var Environment
     */
    private $templateEngine;

    /**
     * @var Guard
     */
    private $guard;

    /**
     * @var LoggerInterface
     */
    private $logger;

    /**
     * @param UserService $userService
     * @param Environment $templateEngine
     * @param Guard $guard
     * @param LoggerInterface $logger
     */
    public function __construct(
        UserService $userService,
        Environment $templateEngine,
        Guard $guard,
        LoggerInterface $logger
    ) {
        $this->userService    = $userService;
        $this->templateEngine = $templateEngine;
        $this->guard          = $guard;
        $this->logger         = $logger;
    }

    /**
     * @return Response
     */
    public function overviewAction()
    {
        $this->guard->userIsLoggedIn();
        $this->logger->notice('Showing Introduction page');
        $attributeDefinition = new AttributeDefinition(
            'givenName',
            'urn:mace:dir:attribute-def:givenName',
            'urn:oid:172.16.17.32'
        );
        $userName = $this->userService
                     ->getUser()
                     ->getAttributes()
                     ->getAttributeByDefinition($attributeDefinition)
                     ->getValue()[0];

        return new Response($this->templateEngine->render('@OpenConextProfile/Introduction/overview.html.twig', [
            'userName' => $userName,
        ]));
    }
}<commit_msg>Ensure givenName is not required for using Profile<commit_after><?php

/**
 * Copyright 2015 SURFnet B.V.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

namespace OpenConext\ProfileBundle\Controller;

use OpenConext\ProfileBundle\Security\Guard;
use OpenConext\ProfileBundle\Service\UserService;
use Psr\Log\LoggerInterface;
use RuntimeException;
use Surfnet\SamlBundle\SAML2\Attribute\AttributeDefinition;
use Symfony\Component\HttpFoundation\Response;
use Twig\Environment;

class IntroductionController
{
    /**
     * @var UserService
     */
    private $userService;

    /**
     * @var Environment
     */
    private $templateEngine;

    /**
     * @var Guard
     */
    private $guard;

    /**
     * @var LoggerInterface
     */
    private $logger;

    /**
     * @param UserService $userService
     * @param Environment $templateEngine
     * @param Guard $guard
     * @param LoggerInterface $logger
     */
    public function __construct(
        UserService $userService,
        Environment $templateEngine,
        Guard $guard,
        LoggerInterface $logger
    ) {
        $this->userService    = $userService;
        $this->templateEngine = $templateEngine;
        $this->guard          = $guard;
        $this->logger         = $logger;
    }

    /**
     * @return Response
     */
    public function overviewAction()
    {
        $this->guard->userIsLoggedIn();
        $this->logger->notice('Showing Introduction page');
        $attributeDefinition = new AttributeDefinition(
            'givenName',
            'urn:mace:dir:attribute-def:givenName',
            'urn:oid:2.5.4.42'
        );
        try {
            $userName = $this->userService
                ->getUser()
                ->getAttributes()
                ->getAttributeByDefinition($attributeDefinition)
                ->getValue()[0];
        } catch (RuntimeException $e) {
            $this->logger->info("Unable to retrieve the givenName attribute. It is not present in the attribute set");
            $userName = '';
        }
        return new Response($this->templateEngine->render('@OpenConextProfile/Introduction/overview.html.twig', [
            'userName' => $userName,
        ]));
    }
}
{'fraction_non_alphanumeric': 0.10683515221137277, 'fraction_numerical': 0.006509668772735976, 'mean_word_length': 2.4076973255055445, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 37, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 2, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5396226', 'n_tokens_mistral': 1411, 'n_tokens_neox': 1367, 'n_words': 372}