gitextract_3sq3ne0n/ ├── .github/ │ └── workflows/ │ └── maven.yml ├── .gitignore ├── .mvn/ │ └── wrapper/ │ ├── MavenWrapperDownloader.java │ ├── maven-wrapper.jar │ └── maven-wrapper.properties ├── 1-init.sql ├── Dockerfile ├── LICENSE ├── README.md ├── ddd_common-v1.0.0.jar ├── docker-compose-ci.yml ├── docker-compose.yml ├── mvnw ├── mvnw.cmd ├── pom.xml └── src/ ├── main/ │ ├── java/ │ │ └── com/ │ │ └── tomo/ │ │ └── mcauthentication/ │ │ ├── McAuthenticationApplication.java │ │ ├── application/ │ │ │ ├── BaseMapper.java │ │ │ ├── McAuthenticationEventHandler.java │ │ │ ├── authentication/ │ │ │ │ ├── BaseLoginCommandHandler.java │ │ │ │ ├── EmailLoginCommandHandler.java │ │ │ │ ├── FacebookLoginCommandHandler.java │ │ │ │ ├── GoogleLoginCommandHandler.java │ │ │ │ ├── LogoutCommandHandler.java │ │ │ │ ├── SessionAuthenticationCommandHandler.java │ │ │ │ ├── command/ │ │ │ │ │ ├── BaseLoginCommand.java │ │ │ │ │ ├── EmailLoginCommand.java │ │ │ │ │ ├── FacebookLoginCommand.java │ │ │ │ │ ├── GoogleLoginCommand.java │ │ │ │ │ ├── LogoutCommand.java │ │ │ │ │ └── SessionAuthenticationCommand.java │ │ │ │ └── dto/ │ │ │ │ ├── RecoveryPasswordDto.java │ │ │ │ └── SessionDto.java │ │ │ ├── configuration/ │ │ │ │ ├── AbstractVoidyCommandHandler.java │ │ │ │ ├── CommandHandler.java │ │ │ │ ├── QueryHandler.java │ │ │ │ └── RequestHandler.java │ │ │ ├── contracts/ │ │ │ │ ├── BaseCommand.java │ │ │ │ ├── BaseQuery.java │ │ │ │ ├── BaseRequest.java │ │ │ │ ├── Command.java │ │ │ │ ├── Identifiable.java │ │ │ │ ├── McAuthenticationModule.java │ │ │ │ ├── Query.java │ │ │ │ ├── Request.java │ │ │ │ ├── Response.java │ │ │ │ ├── Voidy.java │ │ │ │ └── security/ │ │ │ │ ├── AbstractAuthenticateCommand.java │ │ │ │ ├── AbstractAuthenticateQuery.java │ │ │ │ ├── AbstractAuthenticateRequest.java │ │ │ │ ├── AbstractAuthorizeCommand.java │ │ │ │ ├── AbstractAuthorizeQuery.java │ │ │ │ ├── AbstractAuthorizeRequest.java │ │ │ │ ├── Authenticate.java │ │ │ │ └── Authorize.java │ │ │ ├── recovery/ │ │ │ │ ├── CreatePasswordRecoveryCodeCommandHandler.java │ │ │ │ ├── GetUserRegistrationWithRecoveryCodeQueryHandler.java │ │ │ │ ├── PasswordRecoveryCodeCreatedEventHandler.java │ │ │ │ ├── SendPasswordRecoveryEmailCommandHandler.java │ │ │ │ ├── UpdatePasswordWithRecoveryCodeCommandHandler.java │ │ │ │ ├── command/ │ │ │ │ │ ├── CreatePasswordRecoveryCodeCommand.java │ │ │ │ │ ├── SendPasswordRecoveryEmailCommand.java │ │ │ │ │ └── UpdatePasswordWithRecoveryCodeCommand.java │ │ │ │ └── dto/ │ │ │ │ └── GetUserRegistrationWithRecoveryCodeQuery.java │ │ │ ├── registration/ │ │ │ │ ├── ChangePasswordCommandHandler.java │ │ │ │ ├── ConfirmUserRegistrationCommandHandler.java │ │ │ │ ├── GetUserRegistrationQueryHandler.java │ │ │ │ ├── NewUserRegisteredEventHandler.java │ │ │ │ ├── RegisterNewUserCommandHandler.java │ │ │ │ ├── SendRegistrationConfirmationEmailCommandHandler.java │ │ │ │ ├── command/ │ │ │ │ │ ├── ChangePasswordCommand.java │ │ │ │ │ ├── ConfirmUserRegistrationCommand.java │ │ │ │ │ ├── RegisterNewUserCommand.java │ │ │ │ │ └── SendRegistrationConfirmationEmailCommand.java │ │ │ │ ├── dto/ │ │ │ │ │ └── UserRegistrationDto.java │ │ │ │ └── query/ │ │ │ │ └── GetUserRegistrationQuery.java │ │ │ └── users/ │ │ │ ├── ChangeUserDetailsCommandHandler.java │ │ │ ├── GetUserQueryHandler.java │ │ │ ├── command/ │ │ │ │ └── ChangeUserDetailsCommand.java │ │ │ ├── dto/ │ │ │ │ └── BaseUserDto.java │ │ │ └── query/ │ │ │ └── GetUserQuery.java │ │ ├── domain/ │ │ │ ├── DomainRegistry.java │ │ │ ├── EncryptionService.java │ │ │ ├── oauth2/ │ │ │ │ ├── OAuth2Authentication.java │ │ │ │ ├── OAuth2Principal.java │ │ │ │ └── OAuth2Service.java │ │ │ ├── registration/ │ │ │ │ ├── EmailAuthenticationService.java │ │ │ │ ├── PasswordService.java │ │ │ │ ├── UserRegistration.java │ │ │ │ ├── UserRegistrationId.java │ │ │ │ ├── UserRegistrationRepository.java │ │ │ │ ├── UserRegistrationStatus.java │ │ │ │ ├── UsersCounter.java │ │ │ │ ├── events/ │ │ │ │ │ ├── PasswordChanged.java │ │ │ │ │ ├── PasswordRecovered.java │ │ │ │ │ ├── PasswordRecoveryCodeCreated.java │ │ │ │ │ ├── UserRegistrationConfirmed.java │ │ │ │ │ └── UserRegistrationRequested.java │ │ │ │ └── rules/ │ │ │ │ ├── PasswordRecoveryCodeShouldBeExpiredOrNull.java │ │ │ │ ├── PasswordRecoveryCodeShouldNotExpired.java │ │ │ │ ├── PasswordsMustMatch.java │ │ │ │ ├── RecoveryCodeMustMatch.java │ │ │ │ ├── UserRegistrationCannotBeConfirmedAfterExpiration.java │ │ │ │ ├── UserRegistrationCannotBeConfirmedMoreThanOnce.java │ │ │ │ ├── UserRegistrationMustBeConfirmed.java │ │ │ │ └── UserRegistrationMustBeUnique.java │ │ │ ├── session/ │ │ │ │ ├── JwtTokenProvider.java │ │ │ │ ├── Session.java │ │ │ │ ├── SessionAuthenticationService.java │ │ │ │ ├── SessionId.java │ │ │ │ ├── SessionRepository.java │ │ │ │ ├── TokenProvider.java │ │ │ │ ├── events/ │ │ │ │ │ └── SessionCreated.java │ │ │ │ └── rule/ │ │ │ │ └── SessionCannotBeExpiredWhenRefreshTokenIsMissing.java │ │ │ └── users/ │ │ │ ├── EmailLogin.java │ │ │ ├── User.java │ │ │ ├── UserId.java │ │ │ ├── UserRepository.java │ │ │ ├── events/ │ │ │ │ ├── UserCreated.java │ │ │ │ └── UserNameChanged.java │ │ │ └── rules/ │ │ │ └── UserEmailMustBeUnique.java │ │ └── infrastructure/ │ │ ├── McAuthenticationModuleExecutor.java │ │ ├── http/ │ │ │ └── oauth2/ │ │ │ ├── AbstractOAuth2Authentication.java │ │ │ ├── CustomOAuth2UserService.java │ │ │ ├── FacebookOAuth2Authentication.java │ │ │ ├── GoogleOAuth2Authentication.java │ │ │ └── user/ │ │ │ ├── FacebookOAuth2UserInfo.java │ │ │ ├── GoogleOAuth2UserInfo.java │ │ │ ├── OAuth2UserInfo.java │ │ │ └── OAuth2UserInfoFactory.java │ │ ├── persistence/ │ │ │ ├── BaseJpaAdapter.java │ │ │ ├── SessionJpaRepository.java │ │ │ ├── SessionRepositoryJpaAdapter.java │ │ │ ├── UserJpaRepository.java │ │ │ ├── UserRegistrationJpaRepository.java │ │ │ ├── UserRegistrationJpaRepositoryAdapter.java │ │ │ └── UserRepositoryJpaAdapter.java │ │ ├── processing/ │ │ │ ├── ErrorCommandHandlerDecorator.java │ │ │ ├── LoggingCommandHandlerDecorator.java │ │ │ ├── LoggingQueryHandlerDecorator.java │ │ │ ├── PipelineBuilder.java │ │ │ └── builder/ │ │ │ ├── AbstractPipelineBuilder.java │ │ │ ├── CommandHandlerPipelineBuilder.java │ │ │ └── QueryHandlerPipelineBuilder.java │ │ ├── service/ │ │ │ └── MD5EncryptionService.java │ │ ├── springboot/ │ │ │ ├── configuration/ │ │ │ │ ├── AppConfig.java │ │ │ │ ├── AppProperties.java │ │ │ │ ├── GUIProperties.java │ │ │ │ ├── MessageProperties.java │ │ │ │ ├── SecurityConfig.java │ │ │ │ ├── SwaggerConfig.java │ │ │ │ └── SwaggerUiWebMvcConfigurer.java │ │ │ ├── controller/ │ │ │ │ ├── AbstractController.java │ │ │ │ ├── AuthenticationController.java │ │ │ │ ├── RegistrationController.java │ │ │ │ ├── RestApiRoutes.java │ │ │ │ └── UserController.java │ │ │ ├── filter/ │ │ │ │ └── TokenAuthenticationFilter.java │ │ │ └── security/ │ │ │ ├── CurrentUser.java │ │ │ ├── OAuth2AuthenticationFailureHandler.java │ │ │ ├── OAuth2AuthenticationSuccessHandler.java │ │ │ ├── UserAuthPrincipal.java │ │ │ └── UserAuthToken.java │ │ └── util/ │ │ └── CookieUtils.java │ └── resources/ │ ├── application.yml │ ├── db/ │ │ └── migration/ │ │ └── V2022_02_02_1124__initial_structure.sql │ └── repo/ │ └── org/ │ └── tomo/ │ └── ddd_common/ │ ├── 1.0.0/ │ │ ├── ddd_common-1.0.0.jar │ │ ├── ddd_common-1.0.0.jar.md5 │ │ ├── ddd_common-1.0.0.jar.sha1 │ │ ├── ddd_common-1.0.0.pom │ │ ├── ddd_common-1.0.0.pom.md5 │ │ └── ddd_common-1.0.0.pom.sha1 │ ├── maven-metadata.xml │ ├── maven-metadata.xml.md5 │ └── maven-metadata.xml.sha1 └── test/ ├── java/ │ └── com/ │ └── tomo/ │ └── mcauthentication/ │ ├── integration/ │ │ ├── BaseIntegrationTest.java │ │ └── application/ │ │ ├── AbstractApplicationServiceTest.java │ │ ├── authentication/ │ │ │ ├── EmailLoginCommandHandlerTest.java │ │ │ ├── FacebookLoginCommandHandlerTest.java │ │ │ ├── GoogleLoginCommandHandlerTest.java │ │ │ ├── LogoutCommandHandlerTest.java │ │ │ └── SessionAuthenticationCommandHandlerTest.java │ │ ├── recovery/ │ │ │ ├── CreatePasswordRecoveryCodeCommandHandlerTest.java │ │ │ ├── GetUserRegistrationWithRecoveryCodeQueryHandlerTest.java │ │ │ └── UpdatePasswordWithRecoveryCodeCommandHandlerTest.java │ │ ├── registration/ │ │ │ ├── ChangePasswordCommandHandlerTest.java │ │ │ ├── ConfirmUserRegistrationCommandHandlerTest.java │ │ │ └── RegisterNewUserCommandHandlerTest.java │ │ └── users/ │ │ ├── ChangeUserDetailsCommandHandlerTest.java │ │ └── GetUserQueryHandlerTest.java │ ├── smoke/ │ │ └── McAuthenticationApplicationSmokeTest.java │ ├── testdata/ │ │ ├── CommandObjectMother.java │ │ └── StaticFields.java │ ├── unit/ │ │ ├── application/ │ │ │ └── registration/ │ │ │ └── UserRegistrationCommandHandlerTest.java │ │ └── domain/ │ │ ├── AbstractUnitTest.java │ │ ├── registration/ │ │ │ ├── UserRegistrationTest.java │ │ │ └── rules/ │ │ │ ├── PasswordRecoveryCodeShouldBeExpiredOrNullTest.java │ │ │ ├── PasswordRecoveryCodeShouldNotExpiredTest.java │ │ │ ├── PasswordsMustMatchTest.java │ │ │ ├── RecoveryCodeMustMatchTest.java │ │ │ ├── UserRegistrationCannotBeConfirmedAfterExpirationTest.java │ │ │ ├── UserRegistrationCannotBeConfirmedMoreThanOnceTest.java │ │ │ ├── UserRegistrationMustBeConfirmedTest.java │ │ │ └── UserRegistrationMustBeUniqueTest.java │ │ ├── session/ │ │ │ └── rules/ │ │ │ └── SessionCannotBeExpiredWhenRefreshTokenIsMissingTest.java │ │ └── user/ │ │ └── rules/ │ │ └── UserEmailMustBeUniqueTest.java │ └── weblayer/ │ ├── BaseWebLayerTest.java │ └── springboot/ │ └── controller/ │ ├── AbstractControllerTest.java │ └── RegistrationControllerTest.java └── resources/ └── application-ci.yml