diff --git a/.gitignore b/.gitignore
index cd38e2e7b..1d2a5bee7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,5 +5,6 @@ target
logs
attachments
*.patch
-
+*.evn
+.evn
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 000000000..093c983dc
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,20 @@
+# Stage 1: build with Maven and OpenJDK 17
+FROM maven:3.9.5-eclipse-temurin-17 AS build
+
+WORKDIR /app
+
+COPY pom.xml .
+RUN mvn dependency:go-offline
+
+COPY src ./src
+
+RUN mvn clean package -DskipTests
+
+# Stage 2: runtime image with OpenJDK 17
+FROM eclipse-temurin:17-jdk
+
+WORKDIR /app
+
+COPY --from=build /app/target/*.jar app.jar
+
+ENTRYPOINT ["java", "-jar", "app.jar"]
\ No newline at end of file
diff --git a/config/nginx.conf b/config/nginx.conf
index 82b9e234d..df671b866 100644
--- a/config/nginx.conf
+++ b/config/nginx.conf
@@ -35,6 +35,6 @@ server {
proxy_connect_timeout 150s;
}
location / {
- try_files /view/404.html = 404;
+ try_files /view/404.html : 404;
}
}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index f6c152c68..cfb247a1a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,6 +28,11 @@
org.springframework.boot
spring-boot-starter-data-jpa
+
+ com.h2database
+ h2
+ test
+
org.springframework.boot
spring-boot-starter-security
diff --git a/resources/view/login.html b/resources/view/login.html
index 8765ca8ff..c9e0f389d 100644
--- a/resources/view/login.html
+++ b/resources/view/login.html
@@ -48,14 +48,8 @@ Sign in
type="button">
-
-
-
-
-
-
+
+
diff --git a/resources/view/unauth/register.html b/resources/view/unauth/register.html
index 2ba955045..399c0aa8a 100644
--- a/resources/view/unauth/register.html
+++ b/resources/view/unauth/register.html
@@ -77,14 +77,8 @@ Registration
type="button">
-
-
-
-
-
-
+
+
diff --git a/src/main/java/com/javarush/jira/JiraRushApplication.java b/src/main/java/com/javarush/jira/JiraRushApplication.java
index 58be49fe7..1b28fe91e 100644
--- a/src/main/java/com/javarush/jira/JiraRushApplication.java
+++ b/src/main/java/com/javarush/jira/JiraRushApplication.java
@@ -11,7 +11,8 @@
@EnableCaching
public class JiraRushApplication {
- public static void main(String[] args) {
+ public static void main(String[] args)
+ {
SpringApplication.run(JiraRushApplication.class, args);
}
}
diff --git a/src/main/java/com/javarush/jira/bugtracking/attachment/FileUtil.java b/src/main/java/com/javarush/jira/bugtracking/attachment/FileUtil.java
index 6cffbe175..4039c2668 100644
--- a/src/main/java/com/javarush/jira/bugtracking/attachment/FileUtil.java
+++ b/src/main/java/com/javarush/jira/bugtracking/attachment/FileUtil.java
@@ -15,6 +15,7 @@
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
+import java.nio.file.StandardOpenOption;
@UtilityClass
public class FileUtil {
@@ -24,15 +25,13 @@ public static void upload(MultipartFile multipartFile, String directoryPath, Str
if (multipartFile.isEmpty()) {
throw new IllegalRequestDataException("Select a file to upload.");
}
-
- File dir = new File(directoryPath);
- if (dir.exists() || dir.mkdirs()) {
- File file = new File(directoryPath + fileName);
- try (OutputStream outStream = new FileOutputStream(file)) {
- outStream.write(multipartFile.getBytes());
- } catch (IOException ex) {
- throw new IllegalRequestDataException("Failed to upload file" + multipartFile.getOriginalFilename());
- }
+ Path dirPath = Paths.get(directoryPath);
+ try {
+ Files.createDirectories(dirPath);
+ Path filePath = dirPath.resolve(fileName);
+ Files.write(filePath, multipartFile.getBytes(), StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);
+ } catch (IOException ex) {
+ throw new IllegalRequestDataException("Failed to upload file: " + multipartFile.getOriginalFilename());
}
}
diff --git a/src/main/java/com/javarush/jira/common/internal/config/RestAuthenticationEntryPoint.java b/src/main/java/com/javarush/jira/common/internal/config/RestAuthenticationEntryPoint.java
index 85a134319..70c4f684a 100644
--- a/src/main/java/com/javarush/jira/common/internal/config/RestAuthenticationEntryPoint.java
+++ b/src/main/java/com/javarush/jira/common/internal/config/RestAuthenticationEntryPoint.java
@@ -13,14 +13,20 @@
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
@Component
-@AllArgsConstructor
public class RestAuthenticationEntryPoint implements AuthenticationEntryPoint {
- @Qualifier("handlerExceptionResolver")
private final HandlerExceptionResolver resolver;
private final RequestMappingHandlerMapping mapping;
+ public RestAuthenticationEntryPoint(
+ @Qualifier("handlerExceptionResolver") HandlerExceptionResolver resolver,
+ RequestMappingHandlerMapping mapping) {
+ this.resolver = resolver;
+ this.mapping = mapping;
+ }
+
@Override
- public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws ServletException {
+ public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException)
+ throws ServletException {
try {
HandlerExecutionChain handler = mapping.getHandler(request);
resolver.resolveException(request, response, handler == null ? null : handler.getHandler(), authException);
@@ -28,4 +34,4 @@ public void commence(HttpServletRequest request, HttpServletResponse response, A
throw new ServletException(e);
}
}
-}
+}
\ No newline at end of file
diff --git a/src/main/java/com/javarush/jira/login/internal/UserRepository.java b/src/main/java/com/javarush/jira/login/internal/UserRepository.java
index 3ce3abe94..4a85acd9c 100644
--- a/src/main/java/com/javarush/jira/login/internal/UserRepository.java
+++ b/src/main/java/com/javarush/jira/login/internal/UserRepository.java
@@ -3,6 +3,7 @@
import com.javarush.jira.common.BaseRepository;
import com.javarush.jira.common.error.NotFoundException;
import com.javarush.jira.login.User;
+import com.javarush.jira.login.AuthUser;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
diff --git a/src/main/java/com/javarush/jira/login/internal/sociallogin/handler/VkOAuth2UserDataHandler.java b/src/main/java/com/javarush/jira/login/internal/sociallogin/handler/VkOAuth2UserDataHandler.java
deleted file mode 100644
index e8e05be05..000000000
--- a/src/main/java/com/javarush/jira/login/internal/sociallogin/handler/VkOAuth2UserDataHandler.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.javarush.jira.login.internal.sociallogin.handler;
-
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-import java.util.Map;
-
-@Component("vk")
-public class VkOAuth2UserDataHandler implements OAuth2UserDataHandler {
- @Override
- public String getFirstName(OAuth2UserData oAuth2UserData) {
- return getAttribute(oAuth2UserData, "first_name");
- }
-
- @Override
- public String getLastName(OAuth2UserData oAuth2UserData) {
- return getAttribute(oAuth2UserData, "last_name");
- }
-
- @Override
- public String getEmail(OAuth2UserData oAuth2UserData) {
- return oAuth2UserData.getData("email");
- }
-
- private String getAttribute(OAuth2UserData oAuth2UserData, String name) {
- List