Мне нужно создать форму для входа, чтобы у указанного посетителя был доступ к панели администратора.
У меня есть форма для входа в систему в качестве администратора.Существует перенаправление к этой форме входа в систему, когда кто-то хочет получить доступ к пути /admin*
.
Однако у меня есть проблема с сохранением данных, и мне кажется, что я никогда не вошел в систему.
Мой файл security.yaml:
security:
encoders:
App\Entity\User:
algorithm: bcrypt
providers:
in_database:
entity:
class: App\Entity\User
property: email
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
anonymous: true
provider: in_database
pattern: /admin*
form_login:
login_path: security_login
check_path: security_login
logout:
path: security_logout
target: home
access_control:
- { path: ^/admin, roles: ROLE_ADMIN }
- { path: ^/(connexion)$, role: IS_AUTHENTICATED_ANONYMOUSLY }
Мой главный контроллер:
/**
* @Route("/connexion", name="security_login")
*/
public function login() {
return $this->render('admin/login.html.twig');
}
Моя HTML-форма:
<form action="{{ path('security_login') }}" method="post">
<div class="form-group">
<input type="email" class="form-control" placeholder="Adresse mail" required name="_username">
</div>
<div class="form-group">
<input type="password" class="form-control" placeholder="Mot de passe" required name="_password">
</div>
<div class="form-group">
<button type="submit" class="btn btn-success">Connexion</button>
</div>
</form>
PHP
В моемПользовательский объект, который позволяет мне создавать только пользователей-администраторов, идентифицированных по их электронной почте, у меня есть это:
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* @ORM\Entity(repositoryClass="App\Repository\UserRepository")
* @UniqueEntity(
* fields={"email"},
* message="L'email que vous avez indiqué est déjà utilisé !"
* )
*/
class User implements UserInterface
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
* @Assert\Email()
*/
private $email;
/**
* @ORM\Column(type="string", length=255)
*/
private $username;
/**
* @ORM\Column(type="string", length=255)
* @Assert\Length(min="8", minMessage="Votre mot de passe doit faire au minimum {{limit}} caractères")
*/
private $password;
/**
* @Assert\EqualTo(propertyPath="password", message="Vous n'avez pas tapé le même mot de passe")
*/
public $confirm_password;
public function getId(): ?int
{
return $this->id;
}
public function getEmail(): ?string
{
return $this->email;
}
public function setEmail(string $email): self
{
$this->email = $email;
return $this;
}
public function getUsername(): ?string
{
return $this->username;
}
public function setUsername(string $username): self
{
$this->username = $username;
return $this;
}
public function getPassword(): ?string
{
return $this->password;
}
public function setPassword(string $password): self
{
$this->password = $password;
return $this;
}
public function eraseCredentials() {}
public function getSalt() {}
public function getRoles() {
return ['ROLE_ADMIN'];
}
Вопрос
Почему данные не сохраняются после отправки формы входа?Что я должен добавить / изменить, чтобы решить мою проблему и получить доступ к панели администратора (с перенаправлением на нее) после заполнения формы?