diff --git a/Dockerfile b/Dockerfile
index 43b9ddc..a3c7ef3 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,4 +1,7 @@
FROM sivaprakash123/openjdk:17-slim-debian11
+
+RUN useradd -ms /bin/bash appuser
+
# Install necessary dependencies
RUN apt-get update \
&& apt-get install -y \
@@ -12,6 +15,12 @@ RUN apt-get update \
xz-utils \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
+
COPY cb-ext-userprofile-service-1.0-SNAPSHOT.jar /opt/
+
+RUN chown -R appuser:appuser /opt
+USER appuser
+WORKDIR /opt
+
#HEALTHCHECK --interval=30s --timeout=30s CMD curl --fail http://localhost:7001/actuator/health || exit 1
CMD ["/bin/bash", "-c", "java -XX:+PrintFlagsFinal $JAVA_OPTIONS -XX:+UnlockExperimentalVMOptions -jar /opt/cb-ext-userprofile-service-1.0-SNAPSHOT.jar"]
diff --git a/pom.xml b/pom.xml
index 7c06953..9f683ca 100644
--- a/pom.xml
+++ b/pom.xml
@@ -192,6 +192,11 @@
5.9.2
test
+
+ com.auth0
+ java-jwt
+ 4.4.0
+
org.junit.jupiter
junit-jupiter-api
diff --git a/src/main/java/com/igot/cb/profile/controller/AchievementController.java b/src/main/java/com/igot/cb/profile/controller/AchievementController.java
new file mode 100644
index 0000000..c0e8a5f
--- /dev/null
+++ b/src/main/java/com/igot/cb/profile/controller/AchievementController.java
@@ -0,0 +1,71 @@
+package com.igot.cb.profile.controller;
+
+import com.igot.cb.profile.service.AchievementService;
+import com.igot.cb.transactional.elasticsearch.dto.SearchCriteria;
+import com.igot.cb.util.ApiResponse;
+import com.igot.cb.util.Constants;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+@RestController
+@RequestMapping("/learner/achievement")
+public class AchievementController {
+
+ @Autowired
+ private AchievementService achievementService;
+
+ @PostMapping("/create")
+ public ResponseEntity> createLearnerAchievement(
+ @RequestHeader(value = Constants.X_AUTH_TOKEN, required = true) String authToken,
+ @RequestHeader(value = Constants.X_AUTH_USER_ORG_ID, required = true) String rootOrgId,
+ @RequestBody Map request) throws Exception {
+ ApiResponse response = achievementService.createLearnerAchievement(request, authToken, rootOrgId);
+ return new ResponseEntity<>(response, response.getResponseCode());
+ }
+
+ @PutMapping("/update")
+ public ResponseEntity> updateLearnerAchievement(
+ @RequestHeader(value = Constants.X_AUTH_TOKEN, required = true) String authToken,
+ @RequestHeader(value = Constants.X_AUTH_USER_ORG_ID, required = true) String rootOrgId,
+ @RequestBody Map request) throws Exception {
+ ApiResponse response = achievementService.updateLearnerAchievement(request, authToken, rootOrgId);
+ return new ResponseEntity<>(response, response.getResponseCode());
+ }
+
+ @GetMapping("/read/{achievementId}")
+ public ResponseEntity