aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Wallabag/UserBundle/Entity/User.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/Wallabag/UserBundle/Entity/User.php')
-rw-r--r--src/Wallabag/UserBundle/Entity/User.php73
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;
15use Wallabag\ApiBundle\Entity\Client; 15use Wallabag\ApiBundle\Entity\Client;
16use Wallabag\CoreBundle\Entity\Config; 16use Wallabag\CoreBundle\Entity\Config;
17use Wallabag\CoreBundle\Entity\Entry; 17use Wallabag\CoreBundle\Entity\Entry;
18use Wallabag\GroupBundle\Entity\Group;
19use 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}