maxpoitn2point
@maxpoitn2point
Как всегда, в своем репертуаре

Как правильно реализовать авторизацию symfony 2?

Начал изучать этот фреймворк и не могу понять как правильно решить задачу авторизации пользователей, хранящихся в БД.
После прочтения документации, к сожалению на английском языке, с котором я не очень дружу, стало понятно, что сие надо делать с помощью FOSUserBundle.
Кое как установив по инструкциям у меня появилась возможность создавать пользователей, группы.
Но как всегда появились вопросы, на которые я не нашел ответы в документации.

1)Есть некая сущность users которая наследует FOS\UserBundle\Model\User.
в ней указаны дополнительные записи
<?php
namespace ACVote\UsersBundle\Entity;

use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="Users")
 */
class Users extends BaseUser
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @ORM\Column(name="name", type="string", length=255, nullable=true)
     */
    private $name;

    /**
     * @ORM\Column(name="surname", type="string", length=255, nullable=true)
     */
    private $surname;

    /**
     * @ORM\ManyToMany(targetEntity="ACVote\UsersBundle\Entity\Groups")
     * @ORM\JoinTable(name="fos_user_user_group",
     *      joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")},
     *      inverseJoinColumns={@ORM\JoinColumn(name="group_id", referencedColumnName="id")}
     * )
     */
    protected $groups;


    public function __construct()
    {
        parent::__construct();
        // your own logic
    }

Поля имя фамилия появились, а поле группы нет. почему? Сущность для группы создана. таблица в базе есть.

2)При регистрации пользователя ему по умолчанию не присваивается никакой роли, группы и нельзя указать имя и фамилию как это исправить. я так понимаю нужно от чего то отнаследоваться и написать этот функционал там. не понятно от чего наследоваться и что предопределять.

3)При создании группы аналогично не знаю как и где указать роли этой группы.

4)И наверное самое не понятное это как заменить стандартные шаблоны своими заранее сделанными.
  • Вопрос задан
  • 729 просмотров
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
что сие надо делать с помощью FOSUserBundle.

Нет, FosUserBundle предоставляет базовые вещи вроде активации аккаунта и т.д. Это удобно, но есть куча вариантов при котором этот бандл делает больше плохого чем хорошего. В большинстве случаев использовать его норм.

Поля имя фамилия появились, а поле группы нет. почему?

Потому что это поле опредено в базовом классе User из фос юзер бандла. Это хороший пример почему мне не нравится его использовать, я предпочитаю полный контроль за своими сущностями.

При регистрации пользователя ему по умолчанию не присваивается никакой роли, группы и нельзя указать имя и фамилию

Обычно это решается расширением форм тайпа идущего в фос юзер бандл. Ну или свой хэнделр, или целиком своя реализация регистрации. В целом большая часть проблем решается установкой значений в конструкторе модели но есть варианты при котором это делать уже не так удобно.

как заменить стандартные шаблоны своими заранее сделанными.

Читаем документацию к fos user bundle, там все это есть. Это одна из самых базовых нужд разработчика, так что, как понимаете, это можно сделать прописав в конфиге пути к шаблонам, которые вы хотите юзать.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы