This commit is contained in:
Jeremy Benoist
2022-11-23 15:51:33 +01:00
parent af6363bbbd
commit b7dba18cb2
41 changed files with 285 additions and 950 deletions

View File

@ -23,7 +23,7 @@ class DeveloperController extends Controller
*/
public function indexAction()
{
$clients = $this->getDoctrine()->getRepository(Client::class)->findByUser($this->getUser()->getId());
$clients = $this->get('doctrine')->getRepository(Client::class)->findByUser($this->getUser()->getId());
return $this->render('@WallabagCore/Developer/index.html.twig', [
'clients' => $clients,
@ -39,7 +39,7 @@ class DeveloperController extends Controller
*/
public function createClientAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$em = $this->get('doctrine')->getManager();
$client = new Client($this->getUser());
$clientForm = $this->createForm(ClientType::class, $client);
$clientForm->handleRequest($request);
@ -79,7 +79,7 @@ class DeveloperController extends Controller
throw $this->createAccessDeniedException('You can not access this client.');
}
$em = $this->getDoctrine()->getManager();
$em = $this->get('doctrine')->getManager();
$em->remove($client);
$em->flush();

View File

@ -88,7 +88,7 @@ class EntryRestController extends WallabagRestController
public function getEntriesExistsAction(Request $request)
{
$this->validateAuthentication();
$repo = $this->getDoctrine()->getRepository(Entry::class);
$repo = $this->get('doctrine')->getRepository(Entry::class);
$returnId = (null === $request->query->get('return_id')) ? false : (bool) $request->query->get('return_id');
@ -464,7 +464,7 @@ class EntryRestController extends WallabagRestController
// entry deleted, dispatch event about it!
$this->get(EventDispatcherInterface::class)->dispatch(EntryDeletedEvent::NAME, new EntryDeletedEvent($entry));
$em = $this->getDoctrine()->getManager();
$em = $this->get('doctrine')->getManager();
$em->remove($entry);
$em->flush();
}
@ -532,7 +532,7 @@ class EntryRestController extends WallabagRestController
$this->get(ContentProxy::class)->updateEntry($entry, $url);
}
$em = $this->getDoctrine()->getManager();
$em = $this->get('doctrine')->getManager();
$em->persist($entry);
$em->flush();
@ -755,7 +755,7 @@ class EntryRestController extends WallabagRestController
$this->get(ContentProxy::class)->setDefaultEntryTitle($entry);
}
$em = $this->getDoctrine()->getManager();
$em = $this->get('doctrine')->getManager();
$em->persist($entry);
$em->flush();
@ -971,7 +971,7 @@ class EntryRestController extends WallabagRestController
$this->get(ContentProxy::class)->setDefaultEntryTitle($entry);
}
$em = $this->getDoctrine()->getManager();
$em = $this->get('doctrine')->getManager();
$em->persist($entry);
$em->flush();
@ -1027,7 +1027,7 @@ class EntryRestController extends WallabagRestController
return new JsonResponse([], 304);
}
$em = $this->getDoctrine()->getManager();
$em = $this->get('doctrine')->getManager();
$em->persist($entry);
$em->flush();
@ -1085,7 +1085,7 @@ class EntryRestController extends WallabagRestController
// entry deleted, dispatch event about it!
$this->get(EventDispatcherInterface::class)->dispatch(EntryDeletedEvent::NAME, new EntryDeletedEvent($entry));
$em = $this->getDoctrine()->getManager();
$em = $this->get('doctrine')->getManager();
$em->remove($entry);
$em->flush();
@ -1168,7 +1168,7 @@ class EntryRestController extends WallabagRestController
$this->get(TagsAssigner::class)->assignTagsToEntry($entry, $tags);
}
$em = $this->getDoctrine()->getManager();
$em = $this->get('doctrine')->getManager();
$em->persist($entry);
$em->flush();
@ -1213,7 +1213,7 @@ class EntryRestController extends WallabagRestController
$this->validateUserAccess($entry->getUser()->getId());
$entry->removeTag($tag);
$em = $this->getDoctrine()->getManager();
$em = $this->get('doctrine')->getManager();
$em->persist($entry);
$em->flush();
@ -1272,7 +1272,7 @@ class EntryRestController extends WallabagRestController
foreach ($tags as $label) {
$label = trim($label);
$tag = $this->getDoctrine()
$tag = $this->get('doctrine')
->getRepository(Tag::class)
->findOneByLabel($label);
@ -1281,7 +1281,7 @@ class EntryRestController extends WallabagRestController
}
}
$em = $this->getDoctrine()->getManager();
$em = $this->get('doctrine')->getManager();
$em->persist($entry);
$em->flush();
}
@ -1340,7 +1340,7 @@ class EntryRestController extends WallabagRestController
if (false !== $entry && !(empty($tags))) {
$this->get(TagsAssigner::class)->assignTagsToEntry($entry, $tags);
$em = $this->getDoctrine()->getManager();
$em = $this->get('doctrine')->getManager();
$em->persist($entry);
$em->flush();
}

View File

@ -33,7 +33,7 @@ class TagRestController extends WallabagRestController
{
$this->validateAuthentication();
$tags = $this->getDoctrine()
$tags = $this->get('doctrine')
->getRepository(Tag::class)
->findAllFlatTagsWithNbEntries($this->getUser()->getId());
@ -71,7 +71,7 @@ class TagRestController extends WallabagRestController
$this->validateAuthentication();
$label = $request->get('tag', '');
$tags = $this->getDoctrine()->getRepository(Tag::class)->findByLabelsAndUser([$label], $this->getUser()->getId());
$tags = $this->get('doctrine')->getRepository(Tag::class)->findByLabelsAndUser([$label], $this->getUser()->getId());
if (empty($tags)) {
throw $this->createNotFoundException('Tag not found');
@ -79,7 +79,7 @@ class TagRestController extends WallabagRestController
$tag = $tags[0];
$this->getDoctrine()
$this->get('doctrine')
->getRepository(Entry::class)
->removeTag($this->getUser()->getId(), $tag);
@ -122,13 +122,13 @@ class TagRestController extends WallabagRestController
$tagsLabels = $request->get('tags', '');
$tags = $this->getDoctrine()->getRepository(Tag::class)->findByLabelsAndUser(explode(',', $tagsLabels), $this->getUser()->getId());
$tags = $this->get('doctrine')->getRepository(Tag::class)->findByLabelsAndUser(explode(',', $tagsLabels), $this->getUser()->getId());
if (empty($tags)) {
throw $this->createNotFoundException('Tags not found');
}
$this->getDoctrine()
$this->get('doctrine')
->getRepository(Entry::class)
->removeTags($this->getUser()->getId(), $tags);
@ -167,13 +167,13 @@ class TagRestController extends WallabagRestController
{
$this->validateAuthentication();
$tagFromDb = $this->getDoctrine()->getRepository(Tag::class)->findByLabelsAndUser([$tag->getLabel()], $this->getUser()->getId());
$tagFromDb = $this->get('doctrine')->getRepository(Tag::class)->findByLabelsAndUser([$tag->getLabel()], $this->getUser()->getId());
if (empty($tagFromDb)) {
throw $this->createNotFoundException('Tag not found');
}
$this->getDoctrine()
$this->get('doctrine')
->getRepository(Entry::class)
->removeTag($this->getUser()->getId(), $tag);
@ -195,7 +195,7 @@ class TagRestController extends WallabagRestController
$tags = [$tags];
}
$em = $this->getDoctrine()->getManager();
$em = $this->get('doctrine')->getManager();
foreach ($tags as $tag) {
if (0 === \count($tag->getEntries())) {

View File

@ -102,6 +102,7 @@ class UserRestController extends WallabagRestController
$userManager = $this->get(UserManagerInterface::class);
$user = $userManager->createUser();
\assert($user instanceof User);
// user will be disabled BY DEFAULT to avoid spamming account to be enabled
$user->setEnabled(false);
@ -150,7 +151,7 @@ class UserRestController extends WallabagRestController
$client = new Client($user);
$client->setName($request->request->get('client_name', 'Default client'));
$this->getDoctrine()->getManager()->persist($client);
$this->get('doctrine')->getManager()->persist($client);
$user->addClient($client);

View File

@ -12,6 +12,7 @@ use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
use Wallabag\UserBundle\Entity\User;
class WallabagRestController extends AbstractFOSRestController
{
@ -84,6 +85,7 @@ class WallabagRestController extends AbstractFOSRestController
protected function validateUserAccess($requestUserId)
{
$user = $this->get(TokenStorageInterface::class)->getToken()->getUser();
\assert($user instanceof User);
if ($requestUserId !== $user->getId()) {
throw $this->createAccessDeniedException('Access forbidden. Entry user id: ' . $requestUserId . ', logged user id: ' . $user->getId());
}

View File

@ -4,6 +4,8 @@ namespace Wallabag\ApiBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use FOS\OAuthServerBundle\Entity\AccessToken as BaseAccessToken;
use FOS\OAuthServerBundle\Model\ClientInterface;
use FOS\UserBundle\Model\UserInterface;
/**
* @ORM\Table("oauth2_access_tokens")
@ -37,12 +39,16 @@ class AccessToken extends BaseAccessToken
/**
* @ORM\ManyToOne(targetEntity="Client", inversedBy="accessTokens")
* @ORM\JoinColumn(nullable=false)
*
* @var ClientInterface
*/
protected $client;
/**
* @ORM\ManyToOne(targetEntity="Wallabag\UserBundle\Entity\User")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE")
*
* @var UserInterface
*/
protected $user;
}

View File

@ -4,6 +4,8 @@ namespace Wallabag\ApiBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use FOS\OAuthServerBundle\Entity\AuthCode as BaseAuthCode;
use FOS\OAuthServerBundle\Model\ClientInterface;
use FOS\UserBundle\Model\UserInterface;
/**
* @ORM\Table("oauth2_auth_codes")
@ -37,12 +39,16 @@ class AuthCode extends BaseAuthCode
/**
* @ORM\ManyToOne(targetEntity="Client")
* @ORM\JoinColumn(nullable=false)
*
* @var ClientInterface
*/
protected $client;
/**
* @ORM\ManyToOne(targetEntity="Wallabag\UserBundle\Entity\User")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE")
*
* @var UserInterface
*/
protected $user;
}

View File

@ -4,6 +4,8 @@ namespace Wallabag\ApiBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use FOS\OAuthServerBundle\Entity\RefreshToken as BaseRefreshToken;
use FOS\OAuthServerBundle\Model\ClientInterface;
use FOS\UserBundle\Model\UserInterface;
/**
* @ORM\Table("oauth2_refresh_tokens")
@ -37,12 +39,16 @@ class RefreshToken extends BaseRefreshToken
/**
* @ORM\ManyToOne(targetEntity="Client", inversedBy="refreshTokens")
* @ORM\JoinColumn(nullable=false)
*
* @var ClientInterface
*/
protected $client;
/**
* @ORM\ManyToOne(targetEntity="Wallabag\UserBundle\Entity\User")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE")
*
* @var UserInterface
*/
protected $user;
}

View File

@ -6,6 +6,9 @@ use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
use Wallabag\ApiBundle\Entity\Client;
/**
* @method Client[] findByUser(int $userId)
*/
class ClientRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)