diff options
author | Jeremy Benoist <j0k3r@users.noreply.github.com> | 2015-10-15 13:52:52 +0200 |
---|---|---|
committer | Jeremy Benoist <j0k3r@users.noreply.github.com> | 2015-10-15 13:52:52 +0200 |
commit | 3d3ed955f11006a408c6596eb9151a0afb28e721 (patch) | |
tree | b5bb52afec86a76d39bcca1fb907f4b2d8d5ba82 /src/Wallabag/UserBundle/Entity | |
parent | f6af634aecfa08cc925352610968a20f19b94bd8 (diff) | |
parent | e9b395ec4b27bdcc4151292836ecc602f21c57a4 (diff) | |
download | wallabag-3d3ed955f11006a408c6596eb9151a0afb28e721.tar.gz wallabag-3d3ed955f11006a408c6596eb9151a0afb28e721.tar.zst wallabag-3d3ed955f11006a408c6596eb9151a0afb28e721.zip |
Merge pull request #1484 from wallabag/v2-2factor-auth
2factor authentication via email
Diffstat (limited to 'src/Wallabag/UserBundle/Entity')
-rw-r--r-- | src/Wallabag/UserBundle/Entity/User.php | 68 |
1 files changed, 67 insertions, 1 deletions
diff --git a/src/Wallabag/UserBundle/Entity/User.php b/src/Wallabag/UserBundle/Entity/User.php index 8f02e070..d2efd200 100644 --- a/src/Wallabag/UserBundle/Entity/User.php +++ b/src/Wallabag/UserBundle/Entity/User.php | |||
@@ -4,6 +4,8 @@ namespace Wallabag\UserBundle\Entity; | |||
4 | 4 | ||
5 | use Doctrine\Common\Collections\ArrayCollection; | 5 | use Doctrine\Common\Collections\ArrayCollection; |
6 | use Doctrine\ORM\Mapping as ORM; | 6 | use Doctrine\ORM\Mapping as ORM; |
7 | use Scheb\TwoFactorBundle\Model\Email\TwoFactorInterface; | ||
8 | use Scheb\TwoFactorBundle\Model\TrustedComputerInterface; | ||
7 | use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; | 9 | use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; |
8 | use Symfony\Component\Security\Core\User\UserInterface; | 10 | use Symfony\Component\Security\Core\User\UserInterface; |
9 | use JMS\Serializer\Annotation\ExclusionPolicy; | 11 | use JMS\Serializer\Annotation\ExclusionPolicy; |
@@ -24,7 +26,7 @@ use Wallabag\CoreBundle\Entity\Tag; | |||
24 | * @UniqueEntity("email") | 26 | * @UniqueEntity("email") |
25 | * @UniqueEntity("username") | 27 | * @UniqueEntity("username") |
26 | */ | 28 | */ |
27 | class User extends BaseUser | 29 | class User extends BaseUser implements TwoFactorInterface, TrustedComputerInterface |
28 | { | 30 | { |
29 | /** | 31 | /** |
30 | * @var int | 32 | * @var int |
@@ -72,6 +74,22 @@ class User extends BaseUser | |||
72 | */ | 74 | */ |
73 | protected $tags; | 75 | protected $tags; |
74 | 76 | ||
77 | /** | ||
78 | * @ORM\Column(type="integer", nullable=true) | ||
79 | */ | ||
80 | private $authCode; | ||
81 | |||
82 | /** | ||
83 | * @var bool Enabled yes/no | ||
84 | * @ORM\Column(type="boolean") | ||
85 | */ | ||
86 | private $twoFactorAuthentication = false; | ||
87 | |||
88 | /** | ||
89 | * @ORM\Column(type="json_array", nullable=true) | ||
90 | */ | ||
91 | private $trusted; | ||
92 | |||
75 | public function __construct() | 93 | public function __construct() |
76 | { | 94 | { |
77 | parent::__construct(); | 95 | parent::__construct(); |
@@ -201,4 +219,52 @@ class User extends BaseUser | |||
201 | { | 219 | { |
202 | return $this->config; | 220 | return $this->config; |
203 | } | 221 | } |
222 | |||
223 | /** | ||
224 | * @return bool | ||
225 | */ | ||
226 | public function isTwoFactorAuthentication() | ||
227 | { | ||
228 | return $this->twoFactorAuthentication; | ||
229 | } | ||
230 | |||
231 | /** | ||
232 | * @param bool $twoFactorAuthentication | ||
233 | */ | ||
234 | public function setTwoFactorAuthentication($twoFactorAuthentication) | ||
235 | { | ||
236 | $this->twoFactorAuthentication = $twoFactorAuthentication; | ||
237 | } | ||
238 | |||
239 | public function isEmailAuthEnabled() | ||
240 | { | ||
241 | return $this->twoFactorAuthentication; | ||
242 | } | ||
243 | |||
244 | public function getEmailAuthCode() | ||
245 | { | ||
246 | return $this->authCode; | ||
247 | } | ||
248 | |||
249 | public function setEmailAuthCode($authCode) | ||
250 | { | ||
251 | $this->authCode = $authCode; | ||
252 | } | ||
253 | |||
254 | public function addTrustedComputer($token, \DateTime $validUntil) | ||
255 | { | ||
256 | $this->trusted[$token] = $validUntil->format('r'); | ||
257 | } | ||
258 | |||
259 | public function isTrustedComputer($token) | ||
260 | { | ||
261 | if (isset($this->trusted[$token])) { | ||
262 | $now = new \DateTime(); | ||
263 | $validUntil = new \DateTime($this->trusted[$token]); | ||
264 | |||
265 | return $now < $validUntil; | ||
266 | } | ||
267 | |||
268 | return false; | ||
269 | } | ||
204 | } | 270 | } |