diff --git a/examples/spring-boot-example/src/main/java/org/clevercastle/authforge/examples/springboot/springbootexample/AuthController.java b/examples/spring-boot-example/src/main/java/org/clevercastle/authforge/examples/springboot/springbootexample/AuthController.java index c12cc17..d57b238 100644 --- a/examples/spring-boot-example/src/main/java/org/clevercastle/authforge/examples/springboot/springbootexample/AuthController.java +++ b/examples/spring-boot-example/src/main/java/org/clevercastle/authforge/examples/springboot/springbootexample/AuthController.java @@ -4,9 +4,9 @@ import com.auth0.jwt.interfaces.DecodedJWT; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.Pair; -import org.clevercastle.authforge.CastleException; -import org.clevercastle.authforge.User; -import org.clevercastle.authforge.UserLoginItem; +import org.clevercastle.authforge.exception.CastleException; +import org.clevercastle.authforge.entity.User; +import org.clevercastle.authforge.entity.UserLoginItem; import org.clevercastle.authforge.UserRegisterRequest; import org.clevercastle.authforge.UserService; import org.clevercastle.authforge.UserWithToken; diff --git a/examples/spring-boot-example/src/main/java/org/clevercastle/authforge/examples/springboot/springbootexample/Beans.java b/examples/spring-boot-example/src/main/java/org/clevercastle/authforge/examples/springboot/springbootexample/Beans.java index e74b205..fbc0325 100644 --- a/examples/spring-boot-example/src/main/java/org/clevercastle/authforge/examples/springboot/springbootexample/Beans.java +++ b/examples/spring-boot-example/src/main/java/org/clevercastle/authforge/examples/springboot/springbootexample/Beans.java @@ -5,10 +5,10 @@ import org.clevercastle.authforge.UserService; import org.clevercastle.authforge.UserServiceImpl; import org.clevercastle.authforge.repository.UserRepository; -import org.clevercastle.authforge.repository.rdsjpa.IUserLoginItemRepository; -import org.clevercastle.authforge.repository.rdsjpa.IUserModelRepository; -import org.clevercastle.authforge.repository.rdsjpa.IUserRefreshTokenMappingRepository; -import org.clevercastle.authforge.repository.rdsjpa.UserRepositoryImpl; +import org.clevercastle.authforge.repository.rdsjpa.RdsJpaUserLoginItemRepository; +import org.clevercastle.authforge.repository.rdsjpa.RdsJpaUserModelRepository; +import org.clevercastle.authforge.repository.rdsjpa.RdsJpaUserRefreshTokenMappingRepository; +import org.clevercastle.authforge.repository.rdsjpa.RdsJpaUserRepositoryImpl; import org.clevercastle.authforge.token.TokenService; import org.clevercastle.authforge.token.jwt.JwtTokenService; import org.clevercastle.authforge.verification.DummyVerificationService; @@ -31,10 +31,10 @@ @Configuration public class Beans { @Bean - public UserRepository userRepository(IUserModelRepository userModelRepository, - IUserLoginItemRepository userLoginItemRepository, - IUserRefreshTokenMappingRepository userRefreshTokenMappingRepository) { - return new UserRepositoryImpl(userModelRepository, userLoginItemRepository, userRefreshTokenMappingRepository); + public UserRepository userRepository(RdsJpaUserModelRepository userModelRepository, + RdsJpaUserLoginItemRepository userLoginItemRepository, + RdsJpaUserRefreshTokenMappingRepository userRefreshTokenMappingRepository) { + return new RdsJpaUserRepositoryImpl(userModelRepository, userLoginItemRepository, userRefreshTokenMappingRepository); } @Bean @@ -56,8 +56,8 @@ public TokenService tokenService() throws NoSuchAlgorithmException, InvalidKeySp } @Bean - public UserService userService(UserRepository userRepository, IUserLoginItemRepository userLoginItemRepository, TokenService tokenService) { - return new UserServiceImpl(Config.builder().build(), userRepository, tokenService, new DummyVerificationService(userLoginItemRepository)); + public UserService userService(UserRepository userRepository, TokenService tokenService) { + return new UserServiceImpl(Config.builder().build(), userRepository, tokenService, new DummyVerificationService(userRepository)); } diff --git a/examples/spring-boot-example/src/main/java/org/clevercastle/authforge/examples/springboot/springbootexample/HttpClientImpl.java b/examples/spring-boot-example/src/main/java/org/clevercastle/authforge/examples/springboot/springbootexample/HttpClientImpl.java index bc96464..aff7d69 100644 --- a/examples/spring-boot-example/src/main/java/org/clevercastle/authforge/examples/springboot/springbootexample/HttpClientImpl.java +++ b/examples/spring-boot-example/src/main/java/org/clevercastle/authforge/examples/springboot/springbootexample/HttpClientImpl.java @@ -7,7 +7,7 @@ import org.apache.hc.client5.http.impl.classic.HttpClientBuilder; import org.apache.hc.core5.http.Header; import org.apache.hc.core5.util.Timeout; -import org.clevercastle.authforge.CastleException; +import org.clevercastle.authforge.exception.CastleException; import org.clevercastle.authforge.http.HttpRequest; import org.clevercastle.authforge.http.HttpResponse; import org.clevercastle.authforge.http.IHttpClient; diff --git a/examples/spring-boot-example/src/main/java/org/clevercastle/authforge/examples/springboot/springbootexample/SpringBootExampleApplication.java b/examples/spring-boot-example/src/main/java/org/clevercastle/authforge/examples/springboot/springbootexample/SpringBootExampleApplication.java index ead3e70..d2ada9d 100644 --- a/examples/spring-boot-example/src/main/java/org/clevercastle/authforge/examples/springboot/springbootexample/SpringBootExampleApplication.java +++ b/examples/spring-boot-example/src/main/java/org/clevercastle/authforge/examples/springboot/springbootexample/SpringBootExampleApplication.java @@ -1,6 +1,6 @@ package org.clevercastle.authforge.examples.springboot.springbootexample; -import org.clevercastle.authforge.User; +import org.clevercastle.authforge.entity.User; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.domain.EntityScan; diff --git a/examples/spring-boot-example/src/main/java/org/clevercastle/authforge/examples/springboot/springbootexample/UserLoginItemRepositoryAdapter.java b/examples/spring-boot-example/src/main/java/org/clevercastle/authforge/examples/springboot/springbootexample/UserLoginItemRepositoryAdapter.java index 4f9c006..10176e1 100644 --- a/examples/spring-boot-example/src/main/java/org/clevercastle/authforge/examples/springboot/springbootexample/UserLoginItemRepositoryAdapter.java +++ b/examples/spring-boot-example/src/main/java/org/clevercastle/authforge/examples/springboot/springbootexample/UserLoginItemRepositoryAdapter.java @@ -1,10 +1,10 @@ package org.clevercastle.authforge.examples.springboot.springbootexample; -import org.clevercastle.authforge.UserLoginItem; -import org.clevercastle.authforge.repository.rdsjpa.UserLoginItemJpaRepository; +import org.clevercastle.authforge.entity.UserLoginItem; +import org.clevercastle.authforge.repository.rdsjpa.RdsJpaUserLoginItemRepository; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @Repository -public interface UserLoginItemRepositoryAdapter extends UserLoginItemJpaRepository, JpaRepository { +public interface UserLoginItemRepositoryAdapter extends RdsJpaUserLoginItemRepository, JpaRepository { } \ No newline at end of file diff --git a/examples/spring-boot-example/src/main/java/org/clevercastle/authforge/examples/springboot/springbootexample/UserModelRepositoryAdapter.java b/examples/spring-boot-example/src/main/java/org/clevercastle/authforge/examples/springboot/springbootexample/UserModelRepositoryAdapter.java index 8da6c66..f038048 100644 --- a/examples/spring-boot-example/src/main/java/org/clevercastle/authforge/examples/springboot/springbootexample/UserModelRepositoryAdapter.java +++ b/examples/spring-boot-example/src/main/java/org/clevercastle/authforge/examples/springboot/springbootexample/UserModelRepositoryAdapter.java @@ -1,10 +1,10 @@ package org.clevercastle.authforge.examples.springboot.springbootexample; -import org.clevercastle.authforge.User; -import org.clevercastle.authforge.repository.rdsjpa.IUserModelRepository; +import org.clevercastle.authforge.entity.User; +import org.clevercastle.authforge.repository.rdsjpa.RdsJpaUserModelRepository; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @Repository -public interface UserModelRepositoryAdapter extends IUserModelRepository, JpaRepository { +public interface UserModelRepositoryAdapter extends RdsJpaUserModelRepository, JpaRepository { } \ No newline at end of file diff --git a/examples/spring-boot-example/src/main/java/org/clevercastle/authforge/examples/springboot/springbootexample/UserRefreshTokenMappingRepositoryAdapter.java b/examples/spring-boot-example/src/main/java/org/clevercastle/authforge/examples/springboot/springbootexample/UserRefreshTokenMappingRepositoryAdapter.java index 0b702f3..2692ed9 100644 --- a/examples/spring-boot-example/src/main/java/org/clevercastle/authforge/examples/springboot/springbootexample/UserRefreshTokenMappingRepositoryAdapter.java +++ b/examples/spring-boot-example/src/main/java/org/clevercastle/authforge/examples/springboot/springbootexample/UserRefreshTokenMappingRepositoryAdapter.java @@ -1,9 +1,9 @@ package org.clevercastle.authforge.examples.springboot.springbootexample; -import org.clevercastle.authforge.UserRefreshTokenMapping; -import org.clevercastle.authforge.repository.rdsjpa.IUserRefreshTokenMappingRepository; -import org.clevercastle.authforge.repository.rdsjpa.UserRefreshTokenMappingId; +import org.clevercastle.authforge.entity.UserRefreshTokenMapping; +import org.clevercastle.authforge.repository.rdsjpa.RdsJpaUserRefreshTokenMappingRepository; +import org.clevercastle.authforge.repository.rdsjpa.RdsJpaUserRefreshTokenMappingId; import org.springframework.data.jpa.repository.JpaRepository; -public interface UserRefreshTokenMappingRepositoryAdapter extends IUserRefreshTokenMappingRepository, JpaRepository { +public interface UserRefreshTokenMappingRepositoryAdapter extends RdsJpaUserRefreshTokenMappingRepository, JpaRepository { } diff --git a/examples/spring-boot-example/src/test/java/org/clevercastle/helper/login/examples/springboot/springbootexample/SpringBootExampleApplicationTests.java b/examples/spring-boot-example/src/test/java/org/clevercastle/helper/login/examples/springboot/springbootexample/SpringBootExampleApplicationTests.java deleted file mode 100644 index 9dc5afb..0000000 --- a/examples/spring-boot-example/src/test/java/org/clevercastle/helper/login/examples/springboot/springbootexample/SpringBootExampleApplicationTests.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.clevercastle.helper.login.examples.springboot.springbootexample; - -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; - -@SpringBootTest -class SpringBootExampleApplicationTests { - - @Test - void contextLoads() { - } - -} diff --git a/src/main/java/org/clevercastle/authforge/UserService.java b/src/main/java/org/clevercastle/authforge/UserService.java index 3dd59ea..c522827 100644 --- a/src/main/java/org/clevercastle/authforge/UserService.java +++ b/src/main/java/org/clevercastle/authforge/UserService.java @@ -1,6 +1,9 @@ package org.clevercastle.authforge; import org.apache.commons.lang3.tuple.Pair; +import org.clevercastle.authforge.entity.User; +import org.clevercastle.authforge.entity.UserLoginItem; +import org.clevercastle.authforge.exception.CastleException; import org.clevercastle.authforge.oauth2.Oauth2ClientConfig; public interface UserService { diff --git a/src/main/java/org/clevercastle/authforge/UserServiceImpl.java b/src/main/java/org/clevercastle/authforge/UserServiceImpl.java index 1366659..22fc8ba 100644 --- a/src/main/java/org/clevercastle/authforge/UserServiceImpl.java +++ b/src/main/java/org/clevercastle/authforge/UserServiceImpl.java @@ -14,8 +14,11 @@ import jakarta.annotation.Nonnull; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.Pair; +import org.clevercastle.authforge.exception.CastleException; import org.clevercastle.authforge.exception.UserExistException; import org.clevercastle.authforge.exception.UserNotFoundException; +import org.clevercastle.authforge.entity.User; +import org.clevercastle.authforge.entity.UserLoginItem; import org.clevercastle.authforge.oauth2.Oauth2ClientConfig; import org.clevercastle.authforge.oauth2.Oauth2User; import org.clevercastle.authforge.repository.UserRepository; diff --git a/src/main/java/org/clevercastle/authforge/UserWithToken.java b/src/main/java/org/clevercastle/authforge/UserWithToken.java index a794f98..71a4c7e 100644 --- a/src/main/java/org/clevercastle/authforge/UserWithToken.java +++ b/src/main/java/org/clevercastle/authforge/UserWithToken.java @@ -1,5 +1,7 @@ package org.clevercastle.authforge; +import org.clevercastle.authforge.entity.User; + public class UserWithToken { private final User user; private final TokenHolder tokenHolder; diff --git a/src/main/java/org/clevercastle/authforge/User.java b/src/main/java/org/clevercastle/authforge/entity/User.java similarity index 96% rename from src/main/java/org/clevercastle/authforge/User.java rename to src/main/java/org/clevercastle/authforge/entity/User.java index 0184935..503a5b7 100644 --- a/src/main/java/org/clevercastle/authforge/User.java +++ b/src/main/java/org/clevercastle/authforge/entity/User.java @@ -1,10 +1,11 @@ -package org.clevercastle.authforge; +package org.clevercastle.authforge.entity; import jakarta.persistence.Entity; import jakarta.persistence.EnumType; import jakarta.persistence.Enumerated; import jakarta.persistence.Id; import jakarta.persistence.Table; +import org.clevercastle.authforge.UserState; import java.time.OffsetDateTime; diff --git a/src/main/java/org/clevercastle/authforge/UserLoginItem.java b/src/main/java/org/clevercastle/authforge/entity/UserLoginItem.java similarity index 98% rename from src/main/java/org/clevercastle/authforge/UserLoginItem.java rename to src/main/java/org/clevercastle/authforge/entity/UserLoginItem.java index 3bc78e1..27bfe1b 100644 --- a/src/main/java/org/clevercastle/authforge/UserLoginItem.java +++ b/src/main/java/org/clevercastle/authforge/entity/UserLoginItem.java @@ -1,4 +1,4 @@ -package org.clevercastle.authforge; +package org.clevercastle.authforge.entity; import jakarta.persistence.Entity; import jakarta.persistence.EnumType; diff --git a/src/main/java/org/clevercastle/authforge/UserRefreshTokenMapping.java b/src/main/java/org/clevercastle/authforge/entity/UserRefreshTokenMapping.java similarity index 83% rename from src/main/java/org/clevercastle/authforge/UserRefreshTokenMapping.java rename to src/main/java/org/clevercastle/authforge/entity/UserRefreshTokenMapping.java index c311756..80098d3 100644 --- a/src/main/java/org/clevercastle/authforge/UserRefreshTokenMapping.java +++ b/src/main/java/org/clevercastle/authforge/entity/UserRefreshTokenMapping.java @@ -1,10 +1,10 @@ -package org.clevercastle.authforge; +package org.clevercastle.authforge.entity; import jakarta.persistence.Entity; import jakarta.persistence.Id; import jakarta.persistence.IdClass; import jakarta.persistence.Table; -import org.clevercastle.authforge.repository.rdsjpa.UserRefreshTokenMappingId; +import org.clevercastle.authforge.repository.rdsjpa.RdsJpaUserRefreshTokenMappingId; import java.time.OffsetDateTime; @@ -12,8 +12,8 @@ @javax.persistence.Table(name = "user_refresh_token") @Entity @Table(name = "user_refresh_token") -@javax.persistence.IdClass(UserRefreshTokenMappingId.class) -@IdClass(UserRefreshTokenMappingId.class) +@javax.persistence.IdClass(RdsJpaUserRefreshTokenMappingId.class) +@IdClass(RdsJpaUserRefreshTokenMappingId.class) public class UserRefreshTokenMapping { @javax.persistence.Id @Id diff --git a/src/main/java/org/clevercastle/authforge/CastleException.java b/src/main/java/org/clevercastle/authforge/exception/CastleException.java similarity index 83% rename from src/main/java/org/clevercastle/authforge/CastleException.java rename to src/main/java/org/clevercastle/authforge/exception/CastleException.java index 802f28d..eab4c7e 100644 --- a/src/main/java/org/clevercastle/authforge/CastleException.java +++ b/src/main/java/org/clevercastle/authforge/exception/CastleException.java @@ -1,4 +1,4 @@ -package org.clevercastle.authforge; +package org.clevercastle.authforge.exception; public class CastleException extends Exception { public CastleException() { diff --git a/src/main/java/org/clevercastle/authforge/exception/UserExistException.java b/src/main/java/org/clevercastle/authforge/exception/UserExistException.java index 4b0d982..8660505 100644 --- a/src/main/java/org/clevercastle/authforge/exception/UserExistException.java +++ b/src/main/java/org/clevercastle/authforge/exception/UserExistException.java @@ -1,6 +1,4 @@ package org.clevercastle.authforge.exception; -import org.clevercastle.authforge.CastleException; - public class UserExistException extends CastleException { } diff --git a/src/main/java/org/clevercastle/authforge/exception/UserNotConfirmedException.java b/src/main/java/org/clevercastle/authforge/exception/UserNotConfirmedException.java index 8eee807..2362072 100644 --- a/src/main/java/org/clevercastle/authforge/exception/UserNotConfirmedException.java +++ b/src/main/java/org/clevercastle/authforge/exception/UserNotConfirmedException.java @@ -1,7 +1,5 @@ package org.clevercastle.authforge.exception; -import org.clevercastle.authforge.CastleException; - public class UserNotConfirmedException extends CastleException { public UserNotConfirmedException() { } diff --git a/src/main/java/org/clevercastle/authforge/exception/UserNotFoundException.java b/src/main/java/org/clevercastle/authforge/exception/UserNotFoundException.java index a3e826a..1422b30 100644 --- a/src/main/java/org/clevercastle/authforge/exception/UserNotFoundException.java +++ b/src/main/java/org/clevercastle/authforge/exception/UserNotFoundException.java @@ -1,7 +1,5 @@ package org.clevercastle.authforge.exception; -import org.clevercastle.authforge.CastleException; - public class UserNotFoundException extends CastleException { public UserNotFoundException() { } diff --git a/src/main/java/org/clevercastle/authforge/http/IHttpClient.java b/src/main/java/org/clevercastle/authforge/http/IHttpClient.java index b476072..ee0841c 100644 --- a/src/main/java/org/clevercastle/authforge/http/IHttpClient.java +++ b/src/main/java/org/clevercastle/authforge/http/IHttpClient.java @@ -1,6 +1,6 @@ package org.clevercastle.authforge.http; -import org.clevercastle.authforge.CastleException; +import org.clevercastle.authforge.exception.CastleException; public interface IHttpClient { HttpResponse execute(HttpRequest request) throws CastleException; diff --git a/src/main/java/org/clevercastle/authforge/oauth2/AbstractOauth2ExchangeService.java b/src/main/java/org/clevercastle/authforge/oauth2/AbstractOauth2ExchangeService.java index b2163bc..bb167fd 100644 --- a/src/main/java/org/clevercastle/authforge/oauth2/AbstractOauth2ExchangeService.java +++ b/src/main/java/org/clevercastle/authforge/oauth2/AbstractOauth2ExchangeService.java @@ -12,7 +12,7 @@ import com.nimbusds.oauth2.sdk.http.HTTPResponse; import com.nimbusds.oauth2.sdk.id.ClientID; import org.apache.commons.lang3.StringUtils; -import org.clevercastle.authforge.CastleException; +import org.clevercastle.authforge.exception.CastleException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/org/clevercastle/authforge/oauth2/Oauth2ExchangeService.java b/src/main/java/org/clevercastle/authforge/oauth2/Oauth2ExchangeService.java index 89d6b5e..a602742 100644 --- a/src/main/java/org/clevercastle/authforge/oauth2/Oauth2ExchangeService.java +++ b/src/main/java/org/clevercastle/authforge/oauth2/Oauth2ExchangeService.java @@ -1,6 +1,6 @@ package org.clevercastle.authforge.oauth2; -import org.clevercastle.authforge.CastleException; +import org.clevercastle.authforge.exception.CastleException; public interface Oauth2ExchangeService { diff --git a/src/main/java/org/clevercastle/authforge/oauth2/github/GithubOauth2ExchangeService.java b/src/main/java/org/clevercastle/authforge/oauth2/github/GithubOauth2ExchangeService.java index 124584b..ca4a741 100644 --- a/src/main/java/org/clevercastle/authforge/oauth2/github/GithubOauth2ExchangeService.java +++ b/src/main/java/org/clevercastle/authforge/oauth2/github/GithubOauth2ExchangeService.java @@ -6,7 +6,7 @@ import com.nimbusds.oauth2.sdk.http.HTTPRequest; import com.nimbusds.oauth2.sdk.http.HTTPResponse; import com.nimbusds.openid.connect.sdk.OIDCTokenResponse; -import org.clevercastle.authforge.CastleException; +import org.clevercastle.authforge.exception.CastleException; import org.clevercastle.authforge.http.HttpResponse; import org.clevercastle.authforge.oauth2.AbstractOauth2ExchangeService; import org.clevercastle.authforge.oauth2.Oauth2ClientConfig; diff --git a/src/main/java/org/clevercastle/authforge/oauth2/oidc/OidcExchangeService.java b/src/main/java/org/clevercastle/authforge/oauth2/oidc/OidcExchangeService.java index 089301b..3b1f2bb 100644 --- a/src/main/java/org/clevercastle/authforge/oauth2/oidc/OidcExchangeService.java +++ b/src/main/java/org/clevercastle/authforge/oauth2/oidc/OidcExchangeService.java @@ -6,7 +6,7 @@ import com.nimbusds.oauth2.sdk.TokenResponse; import com.nimbusds.oauth2.sdk.http.HTTPResponse; import com.nimbusds.openid.connect.sdk.OIDCTokenResponse; -import org.clevercastle.authforge.CastleException; +import org.clevercastle.authforge.exception.CastleException; import org.clevercastle.authforge.oauth2.AbstractOauth2ExchangeService; import org.clevercastle.authforge.oauth2.Oauth2ClientConfig; import org.clevercastle.authforge.oauth2.Oauth2User; diff --git a/src/main/java/org/clevercastle/authforge/repository/UserRepository.java b/src/main/java/org/clevercastle/authforge/repository/UserRepository.java index c7d2bf6..d2870ec 100644 --- a/src/main/java/org/clevercastle/authforge/repository/UserRepository.java +++ b/src/main/java/org/clevercastle/authforge/repository/UserRepository.java @@ -1,22 +1,21 @@ package org.clevercastle.authforge.repository; +import jakarta.annotation.Nonnull; import org.apache.commons.lang3.tuple.Pair; -import org.clevercastle.authforge.CastleException; -import org.clevercastle.authforge.User; -import org.clevercastle.authforge.UserLoginItem; -import org.clevercastle.authforge.UserRefreshTokenMapping; +import org.clevercastle.authforge.exception.CastleException; +import org.clevercastle.authforge.entity.User; +import org.clevercastle.authforge.entity.UserLoginItem; +import org.clevercastle.authforge.entity.UserRefreshTokenMapping; import java.time.OffsetDateTime; public interface UserRepository { void save(User user, UserLoginItem userLoginItem); - void save(User user); - - void saveLoginItem(UserLoginItem loginItem); - + @Nonnull Pair getByLoginIdentifier(String loginIdentifier); + @Nonnull Pair getByUserSub(String userSUb); void confirmLoginItem(String loginIdentifier); diff --git a/src/main/java/org/clevercastle/authforge/repository/rdsjpa/IUserLoginItemRepository.java b/src/main/java/org/clevercastle/authforge/repository/rdsjpa/IUserLoginItemRepository.java deleted file mode 100644 index fe55514..0000000 --- a/src/main/java/org/clevercastle/authforge/repository/rdsjpa/IUserLoginItemRepository.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.clevercastle.authforge.repository.rdsjpa; - -import org.clevercastle.authforge.UserLoginItem; - -public interface IUserLoginItemRepository { - UserLoginItem save(UserLoginItem userLoginItem); - - UserLoginItem getByLoginIdentifier(String loginIdentifier); - - UserLoginItem getByUserSub(String userSub); - - void confirmLoginItem(String loginIdentifier); -} diff --git a/src/main/java/org/clevercastle/authforge/repository/rdsjpa/UserLoginItemJpaRepository.java b/src/main/java/org/clevercastle/authforge/repository/rdsjpa/RdsJpaUserLoginItemRepository.java similarity index 56% rename from src/main/java/org/clevercastle/authforge/repository/rdsjpa/UserLoginItemJpaRepository.java rename to src/main/java/org/clevercastle/authforge/repository/rdsjpa/RdsJpaUserLoginItemRepository.java index 2c974b7..e636d2f 100644 --- a/src/main/java/org/clevercastle/authforge/repository/rdsjpa/UserLoginItemJpaRepository.java +++ b/src/main/java/org/clevercastle/authforge/repository/rdsjpa/RdsJpaUserLoginItemRepository.java @@ -1,18 +1,20 @@ package org.clevercastle.authforge.repository.rdsjpa; +import org.clevercastle.authforge.entity.UserLoginItem; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.query.Param; -import javax.transaction.Transactional; +public interface RdsJpaUserLoginItemRepository { + UserLoginItem save(UserLoginItem userLoginItem); -public interface UserLoginItemJpaRepository extends IUserLoginItemRepository { + UserLoginItem getByLoginIdentifier(String loginIdentifier); + + UserLoginItem getByUserSub(String userSub); @Modifying - @Transactional @Query("UPDATE UserLoginItem u\n" + " SET u.state = 'ACTIVE', \n" + " u.verificationCode = NULL\n" + " WHERE u.loginIdentifier = :loginIdentifier") - void confirmLoginItem(@Param("loginIdentifier") String loginIdentifier); + void confirmLoginItem(String loginIdentifier); } diff --git a/src/main/java/org/clevercastle/authforge/repository/rdsjpa/IUserModelRepository.java b/src/main/java/org/clevercastle/authforge/repository/rdsjpa/RdsJpaUserModelRepository.java similarity index 57% rename from src/main/java/org/clevercastle/authforge/repository/rdsjpa/IUserModelRepository.java rename to src/main/java/org/clevercastle/authforge/repository/rdsjpa/RdsJpaUserModelRepository.java index 4dc2502..55b65a3 100644 --- a/src/main/java/org/clevercastle/authforge/repository/rdsjpa/IUserModelRepository.java +++ b/src/main/java/org/clevercastle/authforge/repository/rdsjpa/RdsJpaUserModelRepository.java @@ -1,8 +1,8 @@ package org.clevercastle.authforge.repository.rdsjpa; -import org.clevercastle.authforge.User; +import org.clevercastle.authforge.entity.User; -public interface IUserModelRepository { +public interface RdsJpaUserModelRepository { User save(User user); User getByUserId(String userId); diff --git a/src/main/java/org/clevercastle/authforge/repository/rdsjpa/UserRefreshTokenMappingId.java b/src/main/java/org/clevercastle/authforge/repository/rdsjpa/RdsJpaUserRefreshTokenMappingId.java similarity index 73% rename from src/main/java/org/clevercastle/authforge/repository/rdsjpa/UserRefreshTokenMappingId.java rename to src/main/java/org/clevercastle/authforge/repository/rdsjpa/RdsJpaUserRefreshTokenMappingId.java index 7f10f5d..f8539b1 100644 --- a/src/main/java/org/clevercastle/authforge/repository/rdsjpa/UserRefreshTokenMappingId.java +++ b/src/main/java/org/clevercastle/authforge/repository/rdsjpa/RdsJpaUserRefreshTokenMappingId.java @@ -2,14 +2,14 @@ import java.io.Serializable; -public class UserRefreshTokenMappingId implements Serializable { +public class RdsJpaUserRefreshTokenMappingId implements Serializable { private String userId; private String refreshToken; - public UserRefreshTokenMappingId() { + public RdsJpaUserRefreshTokenMappingId() { } - public UserRefreshTokenMappingId(String userId, String refreshToken) { + public RdsJpaUserRefreshTokenMappingId(String userId, String refreshToken) { this.userId = userId; this.refreshToken = refreshToken; } diff --git a/src/main/java/org/clevercastle/authforge/repository/rdsjpa/IUserRefreshTokenMappingRepository.java b/src/main/java/org/clevercastle/authforge/repository/rdsjpa/RdsJpaUserRefreshTokenMappingRepository.java similarity index 71% rename from src/main/java/org/clevercastle/authforge/repository/rdsjpa/IUserRefreshTokenMappingRepository.java rename to src/main/java/org/clevercastle/authforge/repository/rdsjpa/RdsJpaUserRefreshTokenMappingRepository.java index 028c64e..5ba0413 100644 --- a/src/main/java/org/clevercastle/authforge/repository/rdsjpa/IUserRefreshTokenMappingRepository.java +++ b/src/main/java/org/clevercastle/authforge/repository/rdsjpa/RdsJpaUserRefreshTokenMappingRepository.java @@ -1,8 +1,8 @@ package org.clevercastle.authforge.repository.rdsjpa; -import org.clevercastle.authforge.UserRefreshTokenMapping; +import org.clevercastle.authforge.entity.UserRefreshTokenMapping; -public interface IUserRefreshTokenMappingRepository { +public interface RdsJpaUserRefreshTokenMappingRepository { UserRefreshTokenMapping getByUserIdAndRefreshToken(String userIed, String refreshToken); void deleteByUserIdAndRefreshToken(String userIed, String refreshToken); diff --git a/src/main/java/org/clevercastle/authforge/repository/rdsjpa/UserRepositoryImpl.java b/src/main/java/org/clevercastle/authforge/repository/rdsjpa/RdsJpaUserRepositoryImpl.java similarity index 74% rename from src/main/java/org/clevercastle/authforge/repository/rdsjpa/UserRepositoryImpl.java rename to src/main/java/org/clevercastle/authforge/repository/rdsjpa/RdsJpaUserRepositoryImpl.java index 063433f..19f21ab 100644 --- a/src/main/java/org/clevercastle/authforge/repository/rdsjpa/UserRepositoryImpl.java +++ b/src/main/java/org/clevercastle/authforge/repository/rdsjpa/RdsJpaUserRepositoryImpl.java @@ -3,23 +3,23 @@ import jakarta.annotation.Nonnull; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.Pair; -import org.clevercastle.authforge.CastleException; -import org.clevercastle.authforge.User; -import org.clevercastle.authforge.UserLoginItem; -import org.clevercastle.authforge.UserRefreshTokenMapping; +import org.clevercastle.authforge.exception.CastleException; +import org.clevercastle.authforge.entity.User; +import org.clevercastle.authforge.entity.UserLoginItem; +import org.clevercastle.authforge.entity.UserRefreshTokenMapping; import org.clevercastle.authforge.repository.UserRepository; import org.clevercastle.authforge.util.TimeUtils; import java.time.OffsetDateTime; -public class UserRepositoryImpl implements UserRepository { - private final IUserModelRepository userModelRepository; - private final IUserLoginItemRepository userLoginItemRepository; - private final IUserRefreshTokenMappingRepository userRefreshTokenMappingRepository; +public class RdsJpaUserRepositoryImpl implements UserRepository { + private final RdsJpaUserModelRepository userModelRepository; + private final RdsJpaUserLoginItemRepository userLoginItemRepository; + private final RdsJpaUserRefreshTokenMappingRepository userRefreshTokenMappingRepository; - public UserRepositoryImpl(IUserModelRepository userModelRepository, - IUserLoginItemRepository userLoginItemRepository, - IUserRefreshTokenMappingRepository userRefreshTokenMappingRepository) { + public RdsJpaUserRepositoryImpl(RdsJpaUserModelRepository userModelRepository, + RdsJpaUserLoginItemRepository userLoginItemRepository, + RdsJpaUserRefreshTokenMappingRepository userRefreshTokenMappingRepository) { this.userModelRepository = userModelRepository; this.userLoginItemRepository = userLoginItemRepository; this.userRefreshTokenMappingRepository = userRefreshTokenMappingRepository; @@ -31,16 +31,7 @@ public void save(User user, UserLoginItem userLoginItem) { userLoginItemRepository.save(userLoginItem); } - @Override - public void save(User user) { - userModelRepository.save(user); - } - - @Override - public void saveLoginItem(UserLoginItem loginItem) { - userLoginItemRepository.save(loginItem); - } - + @Nonnull @Override public Pair getByLoginIdentifier(String loginIdentifier) { UserLoginItem userLoginItem = userLoginItemRepository.getByLoginIdentifier(loginIdentifier); @@ -83,6 +74,7 @@ public boolean verifyRefreshToken(@Nonnull User user, String refreshToken) throw return false; } + @Nonnull @Override public Pair getByUserSub(String userSub) { UserLoginItem userLoginItem = userLoginItemRepository.getByUserSub(userSub); diff --git a/src/main/java/org/clevercastle/authforge/token/TokenService.java b/src/main/java/org/clevercastle/authforge/token/TokenService.java index f79cf48..8bce300 100644 --- a/src/main/java/org/clevercastle/authforge/token/TokenService.java +++ b/src/main/java/org/clevercastle/authforge/token/TokenService.java @@ -1,9 +1,9 @@ package org.clevercastle.authforge.token; -import org.clevercastle.authforge.CastleException; +import org.clevercastle.authforge.exception.CastleException; import org.clevercastle.authforge.TokenHolder; -import org.clevercastle.authforge.User; -import org.clevercastle.authforge.UserLoginItem; +import org.clevercastle.authforge.entity.User; +import org.clevercastle.authforge.entity.UserLoginItem; public interface TokenService { enum Scope { diff --git a/src/main/java/org/clevercastle/authforge/token/jwt/JwtTokenService.java b/src/main/java/org/clevercastle/authforge/token/jwt/JwtTokenService.java index 769430d..e0b8d92 100644 --- a/src/main/java/org/clevercastle/authforge/token/jwt/JwtTokenService.java +++ b/src/main/java/org/clevercastle/authforge/token/jwt/JwtTokenService.java @@ -1,11 +1,11 @@ package org.clevercastle.authforge.token.jwt; import com.auth0.jwt.algorithms.Algorithm; -import org.clevercastle.authforge.CastleException; +import org.clevercastle.authforge.exception.CastleException; import org.clevercastle.authforge.Config; import org.clevercastle.authforge.TokenHolder; -import org.clevercastle.authforge.User; -import org.clevercastle.authforge.UserLoginItem; +import org.clevercastle.authforge.entity.User; +import org.clevercastle.authforge.entity.UserLoginItem; import org.clevercastle.authforge.token.TokenService; import org.clevercastle.authforge.util.JsonUtil; import org.clevercastle.authforge.util.TimeUtils; diff --git a/src/main/java/org/clevercastle/authforge/util/CryptoUtil.java b/src/main/java/org/clevercastle/authforge/util/CryptoUtil.java index 47fd79e..e020e81 100644 --- a/src/main/java/org/clevercastle/authforge/util/CryptoUtil.java +++ b/src/main/java/org/clevercastle/authforge/util/CryptoUtil.java @@ -1,6 +1,6 @@ package org.clevercastle.authforge.util; -import org.clevercastle.authforge.CastleException; +import org.clevercastle.authforge.exception.CastleException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/org/clevercastle/authforge/verification/AbstractVerificationService.java b/src/main/java/org/clevercastle/authforge/verification/AbstractVerificationService.java index 60ba7b2..38d21da 100644 --- a/src/main/java/org/clevercastle/authforge/verification/AbstractVerificationService.java +++ b/src/main/java/org/clevercastle/authforge/verification/AbstractVerificationService.java @@ -1,16 +1,18 @@ package org.clevercastle.authforge.verification; import org.apache.commons.lang3.StringUtils; -import org.clevercastle.authforge.CastleException; -import org.clevercastle.authforge.UserLoginItem; -import org.clevercastle.authforge.repository.rdsjpa.IUserLoginItemRepository; +import org.apache.commons.lang3.tuple.Pair; +import org.clevercastle.authforge.exception.CastleException; +import org.clevercastle.authforge.entity.User; +import org.clevercastle.authforge.entity.UserLoginItem; +import org.clevercastle.authforge.repository.UserRepository; import org.clevercastle.authforge.util.TimeUtils; public abstract class AbstractVerificationService implements VerificationService { - private final IUserLoginItemRepository userLoginItemRepository; + private final UserRepository userRepository; - protected AbstractVerificationService(IUserLoginItemRepository userLoginItemRepository) { - this.userLoginItemRepository = userLoginItemRepository; + protected AbstractVerificationService(UserRepository userRepository) { + this.userRepository = userRepository; } @Override @@ -18,7 +20,11 @@ public void verify(String loginIdentifier, String verificationCode) throws Castl if (StringUtils.isBlank(verificationCode)) { throw new CastleException(); } - UserLoginItem userLoginItem = userLoginItemRepository.getByLoginIdentifier(loginIdentifier); + Pair pair = userRepository.getByLoginIdentifier(loginIdentifier); + UserLoginItem userLoginItem = pair.getRight(); + if (userLoginItem == null) { + throw new CastleException(); + } if (StringUtils.isBlank(verificationCode)) { throw new CastleException(); } @@ -29,7 +35,7 @@ public void verify(String loginIdentifier, String verificationCode) throws Castl throw new CastleException(); } if (verificationCode.equals(userLoginItem.getVerificationCode())) { - userLoginItemRepository.confirmLoginItem(loginIdentifier); + userRepository.confirmLoginItem(loginIdentifier); } } } diff --git a/src/main/java/org/clevercastle/authforge/verification/DummyVerificationService.java b/src/main/java/org/clevercastle/authforge/verification/DummyVerificationService.java index 73bc994..2f12575 100644 --- a/src/main/java/org/clevercastle/authforge/verification/DummyVerificationService.java +++ b/src/main/java/org/clevercastle/authforge/verification/DummyVerificationService.java @@ -1,15 +1,15 @@ package org.clevercastle.authforge.verification; -import org.clevercastle.authforge.CastleException; -import org.clevercastle.authforge.repository.rdsjpa.IUserLoginItemRepository; +import org.clevercastle.authforge.exception.CastleException; +import org.clevercastle.authforge.repository.UserRepository; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class DummyVerificationService extends AbstractVerificationService { private final Logger logger = LoggerFactory.getLogger(DummyVerificationService.class); - public DummyVerificationService(IUserLoginItemRepository userLoginItemRepository) { - super(userLoginItemRepository); + public DummyVerificationService(UserRepository userRepository) { + super(userRepository); } @Override diff --git a/src/main/java/org/clevercastle/authforge/verification/VerificationService.java b/src/main/java/org/clevercastle/authforge/verification/VerificationService.java index e68f8f0..01ba06c 100644 --- a/src/main/java/org/clevercastle/authforge/verification/VerificationService.java +++ b/src/main/java/org/clevercastle/authforge/verification/VerificationService.java @@ -1,6 +1,6 @@ package org.clevercastle.authforge.verification; -import org.clevercastle.authforge.CastleException; +import org.clevercastle.authforge.exception.CastleException; public interface VerificationService { void sendVerificationCode(String loginIdentifier, String verificationCode) throws CastleException; diff --git a/src/test/java/org/clevercastle/authforge/oauth2/github/GithubOauth2ExchangeServiceTest.java b/src/test/java/org/clevercastle/authforge/oauth2/github/GithubOauth2ExchangeServiceTest.java index bddeb29..19e5280 100644 --- a/src/test/java/org/clevercastle/authforge/oauth2/github/GithubOauth2ExchangeServiceTest.java +++ b/src/test/java/org/clevercastle/authforge/oauth2/github/GithubOauth2ExchangeServiceTest.java @@ -5,7 +5,7 @@ import com.nimbusds.oauth2.sdk.http.HTTPRequest; import com.nimbusds.oauth2.sdk.http.HTTPResponse; import com.nimbusds.oauth2.sdk.token.AccessTokenType; -import org.clevercastle.authforge.CastleException; +import org.clevercastle.authforge.exception.CastleException; import org.clevercastle.authforge.http.HttpRequest; import org.clevercastle.authforge.http.HttpResponse; import org.clevercastle.authforge.http.IHttpClient; diff --git a/src/test/java/org/clevercastle/authforge/util/CryptoUtilTest.java b/src/test/java/org/clevercastle/authforge/util/CryptoUtilTest.java index 076180a..741a956 100644 --- a/src/test/java/org/clevercastle/authforge/util/CryptoUtilTest.java +++ b/src/test/java/org/clevercastle/authforge/util/CryptoUtilTest.java @@ -1,6 +1,6 @@ package org.clevercastle.authforge.util; -import org.clevercastle.authforge.CastleException; +import org.clevercastle.authforge.exception.CastleException; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest;