diff options
author | Thomas Citharel <tcit@tcit.fr> | 2017-01-31 21:13:33 +0100 |
---|---|---|
committer | Thomas Citharel <tcit@tcit.fr> | 2017-06-23 09:26:41 +0200 |
commit | 2041810adbc6e663e4520337805c0003c77762e2 (patch) | |
tree | 1715a1e57a0275efe0970807c65f424def897034 /src/Wallabag/UserBundle/Entity | |
parent | b115623e2c536bcfd59760347f22b4d70e1d0661 (diff) | |
download | wallabag-2041810adbc6e663e4520337805c0003c77762e2.tar.gz wallabag-2041810adbc6e663e4520337805c0003c77762e2.tar.zst wallabag-2041810adbc6e663e4520337805c0003c77762e2.zip |
WIP
Diffstat (limited to 'src/Wallabag/UserBundle/Entity')
-rw-r--r-- | src/Wallabag/UserBundle/Entity/User.php | 73 |
1 files changed, 64 insertions, 9 deletions
diff --git a/src/Wallabag/UserBundle/Entity/User.php b/src/Wallabag/UserBundle/Entity/User.php index ff658ca5..2b73e344 100644 --- a/src/Wallabag/UserBundle/Entity/User.php +++ b/src/Wallabag/UserBundle/Entity/User.php | |||
@@ -15,6 +15,8 @@ use Symfony\Component\Security\Core\User\UserInterface; | |||
15 | use Wallabag\ApiBundle\Entity\Client; | 15 | use Wallabag\ApiBundle\Entity\Client; |
16 | use Wallabag\CoreBundle\Entity\Config; | 16 | use Wallabag\CoreBundle\Entity\Config; |
17 | use Wallabag\CoreBundle\Entity\Entry; | 17 | use Wallabag\CoreBundle\Entity\Entry; |
18 | use Wallabag\GroupBundle\Entity\Group; | ||
19 | use Wallabag\GroupBundle\Entity\UserGroup; | ||
18 | 20 | ||
19 | /** | 21 | /** |
20 | * User. | 22 | * User. |
@@ -98,13 +100,11 @@ class User extends BaseUser implements TwoFactorInterface, TrustedComputerInterf | |||
98 | private $authCode; | 100 | private $authCode; |
99 | 101 | ||
100 | /** | 102 | /** |
101 | * @ORM\ManyToMany(targetEntity="Wallabag\GroupBundle\Entity\Group", inversedBy="users", cascade={"persist"}) | 103 | * @var ArrayCollection |
102 | * @ORM\JoinTable(name="user_group", | 104 | * |
103 | * joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")}, | 105 | * @ORM\OneToMany(targetEntity="Wallabag\GroupBundle\Entity\UserGroup", mappedBy="user", cascade={"persist", "remove"}) |
104 | * inverseJoinColumns={@ORM\JoinColumn(name="group_id", referencedColumnName="id")} | ||
105 | * ) | ||
106 | */ | 106 | */ |
107 | protected $groups; | 107 | protected $userGroups; |
108 | 108 | ||
109 | /** | 109 | /** |
110 | * @var bool Enabled yes/no | 110 | * @var bool Enabled yes/no |
@@ -136,6 +136,7 @@ class User extends BaseUser implements TwoFactorInterface, TrustedComputerInterf | |||
136 | { | 136 | { |
137 | parent::__construct(); | 137 | parent::__construct(); |
138 | $this->entries = new ArrayCollection(); | 138 | $this->entries = new ArrayCollection(); |
139 | $this->userGroups = new ArrayCollection(); | ||
139 | $this->roles = ['ROLE_USER']; | 140 | $this->roles = ['ROLE_USER']; |
140 | } | 141 | } |
141 | 142 | ||
@@ -323,11 +324,65 @@ class User extends BaseUser implements TwoFactorInterface, TrustedComputerInterf | |||
323 | } | 324 | } |
324 | 325 | ||
325 | /** | 326 | /** |
326 | * @param string $name | 327 | * @param Group $group |
328 | * @return UserGroup | ||
329 | */ | ||
330 | public function getUserGroupFromGroup(Group $group) | ||
331 | { | ||
332 | foreach ($this->userGroups as $userGroup) { | ||
333 | if ($userGroup->getGroup() == $group) { | ||
334 | return $userGroup; | ||
335 | } | ||
336 | } | ||
337 | return null; | ||
338 | } | ||
339 | |||
340 | |||
341 | /** | ||
342 | * @param Group $group | ||
343 | * @param $role | ||
344 | */ | ||
345 | public function setGroupRole(Group $group, $role) | ||
346 | { | ||
347 | if ($userGroup = $this->getUserGroupFromGroup($group)) { | ||
348 | $userGroup->setRole($role); | ||
349 | } | ||
350 | } | ||
351 | |||
352 | /** | ||
353 | * @param Group $group | ||
354 | * @return int | ||
355 | */ | ||
356 | public function getGroupRoleForUser(Group $group) | ||
357 | { | ||
358 | if ($userGroup = $this->getUserGroupFromGroup($group)) { | ||
359 | return $userGroup->getRole(); | ||
360 | } | ||
361 | return 0; | ||
362 | } | ||
363 | |||
364 | /** | ||
365 | * @param Group $group | ||
327 | * @return bool | 366 | * @return bool |
328 | */ | 367 | */ |
329 | public function hasGroup($name = '') | 368 | public function inGroup(Group $group) |
330 | { | 369 | { |
331 | return in_array($name, $this->getGroupNames()); | 370 | if ($group::ACCESS_REQUEST === $group->getAcceptSystem()) { |
371 | $userGroup = $this->getUserGroupFromGroup($group); | ||
372 | return $userGroup->isAccepted(); | ||
373 | } | ||
374 | return null !== $this->getUserGroupFromGroup($group); | ||
375 | } | ||
376 | |||
377 | /** | ||
378 | * @return ArrayCollection<Group> | ||
379 | */ | ||
380 | public function getGroups() | ||
381 | { | ||
382 | $groups = new ArrayCollection(); | ||
383 | foreach ($this->userGroups as $userGroup) { | ||
384 | $groups->add($userGroup->getGroup()); | ||
385 | } | ||
386 | return $groups; | ||
332 | } | 387 | } |
333 | } | 388 | } |