+ Admin login
+
+ {% if error %}
+ {{ error.messageKey|trans(error.messageData, 'security') }}
+ {% endif %}
+
+ {{ form_start(loginForm) }}
+ {{ form_row(loginForm.username) }}
+ {{ form_row(loginForm.password) }}
+
+ {{ form_end(loginForm) }}
+
+{% endblock %}
diff --git a/tests/Controller/Admin/AuthControllerTest.php b/tests/Controller/Admin/AuthControllerTest.php
new file mode 100644
index 0000000..56e3a0e
--- /dev/null
+++ b/tests/Controller/Admin/AuthControllerTest.php
@@ -0,0 +1,63 @@
+client = self::createClient();
+
+ $this->entityManager = static::getContainer()->get(EntityManagerInterface::class);
+ $metadata = $this->entityManager->getMetadataFactory()->getAllMetadata();
+ $schemaTool = new SchemaTool($this->entityManager);
+ $schemaTool->dropSchema($metadata);
+ $schemaTool->createSchema($metadata);
+ }
+
+ protected function tearDown(): void
+ {
+ parent::tearDown();
+
+ $this->entityManager->close();
+ }
+
+ public function testAdminRedirectsToLogin(): void
+ {
+ $this->client->request('GET', '/admin');
+
+ self::assertResponseRedirects('/admin/login');
+ }
+
+ public function testAdminCanLogin(): void
+ {
+ $container = static::getContainer();
+
+ $user = (new User())->setUsername('admin');
+ $hash = $container->get(UserPasswordHasherInterface::class)->hashPassword($user, 'secret-password');
+ $user->setPasswordHash($hash);
+
+ $this->entityManager->persist($user);
+ $this->entityManager->flush();
+
+ $crawler = $this->client->request('GET', '/admin/login');
+ $form = $crawler->selectButton('Sign in')->form([
+ 'login_form[username]' => 'admin',
+ 'login_form[password]' => 'secret-password',
+ ]);
+ $this->client->submit($form);
+
+ self::assertResponseRedirects('/admin');
+ }
+}