This commit is contained in:
mitsuha_s 2023-07-21 22:58:24 +03:00
parent 8bb77fbe6c
commit 21d651f377
2 changed files with 30 additions and 113 deletions

View file

@ -26,18 +26,18 @@ class PasteController extends AbstractController
$pasteData = $form->getData(); $pasteData = $form->getData();
$secret = null; $secret = null;
if ($pasteData->isPrivate()) { if ($pasteData->private) {
$secret = hash('sha1', random_bytes(25)); $secret = hash('sha1', random_bytes(25));
} }
$paste = new Paste( $paste = new Paste(
$pasteData->getText(), $pasteData->text,
$pasteData->getLanguage(), $pasteData->language,
$pasteData->getDescription(), $pasteData->description,
$pasteData->getFilename(), $pasteData->filename,
$pasteData->getAuthor(), $pasteData->author,
new \DateTimeImmutable(), new \DateTimeImmutable(),
$pasteData->getExpirationDate(), $pasteData->expirationDate,
$request->getClientIp(), $request->getClientIp(),
$secret $secret
); );
@ -52,10 +52,11 @@ class PasteController extends AbstractController
} }
#[Route('/{id}/{secret}')] #[Route('/{id}/{secret}')]
public function showPaste(PasteRepository $pasteRepository, Request $request, string $id, ?string $secret=NULL): Response public function showPaste(PasteRepository $pasteRepository, string $id, ?string $secret=NULL): Response
{ {
$paste = $pasteRepository->findOneBy(['id' => $id, 'secret' => $secret]); $paste = $pasteRepository->findOneBy(['id' => $id, 'secret' => $secret]);
$form = $this->createForm(PasteForm::class, $paste); $pasteData = new PasteFormData($paste);
$form = $this->createForm(PasteForm::class, $pasteData);
return $this->render('paste.html.twig', [ return $this->render('paste.html.twig', [
'form' => $form, 'form' => $form,

View file

@ -3,120 +3,36 @@ declare(strict_types = 1);
namespace App\DTO; namespace App\DTO;
use App\Entity\Paste;
use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Constraints as Assert;
class PasteFormData class PasteFormData
{ {
private int $id;
#[Assert\NotBlank] #[Assert\NotBlank]
private string $text; public string $text;
#[Assert\Type(\boolean::class)] #[Assert\Type(\boolean::class)]
private bool $private; public bool $private;
public ?string $language = null;
private ?string $language = null; public ?string $description = null;
public ?string $filename = null;
private ?string $description = null;
private ?string $filename = null;
#[Assert\NotBlank] #[Assert\NotBlank]
private string $author = 'anonymous'; public string $author = 'anonymous';
#[Assert\Type(\DateTimeImmutable::class)] #[Assert\Type(\DateTimeImmutable::class)]
private ?\DateTimeImmutable $expirationDate; public ?\DateTimeImmutable $expirationDate;
private ?string $secret; public function __construct(?Paste $paste=null)
public function getId(): int
{ {
return $this->id; if ($paste === null)
} {
return;
public function setId(int $id): void }
{ $this->text = $paste->text;
$this->id = $id; $this->private = $paste->secret !== null;
} $this->language = $paste->language;
$this->description = $paste->description;
public function getText(): string $this->filename = $paste->filename;
{ $this->author = $paste->author;
return $this->text; $this->expirationDate = $paste->expirationDate;
}
public function setText(string $text): void
{
$this->text = $text;
}
public function getLanguage(): ?string
{
return $this->language;
}
public function setLanguage(?string $language): void
{
$this->language = $language;
}
public function getDescription(): ?string
{
return $this->description;
}
public function setDescription(?string $description): void
{
$this->description = $description;
}
public function getFilename(): ?string
{
return $this->filename;
}
public function setFilename(?string $filename): void
{
$this->filename = $filename;
}
public function getAuthor(): string
{
return $this->author;
}
public function setAuthor(string $author): void
{
$this->author = $author;
}
public function getExpirationDate(): ?\DateTime
{
return $this->expirationDate;
}
public function setExpirationDate(?\DateTime $date): void
{
$this->expirationDate = $date;
}
public function getSecret(): ?string
{
return $this->secret;
}
public function setSecret(?string $secret): void
{
$this->secret = $secret;
}
public function isPrivate(): bool
{
return $this->private;
}
public function setPrivate(bool $private): void
{
$this->private = $private;
} }
} }