From b6b70cd95faf96e0e1ad01dae847e5e4fd74940a Mon Sep 17 00:00:00 2001 From: straumat Date: Wed, 17 Jan 2024 17:30:52 +0100 Subject: [PATCH] Added UserLnurlAuthKey --- .../explorer/core/domain/user/User.java | 6 +- .../core/domain/user/UserLnurlAuthKey.java | 50 +++++++++++++++++ .../core/dto/user/UserLnurlAuthKeyDTO.java | 32 +++++++++++ .../util/mapper/UserLnurlAuthKeyMapper.java | 20 +++++++ .../table-constraints-application_user.xml | 9 ++- ...pplication_user_lnurl_auth_linking_key.xml | 8 +++ ...pplication_user_lnurl_auth_linking_key.xml | 55 +++++++++++++++++++ .../db/changelog/db.changelog-master.yaml | 8 ++- .../resources/db/test/web-test-data-user.xml | 18 ++++++ 9 files changed, 201 insertions(+), 5 deletions(-) create mode 100644 backend/explorer-core/autoconfigure/src/main/java/org/royllo/explorer/core/domain/user/UserLnurlAuthKey.java create mode 100644 backend/explorer-core/autoconfigure/src/main/java/org/royllo/explorer/core/dto/user/UserLnurlAuthKeyDTO.java create mode 100644 backend/explorer-core/autoconfigure/src/main/java/org/royllo/explorer/core/util/mapper/UserLnurlAuthKeyMapper.java create mode 100644 backend/explorer-core/autoconfigure/src/main/resources/db/changelog/1.0.0/table-constraints/table-constraints-application_user_lnurl_auth_linking_key.xml create mode 100644 backend/explorer-core/autoconfigure/src/main/resources/db/changelog/1.0.0/table/table-application_user_lnurl_auth_linking_key.xml create mode 100644 backend/servers/explorer-web/src/test/resources/db/test/web-test-data-user.xml diff --git a/backend/explorer-core/autoconfigure/src/main/java/org/royllo/explorer/core/domain/user/User.java b/backend/explorer-core/autoconfigure/src/main/java/org/royllo/explorer/core/domain/user/User.java index ea20e6038..49a657e3c 100644 --- a/backend/explorer-core/autoconfigure/src/main/java/org/royllo/explorer/core/domain/user/User.java +++ b/backend/explorer-core/autoconfigure/src/main/java/org/royllo/explorer/core/domain/user/User.java @@ -6,7 +6,6 @@ import jakarta.persistence.GeneratedValue; import jakarta.persistence.Id; import jakarta.persistence.Table; -import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; @@ -18,6 +17,7 @@ import static jakarta.persistence.EnumType.STRING; import static jakarta.persistence.GenerationType.IDENTITY; +import static lombok.AccessLevel.PACKAGE; /** * Application user. @@ -26,10 +26,10 @@ @Setter @ToString @RequiredArgsConstructor -@AllArgsConstructor(access = AccessLevel.PACKAGE) +@AllArgsConstructor(access = PACKAGE) @Builder @Entity -@Table(name = "APPLICATION_USER") +@Table(name = "USER") public class User extends BaseDomain { /** Unique identifier. */ diff --git a/backend/explorer-core/autoconfigure/src/main/java/org/royllo/explorer/core/domain/user/UserLnurlAuthKey.java b/backend/explorer-core/autoconfigure/src/main/java/org/royllo/explorer/core/domain/user/UserLnurlAuthKey.java new file mode 100644 index 000000000..1aa4ba33c --- /dev/null +++ b/backend/explorer-core/autoconfigure/src/main/java/org/royllo/explorer/core/domain/user/UserLnurlAuthKey.java @@ -0,0 +1,50 @@ +package org.royllo.explorer.core.domain.user; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +import static jakarta.persistence.FetchType.EAGER; +import static jakarta.persistence.GenerationType.IDENTITY; +import static lombok.AccessLevel.PACKAGE; + +/** + * Public key generated by the user's Lightning wallet. + * This key is unique to each user and service combination, ensuring that the user's identity is consistent with each service but not across different services. + */ +@Getter +@Setter +@ToString +@RequiredArgsConstructor +@AllArgsConstructor(access = PACKAGE) +@Builder +@Entity +@Table(name = "APPLICATION_USER_LNURL_AUTH_LINKING_KEY") +public class UserLnurlAuthKey { + + /** Unique identifier. */ + @Id + @Column(name = "ID") + @GeneratedValue(strategy = IDENTITY) + private Long id; + + /** User. */ + @ManyToOne(fetch = EAGER) + @JoinColumn(name = "FK_USER_OWNER", nullable = false) + private User owner; + + /** Linking key. */ + @Column(name = "LINKING_KEY", nullable = false) + private String linkingKey; + +} diff --git a/backend/explorer-core/autoconfigure/src/main/java/org/royllo/explorer/core/dto/user/UserLnurlAuthKeyDTO.java b/backend/explorer-core/autoconfigure/src/main/java/org/royllo/explorer/core/dto/user/UserLnurlAuthKeyDTO.java new file mode 100644 index 000000000..85b0ba86f --- /dev/null +++ b/backend/explorer-core/autoconfigure/src/main/java/org/royllo/explorer/core/dto/user/UserLnurlAuthKeyDTO.java @@ -0,0 +1,32 @@ +package org.royllo.explorer.core.dto.user; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Value; +import org.royllo.explorer.core.domain.user.User; + +import static lombok.AccessLevel.PRIVATE; + +/** + * Public key generated by the user's Lightning wallet. + * This key is unique to each user and service combination, ensuring that the user's identity is consistent with each service but not across different services. + */ +@Value +@Builder +@AllArgsConstructor(access = PRIVATE) +public class UserLnurlAuthKeyDTO { + + /** Unique identifier. */ + Long id; + + /** Linking key owner. */ + @NotNull(message = "User owner is required") + User owner; + + /** Linking key. */ + @NotBlank(message = "Linking key is mandatory") + String linkingKey; + +} diff --git a/backend/explorer-core/autoconfigure/src/main/java/org/royllo/explorer/core/util/mapper/UserLnurlAuthKeyMapper.java b/backend/explorer-core/autoconfigure/src/main/java/org/royllo/explorer/core/util/mapper/UserLnurlAuthKeyMapper.java new file mode 100644 index 000000000..4efab5ed5 --- /dev/null +++ b/backend/explorer-core/autoconfigure/src/main/java/org/royllo/explorer/core/util/mapper/UserLnurlAuthKeyMapper.java @@ -0,0 +1,20 @@ +package org.royllo.explorer.core.util.mapper; + +import org.mapstruct.Mapper; +import org.royllo.explorer.core.domain.user.UserLnurlAuthKey; +import org.royllo.explorer.core.dto.user.UserLnurlAuthKeyDTO; + +import static org.mapstruct.NullValuePropertyMappingStrategy.IGNORE; + +/** + * User LNURL auth key related mapper. + */ +@Mapper(nullValuePropertyMappingStrategy = IGNORE, + uses = {UserMapper.class}) +public interface UserLnurlAuthKeyMapper { + + UserLnurlAuthKey mapToUserLnurlAuthKey(UserLnurlAuthKeyDTO source); + + UserLnurlAuthKeyDTO mapToUserLnurlAuthKeyDTO(UserLnurlAuthKey source); + +} diff --git a/backend/explorer-core/autoconfigure/src/main/resources/db/changelog/1.0.0/table-constraints/table-constraints-application_user.xml b/backend/explorer-core/autoconfigure/src/main/resources/db/changelog/1.0.0/table-constraints/table-constraints-application_user.xml index afc7c8f49..83783c024 100644 --- a/backend/explorer-core/autoconfigure/src/main/resources/db/changelog/1.0.0/table-constraints/table-constraints-application_user.xml +++ b/backend/explorer-core/autoconfigure/src/main/resources/db/changelog/1.0.0/table-constraints/table-constraints-application_user.xml @@ -2,7 +2,14 @@ - + + + + \ No newline at end of file diff --git a/backend/explorer-core/autoconfigure/src/main/resources/db/changelog/1.0.0/table-constraints/table-constraints-application_user_lnurl_auth_linking_key.xml b/backend/explorer-core/autoconfigure/src/main/resources/db/changelog/1.0.0/table-constraints/table-constraints-application_user_lnurl_auth_linking_key.xml new file mode 100644 index 000000000..afc7c8f49 --- /dev/null +++ b/backend/explorer-core/autoconfigure/src/main/resources/db/changelog/1.0.0/table-constraints/table-constraints-application_user_lnurl_auth_linking_key.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/backend/explorer-core/autoconfigure/src/main/resources/db/changelog/1.0.0/table/table-application_user_lnurl_auth_linking_key.xml b/backend/explorer-core/autoconfigure/src/main/resources/db/changelog/1.0.0/table/table-application_user_lnurl_auth_linking_key.xml new file mode 100644 index 000000000..26a8bfe99 --- /dev/null +++ b/backend/explorer-core/autoconfigure/src/main/resources/db/changelog/1.0.0/table/table-application_user_lnurl_auth_linking_key.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/backend/explorer-core/autoconfigure/src/main/resources/db/changelog/db.changelog-master.yaml b/backend/explorer-core/autoconfigure/src/main/resources/db/changelog/db.changelog-master.yaml index 2cbb16b38..500970940 100644 --- a/backend/explorer-core/autoconfigure/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/backend/explorer-core/autoconfigure/src/main/resources/db/changelog/db.changelog-master.yaml @@ -5,7 +5,11 @@ databaseChangeLog: # Users. - include: - file: /db/changelog/1.0.0/table/table-application_user.xml + file: + /db/changelog/1.0.0/table/table-application_user.xml + - include: + file: + /db/changelog/1.0.0/table/table-application_user_lnurl_auth_linking_key.xml # Assets. - include: @@ -45,6 +49,8 @@ databaseChangeLog: file: /db/changelog/1.0.0/table-constraints/table-constraints-bitcoin_transaction_output.xml - include: file: /db/changelog/1.0.0/table-constraints/table-constraints-application_user.xml + - include: + file: /db/changelog/1.0.0/table-constraints/table-constraints-application_user_lnurl_auth_linking_key.xml - include: file: /db/changelog/1.0.0/table-constraints/table-constraints-universe_server.xml - include: diff --git a/backend/servers/explorer-web/src/test/resources/db/test/web-test-data-user.xml b/backend/servers/explorer-web/src/test/resources/db/test/web-test-data-user.xml new file mode 100644 index 000000000..683831708 --- /dev/null +++ b/backend/servers/explorer-web/src/test/resources/db/test/web-test-data-user.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + \ No newline at end of file