Implementation of common authentication logic
- Use composer
Add parameters to app/config/parameters.yml.dist
parameters:
google_app_id: something.apps.googleusercontent.comgoogle_app_secret: your_secretgoogle_app_domain: yourdomain.comgoogle_app_users: user1,user2You may add parameters to env-map:
"google_app_id": "GOOGLE_APP_ID",
"google_app_secret": "GOOGLE_APP_SECRET",
"google_app_domain": "GOOGLE_APP_DOMAIN",
"google_app_users": "GOOGLE_APP_USERS",
Install
composer require playtini/auth-bundle- Add PlaytiniAuthBundle and KnpUOAuth2ClientBundle to
app/AppKernel.php
// app/AppKernel.phpnew \KnpU\OAuth2ClientBundle\KnpUOAuth2ClientBundle(),
new \Playtini\Bundle\AuthBundle\PlaytiniAuthBundle()- Set
app/config/security.yml
security:
encoders:
Symfony\Component\Security\Core\User\User:
algorithm: bcrypt# http://symfony.com/doc/current/book/security.html#where-do-users-come-from-user-providersproviders:
database_users:
entity: { class: 'Playtini\Bundle\AuthBundle\Entity\User', property: username }api_key_user_provider:
id: playtini.auth.security.api_key_user_providerfirewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/security: falseapi:
pattern: ^/api/(?!key\.json)stateless: truesimple_preauth:
authenticator: playtini.auth.security.api_key_authenticatorprovider: api_key_user_providermain:
pattern: ^/logout: trueanonymous: trueguard:
authenticators:
- playtini.auth.security.google_authenticatorentry_point: playtini.auth.security.google_authenticatorremember_me:
secret: "%secret%"lifetime: 31536000# 365 days in secondspath: /domain: ~ # Defaults to the current domain from $_SERVER#always_remember_me: trueaccess_control:
- { path: ^/login/, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: ROLE_USER }- Enable AuthBundle routing. Add to
app/config/routing.yml
playtini_auth:
resource: "@PlaytiniAuthBundle/Resources/config/routing/routing.yml"- Update your database schema