Espace membres avec symfony 4.2

13 views
Skip to first unread message

inform...@gmail.com

unread,
Apr 25, 2019, 4:41:03 PM4/25/19
to Association Francophone des Utilisateurs de Symfony
Bonjour,

Je sais pas comment procéder dans la multitude de docs de symfony.
Voici ce que j'ai fait:
J'ai crée un système de création de factures. Tout le monde peut créer et voir les factures de tout le monde. 
Voici ce que je veux faire:
J'aimerais que les utilisateurs puissent se connecte et voir uniquement que les factures qu'ils ont crée.

Comment procéder sur symfony 4.2 ?

Voici la partie controleur FactureController.php qui permet de lister toutes les factures :
/**
     * @Route("/", name="facture_index", methods={"GET"})
     */
    public function index(FactureRepository $factureRepository): Response
    {
        return $this->render('facture/index.html.twig', [
            'factures' => $factureRepository->findAll(),
        ]);
    }


Voici mon entité User.php
<?php

namespace App\Entity;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Validator\Constraints as Assert;


/**
 * @ORM\Entity(repositoryClass="App\Repository\UserRepository")
 */
class User implements UserInterface
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=255)
     */
    private $email;

    /**
     * @ORM\Column(type="string", length=255)
     */
    private $password;

    /**
 * @ORM\Column(type="json")
 */
 private $roles = [];

    /**
     * @Assert\NotBlank()
     * @Assert\Length(max=4096)
     */
    private $plainPassword;

    /**
     * @ORM\OneToMany(targetEntity=Facture::class, cascade={"persist", "remove"}, mappedBy="user")
     */
    private $facture;

    public function __construct()
    {
        $this->factures = new ArrayCollection();
    }


    public function getId(): ?int
    {
        return $this->id;
    }

    public function getEmail(): ?string
    {
        return $this->email;
    }

    public function setEmail(string $email): self
    {
        $this->email = $email;

        return $this;
    }

    public function getPassword(): ?string
    {
        return $this->password;
    }

    public function setPassword(string $password): self
    {
        $this->password = $password;

        return $this;
    }

    public function getPlainPassword()
    {
        return $this->plainPassword;
    }

    public function setPlainPassword($password)
    {
        $this->plainPassword = $password;
    }

    public function getUsername()
    {
        return $this->email;
    }

    public function getSalt()
    {
        return null;
    }

    // La méthode getPassword() est déjà implémentée
    //public function getPassword()
    //{
    //    return $this->password;
    //}

    public function getRoles()
    {
      $roles = $this->roles;
      // guarantee every user at least has ROLE_USER
      $roles[] = 'ROLE_USER';

      return array_unique($roles);
    }

    public function eraseCredentials()
    {
    }

    public function getFacture(): ?string
    {
        return $this->facture;
    }

    public function setFacture(string $facture): self
    {
        $this->facture = $facture;

        return $this;
    }


    public function addFacture(Facture $facture)
    {
        $this->factures->add($facture);
        $facture->setUser($this);
    }

}




Merci de votre aide !

Sidi LEKHALIFA

unread,
Apr 25, 2019, 4:44:24 PM4/25/19
to asso...@googlegroups.com
Bonjour, 
Vous dites tout le monde peux voir les factures de tout le monde ensuite vous dites un utilisateur peux voir que c’est facture qu’il a crée ! 

--
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes "Association Francophone des Utilisateurs de Symfony".
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse asso-afsy+...@googlegroups.com.
Pour obtenir davantage d'options, consultez la page https://groups.google.com/d/optout.

philippe GODOT

unread,
Apr 26, 2019, 5:12:30 AM4/26/19
to asso...@googlegroups.com

en effet pas très claire la demande.

quoiqu'il en soit dans ce cas j'ajoute un champ createdBy dans l'entité invoice qui stocke l'id de l'utilisateur ayant ajouté la facture.

Il suffit ensuite de limiter la recherche grâce à ce champ.

-- 
philippe GODOT

probeSys
9 rue de chamrousse
38000 GRENOBLE
Tél : 09 74 76 47 86
Fax : 09 74 76 33 31
site web : http://www.probesys.com

philippe GODOT

unread,
Apr 26, 2019, 5:13:38 AM4/26/19
to asso...@googlegroups.com

et pour cela remplacer la méthode findAll par un findBy ou construire sa propre requête dans un repository

Le 25/04/2019 à 22:44, Sidi LEKHALIFA a écrit :

Victor Brillant Mory Jinabo

unread,
Apr 29, 2019, 7:37:28 AM4/29/19
to asso...@googlegroups.com
Salut tout le monde,
J'ai une question, y t'il un bundle sur symfony 4 pour gérer les paiements en ligne comme Paypal, visa ?

Merci
Reply all
Reply to author
Forward
0 new messages