Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
controle file type and fix validation message error #3622
  • Loading branch information
numew authored and hmeneuvrier committed Feb 13, 2025
commit c2ba0fabdaaa54a2044cbff694aaf31d047d24ea
7 changes: 6 additions & 1 deletion src/Controller/Api/SignalementFileUpdateController.php
Original file line number Diff line number Diff line change
Expand Up @@ -95,9 +95,14 @@ public function __invoke(
}
$this->denyAccessUnlessGranted('FILE_EDIT', $file);

$file->setDocumentType(DocumentType::tryFrom($fileRequest->documentType));
$documentType = DocumentType::tryFrom($fileRequest->documentType);
if (File::FILE_TYPE_PHOTO === $file->getFileType()) {
if (isset(DocumentType::getOrderedPhotosList()[$documentType->name])) {
$file->setDocumentType($documentType);
}
$file->setDescription($fileRequest->description);
} else {
$file->setDocumentType($documentType);
}
$this->entityManager->flush();

Expand Down
2 changes: 1 addition & 1 deletion src/Dto/Api/Request/FilesUploadRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class FilesUploadRequest implements RequestInterface
maxSize: '10M',
mimeTypes: File::DOCUMENT_MIME_TYPES,
maxSizeMessage: 'Le fichier ne doit pas dépasser 10 Mo.',
mimeTypesMessage: 'Seuls les fichiers {{mimeTypes}} sont autorisés.'
mimeTypesMessage: 'Seuls les fichiers {{ types }} sont autorisés.'
),
])]
#[Assert\Count(
Expand Down
3 changes: 2 additions & 1 deletion src/Entity/File.php
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,8 @@ public function isPartnerFile(): ?bool
&& ($this->uploadedBy->isSuperAdmin()
|| $this->uploadedBy->isTerritoryAdmin()
|| $this->uploadedBy->isPartnerAdmin()
|| $this->uploadedBy->isUserPartner());
|| $this->uploadedBy->isUserPartner()
|| $this->uploadedBy->isApiUser());
}

public function getSignalement(): ?Signalement
Expand Down
5 changes: 5 additions & 0 deletions src/Entity/User.php
Original file line number Diff line number Diff line change
Expand Up @@ -618,6 +618,11 @@ public function isUserPartner(): bool
return \in_array(self::ROLE_USER_PARTNER, $this->getRoles());
}

public function isApiUser(): bool
{
return \in_array(self::ROLE_API_USER, $this->getRoles());
}

public function isUsager(): bool
{
return \in_array(self::ROLE_USAGER, $this->getRoles());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public function testUpdateSignalementFile(): void
})->current();

$payload = [
'documentType' => 'PROCEDURE_ARRETE_PREFECTORAL',
'documentType' => 'PHOTO_SITUATION',
'description' => 'lorem ipsum dolor sit amet',
];
$this->client->request(
Expand All @@ -48,6 +48,29 @@ public function testUpdateSignalementFile(): void
$this->assertEquals($payload['documentType'], $response['documentType']);
}

public function testUpdateSignalementFileWithIncorrectType(): void
{
$signalement = self::getContainer()->get(SignalementRepository::class)->find(1);
$file = $signalement->getFiles()->filter(function (File $file) {
return 'photo' === $file->getFileType();
})->current();

$payload = [
'documentType' => 'PROCEDURE_ARRETE_PREFECTORAL',
'description' => 'lorem ipsum dolor sit amet',
];
$this->client->request(
method: 'PATCH',
uri: $this->router->generate('api_signalements_files_patch', ['uuid' => $file->getUuid()]),
server: ['CONTENT_TYPE' => 'application/json'],
content: json_encode($payload)
);

$response = json_decode($this->client->getResponse()->getContent(), true);
$this->assertResponseIsSuccessful();
$this->assertEquals('AUTRE', $response['documentType']);
}

public function testUpdateSignalementFileWithFileNotFound(): void
{
$payload = [
Expand Down
Loading