working user authentication w/ fb and plain login
This commit is contained in:
@@ -24,18 +24,13 @@ security:
|
|||||||
|
|
||||||
oauth_user_provider:
|
oauth_user_provider:
|
||||||
service: my.custom.user_provider
|
service: my.custom.user_provider
|
||||||
logout:
|
|
||||||
path: /logout
|
|
||||||
target: /
|
|
||||||
main:
|
|
||||||
pattern: ^/
|
|
||||||
form_login:
|
form_login:
|
||||||
provider: fos_userbundle
|
provider: fos_userbundle
|
||||||
csrf_token_generator: security.csrf.token_manager
|
csrf_token_generator: security.csrf.token_manager
|
||||||
default_target_path: /
|
default_target_path: /
|
||||||
|
logout:
|
||||||
logout: true
|
path: /logout
|
||||||
anonymous: true
|
target: /
|
||||||
|
|
||||||
access_control:
|
access_control:
|
||||||
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
|
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
|
||||||
|
|||||||
@@ -13,7 +13,8 @@
|
|||||||
"howler": "^2.0.1",
|
"howler": "^2.0.1",
|
||||||
"js-base64": "^2.1.9",
|
"js-base64": "^2.1.9",
|
||||||
"react": "^15.3.2",
|
"react": "^15.3.2",
|
||||||
"react-dom": "^15.3.2"
|
"react-dom": "^15.3.2",
|
||||||
|
"webpack": "^1.13.3"
|
||||||
},
|
},
|
||||||
"devDependencies": {},
|
"devDependencies": {},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -28,6 +28,20 @@ class User extends BaseUser
|
|||||||
|
|
||||||
private $facebookAccessToken;
|
private $facebookAccessToken;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string
|
||||||
|
*
|
||||||
|
* @ORM\Column(name="real_name", type="string", length=255, nullable=true)
|
||||||
|
*/
|
||||||
|
private $realName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string
|
||||||
|
*
|
||||||
|
* @ORM\Column(name="nick_name", type="string", length=255, nullable=true)
|
||||||
|
*/
|
||||||
|
private $nickName;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
@@ -75,4 +89,52 @@ class User extends BaseUser
|
|||||||
{
|
{
|
||||||
return $this->facebookAccessToken;
|
return $this->facebookAccessToken;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set realName
|
||||||
|
*
|
||||||
|
* @param string $realName
|
||||||
|
*
|
||||||
|
* @return User
|
||||||
|
*/
|
||||||
|
public function setRealName($realName)
|
||||||
|
{
|
||||||
|
$this->realName = $realName;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get realName
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getRealName()
|
||||||
|
{
|
||||||
|
return $this->realName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set nickName
|
||||||
|
*
|
||||||
|
* @param string $nickName
|
||||||
|
*
|
||||||
|
* @return User
|
||||||
|
*/
|
||||||
|
public function setNickName($nickName)
|
||||||
|
{
|
||||||
|
$this->nickName = $nickName;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get nickName
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getNickName()
|
||||||
|
{
|
||||||
|
return $this->nickName;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,6 +28,20 @@ class User extends BaseUser
|
|||||||
|
|
||||||
private $facebookAccessToken;
|
private $facebookAccessToken;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string
|
||||||
|
*
|
||||||
|
* @ORM\Column(name="real_name", type="string", length=255, nullable=true)
|
||||||
|
*/
|
||||||
|
private $realName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string
|
||||||
|
*
|
||||||
|
* @ORM\Column(name="nick_name", type="string", length=255, nullable=true)
|
||||||
|
*/
|
||||||
|
private $nickName;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
@@ -56,4 +70,71 @@ class User extends BaseUser
|
|||||||
{
|
{
|
||||||
return $this->facebookId;
|
return $this->facebookId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $facebookAccessToken
|
||||||
|
* @return User
|
||||||
|
*/
|
||||||
|
public function setFacebookAccessToken($facebookAccessToken)
|
||||||
|
{
|
||||||
|
$this->facebookAccessToken = $facebookAccessToken;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getFacebookAccessToken()
|
||||||
|
{
|
||||||
|
return $this->facebookAccessToken;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set realName
|
||||||
|
*
|
||||||
|
* @param string $realName
|
||||||
|
*
|
||||||
|
* @return User
|
||||||
|
*/
|
||||||
|
public function setRealName($realName)
|
||||||
|
{
|
||||||
|
$this->realName = $realName;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get realName
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getRealName()
|
||||||
|
{
|
||||||
|
return $this->realName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set nickName
|
||||||
|
*
|
||||||
|
* @param string $nickName
|
||||||
|
*
|
||||||
|
* @return User
|
||||||
|
*/
|
||||||
|
public function setNickName($nickName)
|
||||||
|
{
|
||||||
|
$this->nickName = $nickName;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get nickName
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getNickName()
|
||||||
|
{
|
||||||
|
return $this->nickName;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ hwi_oauth:
|
|||||||
type: facebook
|
type: facebook
|
||||||
client_id: 320599508311862
|
client_id: 320599508311862
|
||||||
client_secret: 18d4f48cdd274bccee2678e5eff3f557
|
client_secret: 18d4f48cdd274bccee2678e5eff3f557
|
||||||
scope: ""
|
scope: "public_profile,email"
|
||||||
options:
|
options:
|
||||||
display: popup
|
display: popup
|
||||||
auth_type: rerequest
|
auth_type: rerequest
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
# HWIOAuthBundle routes
|
||||||
hwi_oauth_redirect:
|
hwi_oauth_redirect:
|
||||||
resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"
|
resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"
|
||||||
prefix: /connect
|
prefix: /connect
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
services:
|
services:
|
||||||
my.custom.user_provider:
|
my.custom.user_provider:
|
||||||
class: Jotunheimr\UserBundle\Security\Core\User\MyFOSUBUserProvider
|
class: Jotunheimr\UserBundle\Security\Core\User\MyFOSUBUserProvider
|
||||||
arguments: ['@fos_user.user_manager', { facebook: facebookId }]
|
arguments: ['@fos_user.user_manager', { facebook: facebookId }, '@doctrine.orm.entity_manager']
|
||||||
|
|||||||
@@ -10,7 +10,6 @@
|
|||||||
xfbml : true,
|
xfbml : true,
|
||||||
version : 'v2.8'
|
version : 'v2.8'
|
||||||
});
|
});
|
||||||
FB.AppEvents.logPageView();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
(function(d, s, id){
|
(function(d, s, id){
|
||||||
@@ -24,16 +23,11 @@
|
|||||||
function fb_login() {
|
function fb_login() {
|
||||||
FB.getLoginStatus(function(response) {
|
FB.getLoginStatus(function(response) {
|
||||||
if (response.status === 'connected') {
|
if (response.status === 'connected') {
|
||||||
// connected
|
|
||||||
alert('Already connected, redirect to login page to create token.');
|
|
||||||
document.location = "{{ url("hwi_oauth_service_redirect", {service: "facebook"}) }}";
|
document.location = "{{ url("hwi_oauth_service_redirect", {service: "facebook"}) }}";
|
||||||
} else {
|
} else {
|
||||||
// not_authorized
|
|
||||||
FB.login(function(response) {
|
FB.login(function(response) {
|
||||||
if (response.authResponse) {
|
if (response.authResponse) {
|
||||||
document.location = "{{ url("hwi_oauth_service_redirect", {service: "facebook"}) }}";
|
document.location = "{{ url("hwi_oauth_service_redirect", {service: "facebook"}) }}";
|
||||||
} else {
|
|
||||||
alert('Cancelled.');
|
|
||||||
}
|
}
|
||||||
}, {scope: 'email'});
|
}, {scope: 'email'});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
namespace Jotunheimr\UserBundle\Security\Core\User;
|
namespace Jotunheimr\UserBundle\Security\Core\User;
|
||||||
|
|
||||||
|
use Doctrine\ORM\EntityManager;
|
||||||
|
use FOS\UserBundle\Model\UserManagerInterface;
|
||||||
use HWI\Bundle\OAuthBundle\OAuth\Response\UserResponseInterface;
|
use HWI\Bundle\OAuthBundle\OAuth\Response\UserResponseInterface;
|
||||||
use HWI\Bundle\OAuthBundle\Security\Core\User\FOSUBUserProvider as BaseFOSUBProvider;
|
use HWI\Bundle\OAuthBundle\Security\Core\User\FOSUBUserProvider as BaseFOSUBProvider;
|
||||||
use Jotunheimr\UserBundle\Entity\User;
|
use Jotunheimr\UserBundle\Entity\User;
|
||||||
@@ -9,6 +11,15 @@ use Symfony\Component\Security\Core\User\UserInterface;
|
|||||||
|
|
||||||
class MyFOSUBUserProvider extends BaseFOSUBProvider
|
class MyFOSUBUserProvider extends BaseFOSUBProvider
|
||||||
{
|
{
|
||||||
|
/** @var EntityManager */
|
||||||
|
private $em;
|
||||||
|
|
||||||
|
public function __construct(UserManagerInterface $userManager, array $properties, EntityManager $em)
|
||||||
|
{
|
||||||
|
parent::__construct($userManager, $properties);
|
||||||
|
$this->em = $em;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
@@ -35,9 +46,19 @@ class MyFOSUBUserProvider extends BaseFOSUBProvider
|
|||||||
$user = $this->userManager->findUserByEmail($userEmail);
|
$user = $this->userManager->findUserByEmail($userEmail);
|
||||||
|
|
||||||
if (null === $user) {
|
if (null === $user) {
|
||||||
$username = $response->getRealName();
|
|
||||||
$user = new User();
|
$user = new User();
|
||||||
$user->setUsername($username);
|
|
||||||
|
$user->setFacebookId($response->getUsername());
|
||||||
|
$user->setEmail($response->getEmail());
|
||||||
|
$user->setEmailCanonical($response->getEmail());
|
||||||
|
$user->setUsername($response->getUsername());
|
||||||
|
$user->setRealName($response->getRealName());
|
||||||
|
$user->setNickName($response->getNickname());
|
||||||
|
$user->setPassword('social-user');
|
||||||
|
$user->setEnabled(true);
|
||||||
|
|
||||||
|
$this->em->persist($user);
|
||||||
|
$this->em->flush();
|
||||||
|
|
||||||
return $user;
|
return $user;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ gos_web_socket:
|
|||||||
resources:
|
resources:
|
||||||
- "@MineSeekerBundle/Resources/config/pubsub/routing.yml"
|
- "@MineSeekerBundle/Resources/config/pubsub/routing.yml"
|
||||||
client:
|
client:
|
||||||
firewall: main
|
firewall: secured_area
|
||||||
session_handler: "@session.handler.pdo"
|
session_handler: "@session.handler.pdo"
|
||||||
storage:
|
storage:
|
||||||
driver: "@gos_web_socket.client_storage.driver.predis"
|
driver: "@gos_web_socket.client_storage.driver.predis"
|
||||||
|
|||||||
Reference in New Issue
Block a user