mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2025-06-21 01:25:55 +02:00
Add proper length constraint validations to all string mapped ORM fields, so they show a nice validation error, instead of a 500 error
Fixes issue #544
This commit is contained in:
parent
113e5b3bcd
commit
dc7c13479c
17 changed files with 43 additions and 0 deletions
|
@ -148,6 +148,7 @@ abstract class Attachment extends AbstractNamedDBElement
|
||||||
*/
|
*/
|
||||||
#[ORM\Column(type: Types::STRING, nullable: true)]
|
#[ORM\Column(type: Types::STRING, nullable: true)]
|
||||||
#[Groups(['full', 'attachment:read'])]
|
#[Groups(['full', 'attachment:read'])]
|
||||||
|
#[Assert\Length(max: 255)]
|
||||||
protected ?string $original_filename = null;
|
protected ?string $original_filename = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -50,6 +50,7 @@ abstract class AbstractCompany extends AbstractPartsContainingDBElement
|
||||||
*/
|
*/
|
||||||
#[Groups(['full', 'company:read', 'company:write'])]
|
#[Groups(['full', 'company:read', 'company:write'])]
|
||||||
#[ORM\Column(type: Types::STRING)]
|
#[ORM\Column(type: Types::STRING)]
|
||||||
|
#[Assert\Length(max: 255)]
|
||||||
protected string $address = '';
|
protected string $address = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -57,6 +58,7 @@ abstract class AbstractCompany extends AbstractPartsContainingDBElement
|
||||||
*/
|
*/
|
||||||
#[Groups(['full', 'company:read', 'company:write'])]
|
#[Groups(['full', 'company:read', 'company:write'])]
|
||||||
#[ORM\Column(type: Types::STRING)]
|
#[ORM\Column(type: Types::STRING)]
|
||||||
|
#[Assert\Length(max: 255)]
|
||||||
protected string $phone_number = '';
|
protected string $phone_number = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -64,6 +66,7 @@ abstract class AbstractCompany extends AbstractPartsContainingDBElement
|
||||||
*/
|
*/
|
||||||
#[Groups(['full', 'company:read', 'company:write'])]
|
#[Groups(['full', 'company:read', 'company:write'])]
|
||||||
#[ORM\Column(type: Types::STRING)]
|
#[ORM\Column(type: Types::STRING)]
|
||||||
|
#[Assert\Length(max: 255)]
|
||||||
protected string $fax_number = '';
|
protected string $fax_number = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -72,6 +75,7 @@ abstract class AbstractCompany extends AbstractPartsContainingDBElement
|
||||||
#[Assert\Email]
|
#[Assert\Email]
|
||||||
#[Groups(['full', 'company:read', 'company:write'])]
|
#[Groups(['full', 'company:read', 'company:write'])]
|
||||||
#[ORM\Column(type: Types::STRING)]
|
#[ORM\Column(type: Types::STRING)]
|
||||||
|
#[Assert\Length(max: 255)]
|
||||||
protected string $email_address = '';
|
protected string $email_address = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -80,6 +84,7 @@ abstract class AbstractCompany extends AbstractPartsContainingDBElement
|
||||||
#[Assert\Url]
|
#[Assert\Url]
|
||||||
#[Groups(['full', 'company:read', 'company:write'])]
|
#[Groups(['full', 'company:read', 'company:write'])]
|
||||||
#[ORM\Column(type: Types::STRING)]
|
#[ORM\Column(type: Types::STRING)]
|
||||||
|
#[Assert\Length(max: 255)]
|
||||||
protected string $website = '';
|
protected string $website = '';
|
||||||
|
|
||||||
#[Groups(['company:read', 'company:write'])]
|
#[Groups(['company:read', 'company:write'])]
|
||||||
|
@ -89,6 +94,7 @@ abstract class AbstractCompany extends AbstractPartsContainingDBElement
|
||||||
* @var string The link to the website of an article. Use %PARTNUMBER% as placeholder for the part number.
|
* @var string The link to the website of an article. Use %PARTNUMBER% as placeholder for the part number.
|
||||||
*/
|
*/
|
||||||
#[ORM\Column(type: Types::STRING)]
|
#[ORM\Column(type: Types::STRING)]
|
||||||
|
#[Assert\Length(max: 255)]
|
||||||
protected string $auto_product_url = '';
|
protected string $auto_product_url = '';
|
||||||
|
|
||||||
/********************************************************************************
|
/********************************************************************************
|
||||||
|
|
|
@ -45,6 +45,7 @@ abstract class AbstractNamedDBElement extends AbstractDBElement implements Named
|
||||||
#[Assert\NotBlank]
|
#[Assert\NotBlank]
|
||||||
#[Groups(['simple', 'extended', 'full', 'import', 'api:basic:read', 'api:basic:write'])]
|
#[Groups(['simple', 'extended', 'full', 'import', 'api:basic:read', 'api:basic:write'])]
|
||||||
#[ORM\Column(type: Types::STRING)]
|
#[ORM\Column(type: Types::STRING)]
|
||||||
|
#[Assert\Length(max: 255)]
|
||||||
protected string $name = '';
|
protected string $name = '';
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
|
|
|
@ -27,6 +27,7 @@ use Doctrine\DBAL\Types\Types;
|
||||||
use Doctrine\ORM\Mapping\Column;
|
use Doctrine\ORM\Mapping\Column;
|
||||||
use Doctrine\ORM\Mapping\Embeddable;
|
use Doctrine\ORM\Mapping\Embeddable;
|
||||||
use Symfony\Component\Serializer\Annotation\Groups;
|
use Symfony\Component\Serializer\Annotation\Groups;
|
||||||
|
use Symfony\Component\Validator\Constraints\Length;
|
||||||
|
|
||||||
#[Embeddable]
|
#[Embeddable]
|
||||||
class EDACategoryInfo
|
class EDACategoryInfo
|
||||||
|
@ -36,6 +37,7 @@ class EDACategoryInfo
|
||||||
*/
|
*/
|
||||||
#[Column(type: Types::STRING, nullable: true)]
|
#[Column(type: Types::STRING, nullable: true)]
|
||||||
#[Groups(['full', 'category:read', 'category:write'])]
|
#[Groups(['full', 'category:read', 'category:write'])]
|
||||||
|
#[Length(max: 255)]
|
||||||
private ?string $reference_prefix = null;
|
private ?string $reference_prefix = null;
|
||||||
|
|
||||||
/** @var bool|null Visibility of this part to EDA software in trinary logic. True=Visible, False=Invisible, Null=Auto */
|
/** @var bool|null Visibility of this part to EDA software in trinary logic. True=Visible, False=Invisible, Null=Auto */
|
||||||
|
@ -61,6 +63,7 @@ class EDACategoryInfo
|
||||||
/** @var string|null The KiCAD schematic symbol, which should be used (the path to the library) */
|
/** @var string|null The KiCAD schematic symbol, which should be used (the path to the library) */
|
||||||
#[Column(type: Types::STRING, nullable: true)]
|
#[Column(type: Types::STRING, nullable: true)]
|
||||||
#[Groups(['full', 'category:read', 'category:write'])]
|
#[Groups(['full', 'category:read', 'category:write'])]
|
||||||
|
#[Length(max: 255)]
|
||||||
private ?string $kicad_symbol = null;
|
private ?string $kicad_symbol = null;
|
||||||
|
|
||||||
public function getReferencePrefix(): ?string
|
public function getReferencePrefix(): ?string
|
||||||
|
|
|
@ -27,6 +27,7 @@ use Doctrine\DBAL\Types\Types;
|
||||||
use Doctrine\ORM\Mapping\Column;
|
use Doctrine\ORM\Mapping\Column;
|
||||||
use Doctrine\ORM\Mapping\Embeddable;
|
use Doctrine\ORM\Mapping\Embeddable;
|
||||||
use Symfony\Component\Serializer\Annotation\Groups;
|
use Symfony\Component\Serializer\Annotation\Groups;
|
||||||
|
use Symfony\Component\Validator\Constraints\Length;
|
||||||
|
|
||||||
#[Embeddable]
|
#[Embeddable]
|
||||||
class EDAFootprintInfo
|
class EDAFootprintInfo
|
||||||
|
@ -34,6 +35,7 @@ class EDAFootprintInfo
|
||||||
/** @var string|null The KiCAD footprint, which should be used (the path to the library) */
|
/** @var string|null The KiCAD footprint, which should be used (the path to the library) */
|
||||||
#[Column(type: Types::STRING, nullable: true)]
|
#[Column(type: Types::STRING, nullable: true)]
|
||||||
#[Groups(['full', 'footprint:read', 'footprint:write'])]
|
#[Groups(['full', 'footprint:read', 'footprint:write'])]
|
||||||
|
#[Length(max: 255)]
|
||||||
private ?string $kicad_footprint = null;
|
private ?string $kicad_footprint = null;
|
||||||
|
|
||||||
public function getKicadFootprint(): ?string
|
public function getKicadFootprint(): ?string
|
||||||
|
|
|
@ -27,6 +27,7 @@ use Doctrine\DBAL\Types\Types;
|
||||||
use Doctrine\ORM\Mapping\Column;
|
use Doctrine\ORM\Mapping\Column;
|
||||||
use Doctrine\ORM\Mapping\Embeddable;
|
use Doctrine\ORM\Mapping\Embeddable;
|
||||||
use Symfony\Component\Serializer\Annotation\Groups;
|
use Symfony\Component\Serializer\Annotation\Groups;
|
||||||
|
use Symfony\Component\Validator\Constraints\Length;
|
||||||
|
|
||||||
#[Embeddable]
|
#[Embeddable]
|
||||||
class EDAPartInfo
|
class EDAPartInfo
|
||||||
|
@ -36,11 +37,13 @@ class EDAPartInfo
|
||||||
*/
|
*/
|
||||||
#[Column(type: Types::STRING, nullable: true)]
|
#[Column(type: Types::STRING, nullable: true)]
|
||||||
#[Groups(['full', 'eda_info:read', 'eda_info:write'])]
|
#[Groups(['full', 'eda_info:read', 'eda_info:write'])]
|
||||||
|
#[Length(max: 255)]
|
||||||
private ?string $reference_prefix = null;
|
private ?string $reference_prefix = null;
|
||||||
|
|
||||||
/** @var string|null The value, which should be shown together with the part (e.g. 470 for a 470 Ohm resistor) */
|
/** @var string|null The value, which should be shown together with the part (e.g. 470 for a 470 Ohm resistor) */
|
||||||
#[Column(type: Types::STRING, nullable: true)]
|
#[Column(type: Types::STRING, nullable: true)]
|
||||||
#[Groups(['full', 'eda_info:read', 'eda_info:write'])]
|
#[Groups(['full', 'eda_info:read', 'eda_info:write'])]
|
||||||
|
#[Length(max: 255)]
|
||||||
private ?string $value = null;
|
private ?string $value = null;
|
||||||
|
|
||||||
/** @var bool|null Visibility of this part to EDA software in trinary logic. True=Visible, False=Invisible, Null=Auto */
|
/** @var bool|null Visibility of this part to EDA software in trinary logic. True=Visible, False=Invisible, Null=Auto */
|
||||||
|
@ -66,11 +69,13 @@ class EDAPartInfo
|
||||||
/** @var string|null The KiCAD schematic symbol, which should be used (the path to the library) */
|
/** @var string|null The KiCAD schematic symbol, which should be used (the path to the library) */
|
||||||
#[Column(type: Types::STRING, nullable: true)]
|
#[Column(type: Types::STRING, nullable: true)]
|
||||||
#[Groups(['full', 'eda_info:read', 'eda_info:write'])]
|
#[Groups(['full', 'eda_info:read', 'eda_info:write'])]
|
||||||
|
#[Length(max: 255)]
|
||||||
private ?string $kicad_symbol = null;
|
private ?string $kicad_symbol = null;
|
||||||
|
|
||||||
/** @var string|null The KiCAD footprint, which should be used (the path to the library) */
|
/** @var string|null The KiCAD footprint, which should be used (the path to the library) */
|
||||||
#[Column(type: Types::STRING, nullable: true)]
|
#[Column(type: Types::STRING, nullable: true)]
|
||||||
#[Groups(['full', 'eda_info:read', 'eda_info:write'])]
|
#[Groups(['full', 'eda_info:read', 'eda_info:write'])]
|
||||||
|
#[Length(max: 255)]
|
||||||
private ?string $kicad_footprint = null;
|
private ?string $kicad_footprint = null;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
|
|
|
@ -151,6 +151,7 @@ abstract class AbstractParameter extends AbstractNamedDBElement
|
||||||
*/
|
*/
|
||||||
#[Groups(['full', 'parameter:read', 'parameter:write'])]
|
#[Groups(['full', 'parameter:read', 'parameter:write'])]
|
||||||
#[ORM\Column(type: Types::STRING)]
|
#[ORM\Column(type: Types::STRING)]
|
||||||
|
#[Assert\Length(max: 50)]
|
||||||
protected string $unit = '';
|
protected string $unit = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -158,6 +159,7 @@ abstract class AbstractParameter extends AbstractNamedDBElement
|
||||||
*/
|
*/
|
||||||
#[Groups(['full', 'parameter:read', 'parameter:write'])]
|
#[Groups(['full', 'parameter:read', 'parameter:write'])]
|
||||||
#[ORM\Column(type: Types::STRING)]
|
#[ORM\Column(type: Types::STRING)]
|
||||||
|
#[Assert\Length(max: 255)]
|
||||||
protected string $value_text = '';
|
protected string $value_text = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -165,6 +167,7 @@ abstract class AbstractParameter extends AbstractNamedDBElement
|
||||||
*/
|
*/
|
||||||
#[Groups(['full', 'parameter:read', 'parameter:write'])]
|
#[Groups(['full', 'parameter:read', 'parameter:write'])]
|
||||||
#[ORM\Column(name: 'param_group', type: Types::STRING)]
|
#[ORM\Column(name: 'param_group', type: Types::STRING)]
|
||||||
|
#[Assert\Length(max: 255)]
|
||||||
protected string $group = '';
|
protected string $group = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -50,6 +50,7 @@ use Doctrine\ORM\Mapping as ORM;
|
||||||
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
|
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
|
||||||
use Symfony\Component\Serializer\Annotation\Groups;
|
use Symfony\Component\Serializer\Annotation\Groups;
|
||||||
use Symfony\Component\Validator\Constraints as Assert;
|
use Symfony\Component\Validator\Constraints as Assert;
|
||||||
|
use Symfony\Component\Validator\Constraints\Length;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This unit represents the unit in which the amount of parts in stock are measured.
|
* This unit represents the unit in which the amount of parts in stock are measured.
|
||||||
|
|
|
@ -44,6 +44,7 @@ use App\Entity\Base\TimestampTrait;
|
||||||
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
|
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
|
||||||
use Symfony\Component\Serializer\Annotation\Groups;
|
use Symfony\Component\Serializer\Annotation\Groups;
|
||||||
use Symfony\Component\Validator\Constraints as Assert;
|
use Symfony\Component\Validator\Constraints as Assert;
|
||||||
|
use Symfony\Component\Validator\Constraints\Length;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This entity describes a part association, which is a semantic connection between two parts.
|
* This entity describes a part association, which is a semantic connection between two parts.
|
||||||
|
@ -86,6 +87,7 @@ class PartAssociation extends AbstractDBElement implements TimeStampableInterfac
|
||||||
#[Assert\Expression("this.getType().value !== 0 or this.getOtherType() !== null",
|
#[Assert\Expression("this.getType().value !== 0 or this.getOtherType() !== null",
|
||||||
message: 'validator.part_association.must_set_an_value_if_type_is_other')]
|
message: 'validator.part_association.must_set_an_value_if_type_is_other')]
|
||||||
#[Groups(['part_assoc:read', 'part_assoc:write'])]
|
#[Groups(['part_assoc:read', 'part_assoc:write'])]
|
||||||
|
#[Length(max: 255)]
|
||||||
protected ?string $other_type = null;
|
protected ?string $other_type = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -51,6 +51,7 @@ use Exception;
|
||||||
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
|
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
|
||||||
use Symfony\Component\Serializer\Annotation\Groups;
|
use Symfony\Component\Serializer\Annotation\Groups;
|
||||||
use Symfony\Component\Validator\Constraints as Assert;
|
use Symfony\Component\Validator\Constraints as Assert;
|
||||||
|
use Symfony\Component\Validator\Constraints\Length;
|
||||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -165,6 +166,7 @@ class PartLot extends AbstractDBElement implements TimeStampableInterface, Named
|
||||||
*/
|
*/
|
||||||
#[ORM\Column(type: Types::STRING, nullable: true)]
|
#[ORM\Column(type: Types::STRING, nullable: true)]
|
||||||
#[Groups(['part_lot:read', 'part_lot:write'])]
|
#[Groups(['part_lot:read', 'part_lot:write'])]
|
||||||
|
#[Length(max: 255)]
|
||||||
protected ?string $vendor_barcode = null;
|
protected ?string $vendor_barcode = null;
|
||||||
|
|
||||||
public function __clone()
|
public function __clone()
|
||||||
|
|
|
@ -28,6 +28,7 @@ use App\Entity\Parts\Part;
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
use Symfony\Component\Serializer\Annotation\Groups;
|
use Symfony\Component\Serializer\Annotation\Groups;
|
||||||
use Symfony\Component\Validator\Constraints as Assert;
|
use Symfony\Component\Validator\Constraints as Assert;
|
||||||
|
use Symfony\Component\Validator\Constraints\Length;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Advanced properties of a part, not related to a more specific group.
|
* Advanced properties of a part, not related to a more specific group.
|
||||||
|
@ -62,6 +63,7 @@ trait AdvancedPropertyTrait
|
||||||
#[Assert\Length(max: 100)]
|
#[Assert\Length(max: 100)]
|
||||||
#[Groups(['extended', 'full', 'import', 'part:read', 'part:write'])]
|
#[Groups(['extended', 'full', 'import', 'part:read', 'part:write'])]
|
||||||
#[ORM\Column(type: Types::STRING, length: 100, unique: true, nullable: true)]
|
#[ORM\Column(type: Types::STRING, length: 100, unique: true, nullable: true)]
|
||||||
|
#[Length(max: 100)]
|
||||||
protected ?string $ipn = null;
|
protected ?string $ipn = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -30,6 +30,7 @@ use App\Validator\Constraints\Selectable;
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
use Symfony\Component\Serializer\Annotation\Groups;
|
use Symfony\Component\Serializer\Annotation\Groups;
|
||||||
use Symfony\Component\Validator\Constraints as Assert;
|
use Symfony\Component\Validator\Constraints as Assert;
|
||||||
|
use Symfony\Component\Validator\Constraints\Length;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* In this trait all manufacturer related properties of a part are collected (like MPN, manufacturer URL).
|
* In this trait all manufacturer related properties of a part are collected (like MPN, manufacturer URL).
|
||||||
|
@ -58,6 +59,7 @@ trait ManufacturerTrait
|
||||||
*/
|
*/
|
||||||
#[Groups(['extended', 'full', 'import', 'part:read', 'part:write'])]
|
#[Groups(['extended', 'full', 'import', 'part:read', 'part:write'])]
|
||||||
#[ORM\Column(type: Types::STRING)]
|
#[ORM\Column(type: Types::STRING)]
|
||||||
|
#[Length(max: 255)]
|
||||||
protected string $manufacturer_product_number = '';
|
protected string $manufacturer_product_number = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -52,6 +52,7 @@ use Doctrine\ORM\Mapping as ORM;
|
||||||
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
|
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
|
||||||
use Symfony\Component\Serializer\Annotation\Groups;
|
use Symfony\Component\Serializer\Annotation\Groups;
|
||||||
use Symfony\Component\Validator\Constraints as Assert;
|
use Symfony\Component\Validator\Constraints as Assert;
|
||||||
|
use Symfony\Component\Validator\Constraints\Length;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Orderdetail.
|
* Class Orderdetail.
|
||||||
|
@ -106,6 +107,7 @@ class Orderdetail extends AbstractDBElement implements TimeStampableInterface, N
|
||||||
*/
|
*/
|
||||||
#[Groups(['extended', 'full', 'import', 'orderdetail:read', 'orderdetail:write'])]
|
#[Groups(['extended', 'full', 'import', 'orderdetail:read', 'orderdetail:write'])]
|
||||||
#[ORM\Column(type: Types::STRING)]
|
#[ORM\Column(type: Types::STRING)]
|
||||||
|
#[Length(max: 255)]
|
||||||
protected string $supplierpartnr = '';
|
protected string $supplierpartnr = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -36,6 +36,7 @@ use Doctrine\DBAL\Types\Types;
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
|
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
|
||||||
use Symfony\Component\Serializer\Annotation\Groups;
|
use Symfony\Component\Serializer\Annotation\Groups;
|
||||||
|
use Symfony\Component\Validator\Constraints\Length;
|
||||||
use Symfony\Component\Validator\Constraints\NotBlank;
|
use Symfony\Component\Validator\Constraints\NotBlank;
|
||||||
|
|
||||||
#[ORM\Entity(repositoryClass: ApiTokenRepository::class)]
|
#[ORM\Entity(repositoryClass: ApiTokenRepository::class)]
|
||||||
|
@ -64,6 +65,7 @@ class ApiToken implements TimeStampableInterface
|
||||||
protected int $id;
|
protected int $id;
|
||||||
|
|
||||||
#[ORM\Column(type: Types::STRING)]
|
#[ORM\Column(type: Types::STRING)]
|
||||||
|
#[Length(max: 255)]
|
||||||
#[NotBlank]
|
#[NotBlank]
|
||||||
#[Groups('token:read')]
|
#[Groups('token:read')]
|
||||||
protected string $name = '';
|
protected string $name = '';
|
||||||
|
|
|
@ -27,6 +27,7 @@ use Doctrine\DBAL\Types\Types;
|
||||||
use App\Entity\Base\TimestampTrait;
|
use App\Entity\Base\TimestampTrait;
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
use Jbtronics\TFAWebauthn\Model\LegacyU2FKeyInterface;
|
use Jbtronics\TFAWebauthn\Model\LegacyU2FKeyInterface;
|
||||||
|
use Symfony\Component\Validator\Constraints\Length;
|
||||||
|
|
||||||
#[ORM\Entity]
|
#[ORM\Entity]
|
||||||
#[ORM\HasLifecycleCallbacks]
|
#[ORM\HasLifecycleCallbacks]
|
||||||
|
@ -44,6 +45,7 @@ class U2FKey implements LegacyU2FKeyInterface, TimeStampableInterface
|
||||||
* @var string
|
* @var string
|
||||||
**/
|
**/
|
||||||
#[ORM\Column(type: Types::STRING, length: 128)]
|
#[ORM\Column(type: Types::STRING, length: 128)]
|
||||||
|
#[Length(max: 128)]
|
||||||
public string $keyHandle = '';
|
public string $keyHandle = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -50,6 +50,7 @@ use Jbtronics\TFAWebauthn\Model\LegacyU2FKeyInterface;
|
||||||
use Nbgrp\OneloginSamlBundle\Security\User\SamlUserInterface;
|
use Nbgrp\OneloginSamlBundle\Security\User\SamlUserInterface;
|
||||||
use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
|
use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
|
||||||
use Symfony\Component\Serializer\Annotation\Groups;
|
use Symfony\Component\Serializer\Annotation\Groups;
|
||||||
|
use Symfony\Component\Validator\Constraints\Length;
|
||||||
use Webauthn\PublicKeyCredentialUserEntity;
|
use Webauthn\PublicKeyCredentialUserEntity;
|
||||||
use function count;
|
use function count;
|
||||||
use DateTime;
|
use DateTime;
|
||||||
|
@ -204,6 +205,7 @@ class User extends AttachmentContainingDBElement implements UserInterface, HasPe
|
||||||
#[Assert\Email]
|
#[Assert\Email]
|
||||||
#[Groups(['simple', 'extended', 'full', 'import', 'user:read'])]
|
#[Groups(['simple', 'extended', 'full', 'import', 'user:read'])]
|
||||||
#[ORM\Column(type: Types::STRING, length: 255, nullable: true)]
|
#[ORM\Column(type: Types::STRING, length: 255, nullable: true)]
|
||||||
|
#[Length(max: 255)]
|
||||||
protected ?string $email = '';
|
protected ?string $email = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -218,6 +220,7 @@ class User extends AttachmentContainingDBElement implements UserInterface, HasPe
|
||||||
*/
|
*/
|
||||||
#[Groups(['simple', 'extended', 'full', 'import', 'user:read'])]
|
#[Groups(['simple', 'extended', 'full', 'import', 'user:read'])]
|
||||||
#[ORM\Column(type: Types::STRING, length: 255, nullable: true)]
|
#[ORM\Column(type: Types::STRING, length: 255, nullable: true)]
|
||||||
|
#[Length(max: 255)]
|
||||||
protected ?string $department = '';
|
protected ?string $department = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -225,6 +228,7 @@ class User extends AttachmentContainingDBElement implements UserInterface, HasPe
|
||||||
*/
|
*/
|
||||||
#[Groups(['simple', 'extended', 'full', 'import', 'user:read'])]
|
#[Groups(['simple', 'extended', 'full', 'import', 'user:read'])]
|
||||||
#[ORM\Column(type: Types::STRING, length: 255, nullable: true)]
|
#[ORM\Column(type: Types::STRING, length: 255, nullable: true)]
|
||||||
|
#[Length(max: 255)]
|
||||||
protected ?string $last_name = '';
|
protected ?string $last_name = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -232,6 +236,7 @@ class User extends AttachmentContainingDBElement implements UserInterface, HasPe
|
||||||
*/
|
*/
|
||||||
#[Groups(['simple', 'extended', 'full', 'import', 'user:read'])]
|
#[Groups(['simple', 'extended', 'full', 'import', 'user:read'])]
|
||||||
#[ORM\Column(type: Types::STRING, length: 255, nullable: true)]
|
#[ORM\Column(type: Types::STRING, length: 255, nullable: true)]
|
||||||
|
#[Length(max: 255)]
|
||||||
protected ?string $first_name = '';
|
protected ?string $first_name = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -26,6 +26,7 @@ use App\Entity\Contracts\TimeStampableInterface;
|
||||||
use Doctrine\DBAL\Types\Types;
|
use Doctrine\DBAL\Types\Types;
|
||||||
use App\Entity\Base\TimestampTrait;
|
use App\Entity\Base\TimestampTrait;
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
|
use Symfony\Component\Validator\Constraints\Length;
|
||||||
use Symfony\Component\Validator\Constraints\NotBlank;
|
use Symfony\Component\Validator\Constraints\NotBlank;
|
||||||
use Webauthn\PublicKeyCredentialSource as BasePublicKeyCredentialSource;
|
use Webauthn\PublicKeyCredentialSource as BasePublicKeyCredentialSource;
|
||||||
|
|
||||||
|
@ -43,6 +44,7 @@ class WebauthnKey extends BasePublicKeyCredentialSource implements TimeStampable
|
||||||
|
|
||||||
#[ORM\Column(type: Types::STRING)]
|
#[ORM\Column(type: Types::STRING)]
|
||||||
#[NotBlank]
|
#[NotBlank]
|
||||||
|
#[Length(max: 255)]
|
||||||
protected string $name = '';
|
protected string $name = '';
|
||||||
|
|
||||||
#[ORM\ManyToOne(targetEntity: User::class, inversedBy: 'webauthn_keys')]
|
#[ORM\ManyToOne(targetEntity: User::class, inversedBy: 'webauthn_keys')]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue