1
0
Fork 0
forked from deblan/gist
gist/src/Gist/Controller/LoginController.php

109 lines
2.6 KiB
PHP
Raw Normal View History

2015-11-21 15:04:41 +01:00
<?php
namespace Gist\Controller;
use Symfony\Component\HttpFoundation\Request;
use Gist\Model\User;
use Gist\Form\UserRegisterForm;
2015-11-21 18:28:48 +01:00
use Gist\Form\UserLoginForm;
use Symfony\Component\HttpFoundation\Response;
2015-11-21 15:04:41 +01:00
/**
2016-11-13 00:44:23 +01:00
* Class LoginController.
*
2015-11-21 15:04:41 +01:00
* @author Simon Vieille <simon@deblan.fr>
*/
class LoginController extends Controller
{
2016-11-13 00:44:23 +01:00
/**
* Registration page.
*
* @param Request $request
*
* @return string
*/
public function registerAction(Request $request)
2015-11-21 15:04:41 +01:00
{
$app = $this->getApp();
2017-04-24 01:11:39 +02:00
if (false === $app['settings']['enable_registration']) {
return new Response('', 403);
}
2015-11-21 15:04:41 +01:00
$user = $app['user.provider']->createUser();
$form = new UserRegisterForm(
$app['form.factory'],
$app['translator'],
$user
);
$form = $form->build()->getForm();
if ($request->isMethod('post')) {
$form->submit($request);
if ($form->isValid()) {
if ($app['user.provider']->userExists($user->getUsername())) {
$error = $app['translator']->trans('login.register.already_exists');
} else {
$app['user.provider']->registerUser(
$user,
$user->getPassword()
);
$success = $app['translator']->trans('login.register.registred');
}
}
}
return $this->render(
2015-11-21 15:04:41 +01:00
'Login/register.html.twig',
[
2016-11-13 00:44:23 +01:00
'form' => $form->createView(),
'error' => isset($error) ? $error : '',
2015-11-21 15:04:41 +01:00
'success' => isset($success) ? $success : '',
]
2015-11-21 15:04:41 +01:00
);
}
2016-11-13 00:44:23 +01:00
/**
* Login page.
*
* @param Request $request
*
* @return string
*/
public function loginAction(Request $request)
2015-11-21 18:28:48 +01:00
{
$app = $this->getApp();
2017-04-24 01:11:39 +02:00
if (false === $app['settings']['enable_login']) {
return new Response('', 403);
}
2015-11-21 18:28:48 +01:00
$user = $app['user.provider']->createUser();
$form = new UserLoginForm(
$app['form.factory'],
$app['translator'],
$user,
['csrf_protection' => false]
);
$form = $form->build()->getForm();
2015-11-23 21:59:50 +01:00
if ($app['security.last_error']($request)) {
2015-11-21 18:28:48 +01:00
$error = $app['translator']->trans('login.login.invalid');
}
return $this->render(
2015-11-21 18:28:48 +01:00
'Login/login.html.twig',
[
2016-11-13 00:44:23 +01:00
'form' => $form->createView(),
2015-11-21 18:28:48 +01:00
'error' => isset($error) ? $error : '',
]
2015-11-21 18:28:48 +01:00
);
}
2015-11-21 15:04:41 +01:00
}