-
Notifications
You must be signed in to change notification settings - Fork 6
/
FacebookAuthenticator.php
57 lines (45 loc) · 1023 Bytes
/
FacebookAuthenticator.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
class FacebookAuthenticator
{
/** @var UserModel */
private $userModel;
public function __construct(UserModel $userModel)
{
$this->userModel = $userModel;
}
/**
* @param array $fbUser
* @return \Nette\Security\Identity
*/
public function authenticate(array $fbUser)
{
$user = $this->userModel->findUser(array('mail' => $fbUser['email']));
if ($user) {
$this->updateMissingData($user, $fbUser);
} else {
$user = $this->register($fbUser);
}
return $this->userModel->createIdentity($user);
}
public function register(array $me)
{
$this->userModel->registerUser(array(
'mail' => $me['email'],
'fbuid' => $me['id'],
'name' => $me['name'],
));
}
public function updateMissingData($user, array $me)
{
$updateData = array();
if (empty($user['name'])) {
$updateData['name'] = $me['name'];
}
if (empty($user['fbuid'])) {
$updateData['fbuid'] = $me['id'];
}
if (!empty($updateData)) {
$this->userModel->updateUser($user, $updateData);
}
}
}