feat: Add basic certificate models and repositories (#8)

* Add basic certificate models and repositories

* Review comments

* Adjust cert enum
This commit is contained in:
Torge Hamann 2024-11-17 22:35:27 +01:00 committed by GitHub
parent a2aea580f2
commit d98f60ab54
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
15 changed files with 244 additions and 9 deletions

View file

@ -0,0 +1,45 @@
package de.mlessmann.certassist.models;
import jakarta.persistence.*;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;
import lombok.AccessLevel;
import lombok.Data;
import lombok.Setter;
@Entity
@Data
public class Certificate {
@Id
@GeneratedValue(strategy = GenerationType.UUID)
@Setter(AccessLevel.NONE)
private String id;
@NotNull
@Enumerated(EnumType.STRING)
private CertificateType type;
@NotNull
private String commonName;
private String trustingAuthority;
@Min(1)
private int requestedKeyLength;
@Min(1)
private int requestedValidityDays;
private String subjectEmailAddress;
private String subjectOrganization;
private String subjectOrganizationalUnit;
private String subjectCountry;
private String subjectState;
private String subjectLocality;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
private List<CertificateExtension> certificateExtension = new ArrayList<>();
}

View file

@ -0,0 +1,19 @@
package de.mlessmann.certassist.models;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Data;
import lombok.Setter;
@Entity
@Data
public class CertificateExtension {
@Id
@GeneratedValue(strategy = GenerationType.UUID)
@Setter(AccessLevel.NONE)
private String id;
private String identifier;
private String value;
}

View file

@ -0,0 +1,26 @@
package de.mlessmann.certassist.models;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.AccessLevel;
import lombok.Data;
import lombok.Setter;
@Entity
@Data
public class CertificateSubjectPreset {
@Id
@GeneratedValue(strategy = GenerationType.UUID)
@Setter(AccessLevel.NONE)
private String id;
private String emailAddress;
private String organization;
private String organizationalUnit;
private String country;
private String state;
private String locality;
}

View file

@ -0,0 +1,8 @@
package de.mlessmann.certassist.models;
public enum CertificateType {
ROOT_CA,
STANDALONE_CERT,
SIGNED_CERT,
CLIENT_CERT,
}

View file

@ -4,6 +4,7 @@ import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
@ -12,8 +13,9 @@ import lombok.Setter;
public class User {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
@GeneratedValue(strategy = GenerationType.UUID)
@Setter(AccessLevel.NONE)
private String id;
@Setter
private String username;

View file

@ -9,6 +9,7 @@ import lombok.Data;
public class CertificateRequest {
@Builder.Default
@Deprecated
private String oid = UUID.randomUUID().toString();
private RequestType type;

View file

@ -0,0 +1,8 @@
package de.mlessmann.certassist.repositories;
import de.mlessmann.certassist.models.CertificateExtension;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface CertificateExtensionRepository extends CrudRepository<CertificateExtension, String> {}

View file

@ -0,0 +1,8 @@
package de.mlessmann.certassist.repositories;
import de.mlessmann.certassist.models.Certificate;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface CertificateRepository extends CrudRepository<Certificate, String> {}

View file

@ -0,0 +1,8 @@
package de.mlessmann.certassist.repositories;
import de.mlessmann.certassist.models.CertificateSubjectPreset;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface CertificateSubjectPresetRepository extends CrudRepository<CertificateSubjectPreset, String> {}

View file

@ -5,7 +5,4 @@ import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UserRepository extends CrudRepository<User, Long> {
User findUserById(long id);
}
public interface UserRepository extends CrudRepository<User, String> {}