Private
Public Access
1
0

working user authentication w/ fb and plain login

This commit is contained in:
2016-11-04 20:57:34 +01:00
parent 88144ebaa4
commit ada68b9100
10 changed files with 175 additions and 20 deletions

View File

@@ -24,18 +24,13 @@ security:
oauth_user_provider:
service: my.custom.user_provider
logout:
path: /logout
target: /
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
default_target_path: /
logout: true
anonymous: true
logout:
path: /logout
target: /
access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }

View File

@@ -13,7 +13,8 @@
"howler": "^2.0.1",
"js-base64": "^2.1.9",
"react": "^15.3.2",
"react-dom": "^15.3.2"
"react-dom": "^15.3.2",
"webpack": "^1.13.3"
},
"devDependencies": {},
"scripts": {

View File

@@ -28,6 +28,20 @@ class User extends BaseUser
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()
{
parent::__construct();
@@ -75,4 +89,52 @@ class User extends BaseUser
{
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;
}
}

View File

@@ -28,6 +28,20 @@ class User extends BaseUser
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()
{
parent::__construct();
@@ -56,4 +70,71 @@ class User extends BaseUser
{
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;
}
}

View File

@@ -15,7 +15,7 @@ hwi_oauth:
type: facebook
client_id: 320599508311862
client_secret: 18d4f48cdd274bccee2678e5eff3f557
scope: ""
scope: "public_profile,email"
options:
display: popup
auth_type: rerequest

View File

@@ -1,3 +1,4 @@
# HWIOAuthBundle routes
hwi_oauth_redirect:
resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"
prefix: /connect

View File

@@ -1,4 +1,4 @@
services:
my.custom.user_provider:
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']

View File

@@ -10,7 +10,6 @@
xfbml : true,
version : 'v2.8'
});
FB.AppEvents.logPageView();
};
(function(d, s, id){
@@ -24,16 +23,11 @@
function fb_login() {
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
// connected
alert('Already connected, redirect to login page to create token.');
document.location = "{{ url("hwi_oauth_service_redirect", {service: "facebook"}) }}";
} else {
// not_authorized
FB.login(function(response) {
if (response.authResponse) {
document.location = "{{ url("hwi_oauth_service_redirect", {service: "facebook"}) }}";
} else {
alert('Cancelled.');
}
}, {scope: 'email'});
}

View File

@@ -2,6 +2,8 @@
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\Security\Core\User\FOSUBUserProvider as BaseFOSUBProvider;
use Jotunheimr\UserBundle\Entity\User;
@@ -9,6 +11,15 @@ use Symfony\Component\Security\Core\User\UserInterface;
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}
*/
@@ -35,9 +46,19 @@ class MyFOSUBUserProvider extends BaseFOSUBProvider
$user = $this->userManager->findUserByEmail($userEmail);
if (null === $user) {
$username = $response->getRealName();
$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;
}

View File

@@ -37,7 +37,7 @@ gos_web_socket:
resources:
- "@MineSeekerBundle/Resources/config/pubsub/routing.yml"
client:
firewall: main
firewall: secured_area
session_handler: "@session.handler.pdo"
storage:
driver: "@gos_web_socket.client_storage.driver.predis"