Как использовать отдельную сущность пароля, чтобы пользователь не мог обновить пароль со старой? - PullRequest
0 голосов
/ 14 апреля 2019

Я хочу создать собственную систему аутентификации, отделяя пароли от сущности пользователя.у каждого пользователя может быть больше, чем пароль, и используется самый последний, и когда пользователь пытается обновить свой пароль, я хочу запретить ему использовать старый пароль, как это описано в ссылке ниже.Пожалуйста, мне нужна ваша помощь и спасибо.
https://filebin.net/wa6jrfy0t0xcqru7/Screenshot_from_2019-04-14_00-46-20.jpg?t=n9vnajox

1 Ответ

0 голосов
/ 14 апреля 2019

Для меня не пользовательская система аутентификации, вам просто нужно изменить тело метода getPassword.ниже вы найдете пример.

password.php

<?php

namespace your\name\space;


use Doctrine\ORM\Mapping as ORM;
use DateTime;

class Password
{
    /**
     * @ORM\ManyToOne(targetEntity="your\name\space\User", inversedBy="passwords")
     * @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=false)
     *
     * @var User
     */
    private $user;

    /**
     * @ORM\Column(name="inserted_at", type="datetime")
     * 
     * @var DateTime
     */
    private $insertedAt;
}

User.php

<?php

namespace your\name\space;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\UserInterface;

class User implements UserInterface
{

    /**
     * @ORM\OneToMany(targetEntity="your\name\space\Password", mappedBy="user")
     * @ORM\OrderBy(value={"insertedAt" = "DESC"})
     *
     * @var Collection
     */
    private $passwords;

    /**
     * User constructor.
     */
    public function __construct()
    {
        $this->passwords = new ArrayCollection();
    }

    /**
     * {@inheritDoc}
     */
    public function getPassword()
    {
        if ($this->passwords->isEmpty()) {
            return null;
        }

        return $this->passwords->first();
    }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...