mirror of
https://github.com/kevinveenbirkenbach/infinito.git
synced 2025-01-09 22:17:26 +01:00
Implemented FOS bundle
This commit is contained in:
parent
777b4aee61
commit
629ed13c51
@ -21,4 +21,8 @@ APP_SECRET=997425e20bc2144c301a312511101613
|
||||
# For a generic SMTP server, use: "smtp://localhost:25?encryption=&auth_mode="
|
||||
# Delivery is disabled by default via "null://localhost"
|
||||
MAILER_URL=null://localhost
|
||||
###< symfony/swiftmailer-bundle ###
|
||||
|
||||
###> friendsofsymfony/user-bundle ###
|
||||
MAILER_SENDER=test@test.de
|
||||
MAILER_USER=user
|
||||
###< friendsofsymfony/user-bundle ###
|
||||
|
@ -5,6 +5,7 @@
|
||||
"php": "^7.1.3",
|
||||
"ext-ctype": "*",
|
||||
"ext-iconv": "*",
|
||||
"friendsofsymfony/user-bundle": "~2.1",
|
||||
"knplabs/knp-menu-bundle": "^2.0",
|
||||
"sensio/framework-extra-bundle": "^5.1",
|
||||
"symfony/asset": "*",
|
||||
|
134
application/composer.lock
generated
134
application/composer.lock
generated
@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "46e513d742140ba387e272208c8a9dc9",
|
||||
"content-hash": "49bb78c3c5e9cebe665f0e40f98e14b8",
|
||||
"packages": [
|
||||
{
|
||||
"name": "doctrine/annotations",
|
||||
@ -1281,6 +1281,82 @@
|
||||
],
|
||||
"time": "2016-10-17T18:31:11+00:00"
|
||||
},
|
||||
{
|
||||
"name": "friendsofsymfony/user-bundle",
|
||||
"version": "v2.1.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/FriendsOfSymfony/FOSUserBundle.git",
|
||||
"reference": "1049935edd24ec305cc6cfde1875372fa9600446"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/FriendsOfSymfony/FOSUserBundle/zipball/1049935edd24ec305cc6cfde1875372fa9600446",
|
||||
"reference": "1049935edd24ec305cc6cfde1875372fa9600446",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"paragonie/random_compat": "^1 || ^2",
|
||||
"php": "^5.5.9 || ^7.0",
|
||||
"symfony/form": "^2.8 || ^3.0 || ^4.0",
|
||||
"symfony/framework-bundle": "^2.8 || ^3.0 || ^4.0",
|
||||
"symfony/security-bundle": "^2.8 || ^3.0 || ^4.0",
|
||||
"symfony/templating": "^2.8 || ^3.0 || ^4.0",
|
||||
"symfony/twig-bundle": "^2.8 || ^3.0 || ^4.0",
|
||||
"symfony/validator": "^2.8 || ^3.0 || ^4.0",
|
||||
"twig/twig": "^1.28 || ^2.0"
|
||||
},
|
||||
"conflict": {
|
||||
"doctrine/doctrine-bundle": "<1.3",
|
||||
"symfony/doctrine-bridge": "<2.7"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/doctrine-bundle": "^1.3",
|
||||
"friendsofphp/php-cs-fixer": "^2.2",
|
||||
"phpunit/phpunit": "^4.8.35|^5.7.11|^6.5",
|
||||
"swiftmailer/swiftmailer": "^4.3 || ^5.0 || ^6.0",
|
||||
"symfony/console": "^2.8 || ^3.0 || ^4.0",
|
||||
"symfony/phpunit-bridge": "^2.8 || ^3.0 || ^4.0",
|
||||
"symfony/yaml": "^2.8 || ^3.0 || ^4.0"
|
||||
},
|
||||
"type": "symfony-bundle",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.1.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"FOS\\UserBundle\\": ""
|
||||
},
|
||||
"exclude-from-classmap": [
|
||||
"/Tests/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Christophe Coevoet",
|
||||
"email": "stof@notk.org"
|
||||
},
|
||||
{
|
||||
"name": "FriendsOfSymfony Community",
|
||||
"homepage": "https://github.com/friendsofsymfony/FOSUserBundle/contributors"
|
||||
},
|
||||
{
|
||||
"name": "Thibault Duplessis"
|
||||
}
|
||||
],
|
||||
"description": "Symfony FOSUserBundle",
|
||||
"homepage": "http://friendsofsymfony.github.com",
|
||||
"keywords": [
|
||||
"User management"
|
||||
],
|
||||
"time": "2018-03-08T08:59:27+00:00"
|
||||
},
|
||||
{
|
||||
"name": "jdorn/sql-formatter",
|
||||
"version": "v1.2.17",
|
||||
@ -4292,6 +4368,62 @@
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2018-08-29T08:49:17+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/templating",
|
||||
"version": "v4.1.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/templating.git",
|
||||
"reference": "411b8c324ee3e8b36e71d938e8d043d6e16582d2"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/templating/zipball/411b8c324ee3e8b36e71d938e8d043d6e16582d2",
|
||||
"reference": "411b8c324ee3e8b36e71d938e8d043d6e16582d2",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.1.3",
|
||||
"symfony/polyfill-ctype": "~1.8"
|
||||
},
|
||||
"require-dev": {
|
||||
"psr/log": "~1.0"
|
||||
},
|
||||
"suggest": {
|
||||
"psr/log-implementation": "For using debug logging in loaders"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "4.1-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\Component\\Templating\\": ""
|
||||
},
|
||||
"exclude-from-classmap": [
|
||||
"/Tests/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Symfony Templating Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"time": "2018-07-26T11:24:31+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/translation",
|
||||
"version": "v4.1.4",
|
||||
|
@ -15,4 +15,5 @@ return [
|
||||
Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true],
|
||||
Symfony\Bundle\WebServerBundle\WebServerBundle::class => ['dev' => true],
|
||||
Knp\Bundle\MenuBundle\KnpMenuBundle::class => ['all' => true],
|
||||
FOS\UserBundle\FOSUserBundle::class => ['all' => true],
|
||||
];
|
||||
|
7
application/config/packages/fos_user.yaml
Normal file
7
application/config/packages/fos_user.yaml
Normal file
@ -0,0 +1,7 @@
|
||||
fos_user:
|
||||
db_driver: orm # other valid values are 'mongodb' and 'couchdb'
|
||||
firewall_name: main
|
||||
user_class: App\Entity\User
|
||||
from_email:
|
||||
address: "%env(MAILER_SENDER)%"
|
||||
sender_name: "%env(MAILER_USER)%"
|
@ -28,3 +28,5 @@ framework:
|
||||
|
||||
# APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues)
|
||||
#app: cache.adapter.apcu
|
||||
templating:
|
||||
engines: ['twig', 'php']
|
||||
|
@ -1,13 +1,13 @@
|
||||
security:
|
||||
# https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
|
||||
encoders:
|
||||
App\Entity\User:
|
||||
algorithm: bcrypt
|
||||
FOS\UserBundle\Model\UserInterface: bcrypt
|
||||
providers:
|
||||
our_db_provider:
|
||||
entity:
|
||||
class: App\Entity\User
|
||||
property: username
|
||||
fos_userbundle:
|
||||
id: fos_user.user_provider.username
|
||||
role_hierarchy:
|
||||
ROLE_ADMIN: ROLE_USER
|
||||
ROLE_SUPER_ADMIN: ROLE_ADMIN
|
||||
hide_user_not_found: false
|
||||
firewalls:
|
||||
dev:
|
||||
@ -16,21 +16,18 @@ security:
|
||||
main:
|
||||
anonymous: true
|
||||
form_login:
|
||||
login_path: login
|
||||
check_path: login
|
||||
logout:
|
||||
path: /logout
|
||||
target: /
|
||||
provider: fos_userbundle
|
||||
csrf_token_generator: security.csrf.token_manager
|
||||
logout: true
|
||||
|
||||
# activate different ways to authenticate
|
||||
|
||||
# http_basic: true
|
||||
# https://symfony.com/doc/current/security.html#a-configuring-how-your-users-will-authenticate
|
||||
|
||||
# form_login: true
|
||||
# https://symfony.com/doc/current/security/form_login_setup.html
|
||||
|
||||
# Easy way to control access for large sections of your site
|
||||
# Note: Only the *first* access control that matches will be used
|
||||
access_control:
|
||||
# - { path: ^/admin, roles: ROLE_ADMIN }
|
||||
# - { path: ^/profile, roles: ROLE_USER }
|
||||
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
|
||||
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
|
||||
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
|
||||
- { path: ^/admin/, role: ROLE_ADMIN }
|
||||
|
@ -1,2 +1,4 @@
|
||||
logout:
|
||||
path: /logout
|
||||
fos_user:
|
||||
resource: "@FOSUserBundle/Resources/config/routing/all.xml"
|
||||
|
@ -1,61 +0,0 @@
|
||||
<?php
|
||||
namespace App\Controller;
|
||||
|
||||
use App\Form\UserType;
|
||||
use App\Entity\User;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\Routing\Annotation\Route;
|
||||
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
|
||||
use Symfony\Component\HttpFoundation\RedirectResponse;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Translation\TranslatorInterface;
|
||||
use Symfony\Component\Form\FormInterface;
|
||||
|
||||
class RegistrationController extends AbstractController
|
||||
{
|
||||
|
||||
/**
|
||||
*
|
||||
* @var User
|
||||
*/
|
||||
private $user;
|
||||
|
||||
/**
|
||||
*
|
||||
* @Route("/register", name="user_register")
|
||||
*/
|
||||
public function register(Request $request, UserPasswordEncoderInterface $passwordEncoder,TranslatorInterface $translator): Response
|
||||
{
|
||||
$this->user = new User();
|
||||
$form = $this->createForm(UserType::class, $this->user);
|
||||
$form->handleRequest($request);
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
$this->encodePassword($passwordEncoder);
|
||||
$this->saveUser($translator);
|
||||
return $this->redirectToRoute('login');
|
||||
}
|
||||
return $this->render("user/register.html.twig", array(
|
||||
'form' => $form->createView()
|
||||
));
|
||||
}
|
||||
|
||||
public function encodePassword(UserPasswordEncoderInterface $passwordEncoder): void
|
||||
{
|
||||
$password = $passwordEncoder->encodePassword($this->user, $this->user->getPlainPassword());
|
||||
$this->user->setPassword($password);
|
||||
}
|
||||
|
||||
private function saveUser(TranslatorInterface $translator): void
|
||||
{
|
||||
$entityManager = $this->getDoctrine()->getManager();
|
||||
$entityManager->persist($this->user);
|
||||
try {
|
||||
$entityManager->flush();
|
||||
$this->addFlash('success', $translator->trans('User "%username%" created!',['%username%'=>$this->user->getUsername()]));
|
||||
} catch (\Exception $exception) {
|
||||
$this->addFlash('danger', $translator->trans('User "%username%" could not be created!',['%username%'=>$this->user->getUsername()]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,37 +0,0 @@
|
||||
<?php
|
||||
namespace App\Controller;
|
||||
|
||||
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Annotation\Route;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\Translation\TranslatorInterface;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author kevinfrantz
|
||||
*
|
||||
*/
|
||||
class SecurityController extends AbstractController
|
||||
{
|
||||
/**
|
||||
*
|
||||
* @Route("/login", name="login")
|
||||
*/
|
||||
public function login(AuthenticationUtils $authenticationUtils,TranslatorInterface $translator): Response
|
||||
{
|
||||
$error = $authenticationUtils->getLastAuthenticationError();
|
||||
if ($error) {
|
||||
$this->addFlash('danger', $translator->trans($error->getMessageKey(),$error->getMessageData(),'security'));
|
||||
}else{
|
||||
$lastUsername = $authenticationUtils->getLastUsername();
|
||||
if($lastUsername){
|
||||
$this->addFlash('success', $translator->trans('User %user% loged in.',['%user%'=>$lastUsername]));
|
||||
}
|
||||
}
|
||||
return $this->render("user/login.html.twig",[
|
||||
'last_username'=>$authenticationUtils->getLastUsername(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,8 @@
|
||||
<?php
|
||||
namespace App\Entity\Attribut;
|
||||
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author kevinfrantz
|
||||
@ -8,7 +10,7 @@ namespace App\Entity\Attribut;
|
||||
*/
|
||||
trait IdAttribut {
|
||||
/**
|
||||
* @ORM\Id
|
||||
* @ORM\Id()
|
||||
* @ORM\GeneratedValue
|
||||
* @ORM\Column(type="integer")(strategy="AUTO")
|
||||
*/
|
||||
|
@ -2,9 +2,8 @@
|
||||
namespace App\Entity;
|
||||
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use App\Entity\Attribut\UsernameAttribut;
|
||||
use App\Entity\Attribut\PasswordAttribut;
|
||||
use App\Entity\Attribut\PlainPasswordAttribute;
|
||||
use FOS\UserBundle\Model\User as BaseUser;
|
||||
use App\Entity\Attribut\NodeAttribut;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -12,51 +11,39 @@ use App\Entity\Attribut\PlainPasswordAttribute;
|
||||
* @ORM\Table(name="source_user")
|
||||
* @ORM\Entity(repositoryClass="App\Repository\UserRepository")
|
||||
*/
|
||||
class User extends AbstractSource implements UserInterface
|
||||
class User extends BaseUser implements SourceInterface
|
||||
{
|
||||
use UsernameAttribut,PasswordAttribut,PlainPasswordAttribute;
|
||||
use NodeAttribut;
|
||||
|
||||
/**
|
||||
* @ORM\Column(name="is_active", type="boolean")
|
||||
*/
|
||||
private $isActive;
|
||||
|
||||
/**
|
||||
* @ORM\Id()
|
||||
* @ORM\GeneratedValue
|
||||
* @ORM\Column(type="integer")(strategy="AUTO")
|
||||
*/
|
||||
protected $id;
|
||||
|
||||
public function setId(int $id): void
|
||||
{
|
||||
$this->id = $id;
|
||||
}
|
||||
|
||||
public function getId(): int
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct ();
|
||||
/**
|
||||
* @todo Remove this later
|
||||
* @var \App\Entity\User $isActive
|
||||
*/
|
||||
$this->isActive = true;
|
||||
}
|
||||
|
||||
public function getSalt()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public function getRoles()
|
||||
{
|
||||
return array('ROLE_USER');
|
||||
}
|
||||
|
||||
public function eraseCredentials()
|
||||
{
|
||||
}
|
||||
|
||||
/** @see \Serializable::serialize() */
|
||||
public function serialize()
|
||||
{
|
||||
return serialize(array(
|
||||
$this->id,
|
||||
$this->username,
|
||||
$this->password,
|
||||
));
|
||||
}
|
||||
|
||||
/** @see \Serializable::unserialize() */
|
||||
public function unserialize($serialized)
|
||||
{
|
||||
list (
|
||||
$this->id,
|
||||
$this->username,
|
||||
$this->password,
|
||||
) = unserialize($serialized, array('allowed_classes' => false));
|
||||
}
|
||||
}
|
||||
|
@ -1,14 +0,0 @@
|
||||
<?php
|
||||
namespace App\Entity;
|
||||
|
||||
use Symfony\Component\Security\Core\User\UserInterface as SymfonyUserInterface;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author kevinfrantz
|
||||
*
|
||||
*/
|
||||
interface UserInterface extends SymfonyUserInterface, \Serializable
|
||||
{
|
||||
}
|
||||
|
@ -0,0 +1,5 @@
|
||||
{% extends "@FOSUser/layout.html.twig" %}
|
||||
|
||||
{% block fos_user_content %}
|
||||
{% include "@FOSUser/ChangePassword/change_password_content.html.twig" %}
|
||||
{% endblock fos_user_content %}
|
@ -0,0 +1,8 @@
|
||||
{% trans_default_domain 'FOSUserBundle' %}
|
||||
|
||||
{{ form_start(form, { 'action': path('fos_user_change_password'), 'attr': { 'class': 'fos_user_change_password' } }) }}
|
||||
{{ form_widget(form) }}
|
||||
<div>
|
||||
<input type="submit" value="{{ 'change_password.submit'|trans }}" />
|
||||
</div>
|
||||
{{ form_end(form) }}
|
@ -0,0 +1,5 @@
|
||||
{% extends "@FOSUser/layout.html.twig" %}
|
||||
|
||||
{% block fos_user_content %}
|
||||
{% include "@FOSUser/Group/edit_content.html.twig" %}
|
||||
{% endblock fos_user_content %}
|
@ -0,0 +1,8 @@
|
||||
{% trans_default_domain 'FOSUserBundle' %}
|
||||
|
||||
{{ form_start(form, { 'action': path('fos_user_group_edit', {'groupName': group_name}), 'attr': { 'class': 'fos_user_group_edit' } }) }}
|
||||
{{ form_widget(form) }}
|
||||
<div>
|
||||
<input type="submit" value="{{ 'group.edit.submit'|trans }}" />
|
||||
</div>
|
||||
{{ form_end(form) }}
|
@ -0,0 +1,5 @@
|
||||
{% extends "@FOSUser/layout.html.twig" %}
|
||||
|
||||
{% block fos_user_content %}
|
||||
{% include "@FOSUser/Group/list_content.html.twig" %}
|
||||
{% endblock fos_user_content %}
|
@ -0,0 +1,7 @@
|
||||
<div class="fos_user_group_list">
|
||||
<ul>
|
||||
{% for group in groups %}
|
||||
<li><a href="{{ path('fos_user_group_show', {'groupName': group.getName()} ) }}">{{ group.getName() }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
@ -0,0 +1,5 @@
|
||||
{% extends "@FOSUser/layout.html.twig" %}
|
||||
|
||||
{% block fos_user_content %}
|
||||
{% include "@FOSUser/Group/new_content.html.twig" %}
|
||||
{% endblock fos_user_content %}
|
@ -0,0 +1,8 @@
|
||||
{% trans_default_domain 'FOSUserBundle' %}
|
||||
|
||||
{{ form_start(form, { 'action': path('fos_user_group_new'), 'attr': { 'class': 'fos_user_group_new' } }) }}
|
||||
{{ form_widget(form) }}
|
||||
<div>
|
||||
<input type="submit" value="{{ 'group.new.submit'|trans }}" />
|
||||
</div>
|
||||
{{ form_end(form) }}
|
@ -0,0 +1,5 @@
|
||||
{% extends "@FOSUser/layout.html.twig" %}
|
||||
|
||||
{% block fos_user_content %}
|
||||
{% include "@FOSUser/Group/show_content.html.twig" %}
|
||||
{% endblock fos_user_content %}
|
@ -0,0 +1,5 @@
|
||||
{% trans_default_domain 'FOSUserBundle' %}
|
||||
|
||||
<div class="fos_user_group_show">
|
||||
<p>{{ 'group.show.name'|trans }}: {{ group.getName() }}</p>
|
||||
</div>
|
@ -0,0 +1,5 @@
|
||||
{% extends "@FOSUser/layout.html.twig" %}
|
||||
|
||||
{% block fos_user_content %}
|
||||
{% include "@FOSUser/Profile/edit_content.html.twig" %}
|
||||
{% endblock fos_user_content %}
|
@ -0,0 +1,8 @@
|
||||
{% trans_default_domain 'FOSUserBundle' %}
|
||||
|
||||
{{ form_start(form, { 'action': path('fos_user_profile_edit'), 'attr': { 'class': 'fos_user_profile_edit' } }) }}
|
||||
{{ form_widget(form) }}
|
||||
<div>
|
||||
<input type="submit" value="{{ 'profile.edit.submit'|trans }}" />
|
||||
</div>
|
||||
{{ form_end(form) }}
|
@ -0,0 +1,5 @@
|
||||
{% extends "@FOSUser/layout.html.twig" %}
|
||||
|
||||
{% block fos_user_content %}
|
||||
{% include "@FOSUser/Profile/show_content.html.twig" %}
|
||||
{% endblock fos_user_content %}
|
@ -0,0 +1,6 @@
|
||||
{% trans_default_domain 'FOSUserBundle' %}
|
||||
|
||||
<div class="fos_user_user_show">
|
||||
<p>{{ 'profile.show.username'|trans }}: {{ user.username }}</p>
|
||||
<p>{{ 'profile.show.email'|trans }}: {{ user.email }}</p>
|
||||
</div>
|
@ -0,0 +1,7 @@
|
||||
{% extends "@FOSUser/layout.html.twig" %}
|
||||
|
||||
{% trans_default_domain 'FOSUserBundle' %}
|
||||
|
||||
{% block fos_user_content %}
|
||||
<p>{{ 'registration.check_email'|trans({'%email%': user.email}) }}</p>
|
||||
{% endblock fos_user_content %}
|
@ -0,0 +1,10 @@
|
||||
{% extends "@FOSUser/layout.html.twig" %}
|
||||
|
||||
{% trans_default_domain 'FOSUserBundle' %}
|
||||
|
||||
{% block fos_user_content %}
|
||||
<p>{{ 'registration.confirmed'|trans({'%username%': user.username}) }}</p>
|
||||
{% if targetUrl %}
|
||||
<p><a href="{{ targetUrl }}">{{ 'registration.back'|trans }}</a></p>
|
||||
{% endif %}
|
||||
{% endblock fos_user_content %}
|
@ -0,0 +1,13 @@
|
||||
{% trans_default_domain 'FOSUserBundle' %}
|
||||
{% block subject %}
|
||||
{%- autoescape false -%}
|
||||
{{ 'registration.email.subject'|trans({'%username%': user.username, '%confirmationUrl%': confirmationUrl}) }}
|
||||
{%- endautoescape -%}
|
||||
{% endblock %}
|
||||
|
||||
{% block body_text %}
|
||||
{% autoescape false %}
|
||||
{{ 'registration.email.message'|trans({'%username%': user.username, '%confirmationUrl%': confirmationUrl}) }}
|
||||
{% endautoescape %}
|
||||
{% endblock %}
|
||||
{% block body_html %}{% endblock %}
|
@ -0,0 +1,5 @@
|
||||
{% extends "@FOSUser/layout.html.twig" %}
|
||||
|
||||
{% block fos_user_content %}
|
||||
{% include "@FOSUser/Registration/register_content.html.twig" %}
|
||||
{% endblock fos_user_content %}
|
@ -0,0 +1,8 @@
|
||||
{% trans_default_domain 'FOSUserBundle' %}
|
||||
|
||||
{{ form_start(form, {'method': 'post', 'action': path('fos_user_registration_register'), 'attr': {'class': 'fos_user_registration_register'}}) }}
|
||||
{{ form_widget(form) }}
|
||||
<div>
|
||||
<input type="submit" value="{{ 'registration.submit'|trans }}" />
|
||||
</div>
|
||||
{{ form_end(form) }}
|
@ -0,0 +1,9 @@
|
||||
{% extends "@FOSUser/layout.html.twig" %}
|
||||
|
||||
{% trans_default_domain 'FOSUserBundle' %}
|
||||
|
||||
{% block fos_user_content %}
|
||||
<p>
|
||||
{{ 'resetting.check_email'|trans({'%tokenLifetime%': tokenLifetime})|nl2br }}
|
||||
</p>
|
||||
{% endblock %}
|
@ -0,0 +1,13 @@
|
||||
{% trans_default_domain 'FOSUserBundle' %}
|
||||
{% block subject %}
|
||||
{%- autoescape false -%}
|
||||
{{ 'resetting.email.subject'|trans({'%username%': user.username}) }}
|
||||
{%- endautoescape -%}
|
||||
{% endblock %}
|
||||
|
||||
{% block body_text %}
|
||||
{% autoescape false %}
|
||||
{{ 'resetting.email.message'|trans({'%username%': user.username, '%confirmationUrl%': confirmationUrl}) }}
|
||||
{% endautoescape %}
|
||||
{% endblock %}
|
||||
{% block body_html %}{% endblock %}
|
@ -0,0 +1,5 @@
|
||||
{% extends "@FOSUser/layout.html.twig" %}
|
||||
|
||||
{% block fos_user_content %}
|
||||
{% include "@FOSUser/Resetting/request_content.html.twig" %}
|
||||
{% endblock fos_user_content %}
|
@ -0,0 +1,11 @@
|
||||
{% trans_default_domain 'FOSUserBundle' %}
|
||||
|
||||
<form action="{{ path('fos_user_resetting_send_email') }}" method="POST" class="fos_user_resetting_request">
|
||||
<div>
|
||||
<label for="username">{{ 'resetting.request.username'|trans }}</label>
|
||||
<input type="text" id="username" name="username" required="required" />
|
||||
</div>
|
||||
<div>
|
||||
<input type="submit" value="{{ 'resetting.request.submit'|trans }}" />
|
||||
</div>
|
||||
</form>
|
@ -0,0 +1,5 @@
|
||||
{% extends "@FOSUser/layout.html.twig" %}
|
||||
|
||||
{% block fos_user_content %}
|
||||
{% include "@FOSUser/Resetting/reset_content.html.twig" %}
|
||||
{% endblock fos_user_content %}
|
@ -0,0 +1,8 @@
|
||||
{% trans_default_domain 'FOSUserBundle' %}
|
||||
|
||||
{{ form_start(form, { 'action': path('fos_user_resetting_reset', {'token': token}), 'attr': { 'class': 'fos_user_resetting_reset' } }) }}
|
||||
{{ form_widget(form) }}
|
||||
<div>
|
||||
<input type="submit" value="{{ 'resetting.reset.submit'|trans }}" />
|
||||
</div>
|
||||
{{ form_end(form) }}
|
@ -0,0 +1,10 @@
|
||||
{% extends "@FOSUser/layout.html.twig" %}
|
||||
{% block title %}
|
||||
{% trans %}login{% endtrans %}
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
<h1>
|
||||
{% trans %}login{% endtrans %}
|
||||
</h1>
|
||||
{{ include('@FOSUser/Security/login_content.html.twig') }}
|
||||
{% endblock %}
|
@ -0,0 +1,27 @@
|
||||
{% trans_default_domain 'FOSUserBundle' %}
|
||||
{% if error %}
|
||||
{% include "frames/structure/message/message.html.twig" with {'message':error.messageKey|trans(error.messageData, 'security'),'label':'danger'} %}
|
||||
{% endif %}
|
||||
|
||||
<form action="{{ path("fos_user_security_check") }}" method="post">
|
||||
{% if csrf_token %}
|
||||
<input type="hidden" name="_csrf_token" value="{{ csrf_token }}" />
|
||||
{% endif %}
|
||||
<div class="form-group">
|
||||
<label for="username">{{ 'security.login.username'|trans }}</label> <input
|
||||
type="text" id="username" name="_username"
|
||||
value="{{ last_username }}" required="required" class="form-control"
|
||||
autocomplete="username" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="password">{{ 'security.login.password'|trans }}</label> <input
|
||||
type="password" id="password" name="_password" class="form-control" required="required"
|
||||
autocomplete="current-password" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input type="checkbox" id="remember_me" name="_remember_me" value="on" />
|
||||
<label for="remember_me">{{ 'security.login.remember_me'|trans }}</label>
|
||||
</div>
|
||||
<input type="submit" id="_submit" name="_submit"
|
||||
value="{{ 'security.login.submit'|trans }}" class="btn btn-primary"/>
|
||||
</form>
|
@ -0,0 +1,28 @@
|
||||
|
||||
{% extends "frames/default.html.twig" %}
|
||||
{% block content %}
|
||||
<div>
|
||||
{% if is_granted("IS_AUTHENTICATED_REMEMBERED") %}
|
||||
{{ 'layout.logged_in_as'|trans({'%username%': app.user.username}, 'FOSUserBundle') }}
|
||||
| <a href="{{ path('fos_user_security_logout') }}"> {{ 'layout.logout'|trans({}, 'FOSUserBundle') }}
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="{{ path('fos_user_security_login') }}">{{ 'layout.login'|trans({}, 'FOSUserBundle') }}</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% if app.request.hasPreviousSession %}
|
||||
{% for type, messages in app.session.flashbag.all() %}
|
||||
{% for message in messages %}
|
||||
<div class="flash-{{ type }}">
|
||||
{{ message }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
<div>
|
||||
{% block fos_user_content %}
|
||||
{% endblock fos_user_content %}
|
||||
</div>
|
||||
{% endblock content %}
|
@ -63,7 +63,7 @@ class UserMenuSubscriber implements EventSubscriberInterface
|
||||
]);
|
||||
} else {
|
||||
$dropdown->addChild('login', [
|
||||
'route' => 'login',
|
||||
'route' => 'fos_user_security_login',
|
||||
'attributes' => [
|
||||
'divider_append' => true,
|
||||
'icon' => 'fas fa-sign-in-alt'
|
||||
@ -71,7 +71,7 @@ class UserMenuSubscriber implements EventSubscriberInterface
|
||||
]);
|
||||
}
|
||||
$dropdown->addChild('register', [
|
||||
'route' => 'user_register',
|
||||
'route' => 'fos_user_registration_register',
|
||||
'attributes' => [
|
||||
'icon' => 'fas fa-file-signature'
|
||||
]
|
||||
|
@ -80,6 +80,9 @@
|
||||
"fig/link-util": {
|
||||
"version": "1.0.0"
|
||||
},
|
||||
"friendsofsymfony/user-bundle": {
|
||||
"version": "v2.1.2"
|
||||
},
|
||||
"jdorn/sql-formatter": {
|
||||
"version": "v1.2.17"
|
||||
},
|
||||
@ -395,6 +398,9 @@
|
||||
"ref": "3db029c03e452b4a23f7fc45cec7c922c2247eb8"
|
||||
}
|
||||
},
|
||||
"symfony/templating": {
|
||||
"version": "v4.1.4"
|
||||
},
|
||||
"symfony/test-pack": {
|
||||
"version": "v1.0.2"
|
||||
},
|
||||
|
@ -1,8 +1,5 @@
|
||||
{% set icons = {'success':'fas fa-check-circle','danger':'fas fa-times','warning':'fas fa-exclamation-triangle','info':'fas fa-info'} %}
|
||||
{% for label,messages in app.flashes %}
|
||||
{% for message in messages %}
|
||||
<div class="alert alert-{{ label }}">
|
||||
<i class="{{ icons[label] }}"></i> {{ message }}
|
||||
</div>
|
||||
{% include "frames/structure/message/message.html.twig" with {'message':message,'label':label} %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
@ -0,0 +1,4 @@
|
||||
{% set icons = {'success':'fas fa-check-circle','danger':'fas fa-times','warning':'fas fa-exclamation-triangle','info':'fas fa-info'} %}
|
||||
<div class="alert alert-{{ label }}">
|
||||
<i class="{{ icons[label] }}"></i> {{ message }}
|
||||
</div>
|
@ -1,25 +0,0 @@
|
||||
{% extends "frames/default.html.twig" %}
|
||||
{% block title %}
|
||||
{% trans %}login{% endtrans %}
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
<h1>
|
||||
{% trans %}login{% endtrans %}
|
||||
</h1>
|
||||
<form action={{ path('login') }} method="post">
|
||||
<div class="form-group">
|
||||
<label for="username">{% trans %}Username{% endtrans %}</label> <input
|
||||
type="username" name="_username" class="form-control" id="username"
|
||||
aria-describedby="usernameHelp"
|
||||
placeholder="{% trans %}Enter username{% endtrans %}'">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="password">{% trans %}Password{% endtrans %}</label> <input
|
||||
type="password" name="_password" class="form-control" id="password"
|
||||
placeholder="{% trans %}Password{% endtrans %}">
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">
|
||||
{% trans %}Submit{% endtrans %}
|
||||
</button>
|
||||
</form>
|
||||
{% endblock %}
|
Loading…
Reference in New Issue
Block a user