Инструменты пользователя

Инструменты сайта


php:symfony:2x:user

Пользователи и логин

Настройки

Контроллер

if (false === $this->get('security.context')->isGranted('ROLE_ADMIN')) {
        throw new AccessDeniedException();
}
public function indexAction()
{
    if (!$this->get('security.context')->isGranted(new Expression(
        '"ROLE_ADMIN" in roles or (user and user.isSuperAdmin())'
    ))) {
        throw new AccessDeniedException();
    }
 
    // ...
}

Thanks to the SensioFrameworkExtraBundle, you can also secure your controller using annotations:

// ...
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
 
/**
 * @Security("has_role('ROLE_ADMIN')")
 */
public function helloAction($name)
{
    // ...
}
public function indexAction()
{
    $user = $this->get('security.context')->getToken()->getUser();
}

In a controller this can be shortcut to:

public function indexAction()
{
    $user = $this->getUser();
}

Шаблоны

Форма логина

{# src/Acme/SecurityBundle/Resources/views/Security/login.html.twig #}
{% if error %}
    <div>{{ error.message }}</div>
{% endif %}
 
<form action="{{ path('login_check') }}" method="post">
    <label for="username">Username:</label>
    <input type="text" id="username" name="_username" value="{{ last_username }}" />
 
    <label for="password">Password:</label>
    <input type="password" id="password" name="_password" />
 
    {#
        If you want to control the URL the user
        is redirected to on success (more details below)
        <input type="hidden" name="_target_path" value="/account" />
    #}
 
    <button type="submit">login</button>
</form>

Общий шаблон

{% if is_granted('ROLE_ADMIN') %}
    <a href="...">Delete</a>
{% endif %}
{% if is_granted(expression(
    '"ROLE_ADMIN" in roles or (user and user.isSuperAdmin())'
)) %}
    <a href="...">Delete</a>
{% endif %}
{% if app.user %}
  <ul>
    <li><a href="{{ path('fos_user_profile_show') }}">Профиль</a></li>
    <li><a href="{{ path('fos_user_security_logout') }}">Выйти</a></li>
  </ul>
{% else %}  
    <li><a href="{{ path('fos_user_security_login') }}">Логин</a></li>
{% endif %}
<p>Username: {{ app.user.username }}</p>
<p>Full name: {{ app.user.fullname }}</p>
/var/www/source/data/pages/php/symfony/2x/user.txt · Последнее изменение: 2024/02/05 12:40 (внешнее изменение)