Skip to content

shield-wall/simple-authenticator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Simple authenticator

It's a simple symfony authenticator, for you be able to log in just with email.

Install

composer req shield-w4ll/simple-authenticator

Note We relly recommend use this package in dev environment only.

Configuration

#config/packages/shield_wall.yaml
when@dev:
  simple_authenticator:
    route:
      redirect_success: 'profile_edit'
      redirect_failure: 'app_login'

  security:
    firewalls:
      main:
        custom_authenticators:
          - ShieldWall\SimpleAuthenticator\Security\EmailAuthenticator
#config/routes/shield_wall.yaml
simple_authenticator_login:
  prefix: ^/
  path: /simple_authenticator/login
#config/service.yaml
ShieldWall\SimpleAuthenticator\Security\EmailAuthenticator:
        arguments:
            - '@Symfony\Component\Routing\Generator\UrlGeneratorInterface'
            - '@App\Repository\UserRepository'
            - '%shield_wall.simple_authenticator.route.redirect_success%'
            - '%shield_wall.simple_authenticator.route.redirect_failure%'
//YourController.php
public function yourAction()
{
        $simpleAuthenticatorForm = $this->createForm(SimpleAuthenticatorType::class, null, [
            'action' => $this->generateUrl('simple_authenticator_login'),
        ]);
        $simpleAuthenticatorFromView = $simpleAuthenticatorForm->createView();

        return $this->render('your_template.html.twig', [
            'simpleAuthenticatorFrom' => $simpleAuthenticatorFromView,
        ]);
}

//your_file.html.twig
{{ form(simpleAuthenticatorFrom) }}

Repository

//src/Repository/UserRepository.php
class UserRepository extends ServiceEntityRepository implements EmailRepositoryInterface
{
    public function findOneByEmail(string $email): UserInterface
    {
        return $this->findOneBy(['email' => $email]);
    }
}

TODO

  • need to see someway to get the route name from controller simple_authenticator_login
  • import route as resource
  • service should be declared automatically.