Skip to content

Commit b15dbd8

Browse files
controller changes
1 parent 291cfe8 commit b15dbd8

File tree

9 files changed

+42
-11
lines changed

9 files changed

+42
-11
lines changed

src/main/java/com/example/quizapp/QuizApp/Services/SessionService.java

+3
Original file line numberDiff line numberDiff line change
@@ -216,3 +216,6 @@ public void deleteSession(int sessionId) {
216216
sessionDAO.deleteById(sessionId);
217217
}
218218
}
219+
220+
221+

src/main/java/com/example/quizapp/QuizApp/controller/SessionController.java

+8
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package com.example.quizapp.QuizApp.controller;
22

33
import com.example.quizapp.QuizApp.Services.SessionService;
4+
import com.example.quizapp.QuizApp.Services.UserService;
45
import com.example.quizapp.QuizApp.entity.Session;
56
import com.example.quizapp.QuizApp.model.Response;
67
import com.example.quizapp.QuizApp.model.SessionDTO;
78
import com.example.quizapp.QuizApp.model.SessionResponse;
89
import com.example.quizapp.QuizApp.model.SessionResult;
10+
import com.example.quizapp.QuizApp.security.JwtAuthenticationFilter;
911
import org.springframework.beans.factory.annotation.Autowired;
1012
import org.springframework.data.relational.core.sql.In;
1113
import org.springframework.http.HttpStatus;
@@ -21,10 +23,15 @@ public class SessionController {
2123
@Autowired
2224
SessionService sessionService;
2325
public record Message(String sessionId,String message){}
26+
@Autowired
27+
UserService userService;
2428

29+
@Autowired
30+
JwtAuthenticationFilter jwtAuthenticationFilter;
2531

2632
@PostMapping("/createSession")
2733
public ResponseEntity<Message> createSession(@RequestBody SessionDTO session){
34+
session.setUserId(userService.getUserByUserName(jwtAuthenticationFilter.getUserNameByToken()).getId());
2835
SessionDTO session1=sessionService.createSession(session);
2936
if(session1!=null){
3037
return new ResponseEntity<>(new Message(session1.getSessionId().toString(),"Session Created Successfully"), HttpStatus.OK);
@@ -39,6 +46,7 @@ public List<SessionDTO> sessionList(@RequestParam(value = "sessionId",defaultVal
3946

4047
@PostMapping("/sessionResponse")
4148
public ResponseEntity<SessionResult> submitResponse(@RequestBody SessionResponse sessionResponse){
49+
sessionResponse.setUserId(userService.getUserByUserName(jwtAuthenticationFilter.getUserNameByToken()).getId());
4250
SessionResult sessionResult=sessionService.submitResponse(sessionResponse);
4351
if(sessionResult!=null){
4452
return new ResponseEntity<>(sessionResult,HttpStatus.OK);

src/main/java/com/example/quizapp/QuizApp/controller/UserController.java

+9-5
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import com.example.quizapp.QuizApp.events.RegistrationCompleteEvent;
88
import com.example.quizapp.QuizApp.model.*;
9+
import com.example.quizapp.QuizApp.security.JwtAuthenticationFilter;
910
import com.example.quizapp.QuizApp.security.JwtHelper;
1011
import com.fasterxml.jackson.core.JsonProcessingException;
1112
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -44,17 +45,20 @@ public class UserController {
4445

4546
@Autowired
4647
private AuthenticationManager manager;
48+
49+
50+
@Autowired
51+
JwtAuthenticationFilter jwtAuthenticationFilter;
4752
@Autowired
4853
private JwtHelper helper;
4954
public record Message(String userId,String message){}
5055
@Autowired
5156
CloudinaryService cloudinaryService;
5257
@PostMapping("/response")
53-
public Result evaluateQuiz(@RequestBody QuizResponse quizResponse){
54-
if(quizResponse==null){
55-
return null;
56-
}
57-
return userService.evaluateQuiz(quizResponse);
58+
public ResponseEntity<Result> evaluateQuiz(@RequestBody QuizResponse quizResponse){
59+
60+
quizResponse.setUserId(userService.getUserByUserName(jwtAuthenticationFilter.getUserNameByToken()).getId());
61+
return new ResponseEntity<>(userService.evaluateQuiz(quizResponse),HttpStatus.OK);
5862
}
5963
@GetMapping("/user/{id}")
6064
public UserDTO getUser(@PathVariable Integer id){

src/main/java/com/example/quizapp/QuizApp/exceptions/GlobalExceptionHandler.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public ResponseEntity<ErrorMessage> customException(CustomException exception,
2727
@ExceptionHandler(BadRequest.class)
2828
public ResponseEntity<ErrorMessage> badRequest(BadRequest exception,
2929
WebRequest request) {
30-
ErrorMessage message = new ErrorMessage(HttpStatus.NOT_FOUND,
30+
ErrorMessage message = new ErrorMessage(HttpStatus.BAD_REQUEST,
3131
exception.getMessage());
3232

3333
return ResponseEntity.status(HttpStatus.BAD_REQUEST)

src/main/java/com/example/quizapp/QuizApp/model/QuizResponse.java

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.example.quizapp.QuizApp.model;
22

3+
import com.fasterxml.jackson.annotation.JsonIgnore;
34
import lombok.AllArgsConstructor;
45
import lombok.Getter;
56
import lombok.NoArgsConstructor;
@@ -15,6 +16,7 @@ public class QuizResponse {
1516
List<Response> responseList;
1617
int totalQuestion;
1718
String category;
19+
@JsonIgnore
1820
Integer userId;
1921

2022
}

src/main/java/com/example/quizapp/QuizApp/model/SessionDTO.java

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.example.quizapp.QuizApp.model;
22

33
import com.example.quizapp.QuizApp.entity.SessionUser;
4+
import com.fasterxml.jackson.annotation.JsonProperty;
45
import lombok.Data;
56

67
import java.util.List;
@@ -10,6 +11,7 @@ public class SessionDTO {
1011
String dateAndTime;
1112
Integer delayDuration;
1213
Integer duration;
14+
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
1315
Integer userId;
1416
String sessionTitle;
1517
List<QuestionDTO> sessionQuestionList;
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package com.example.quizapp.QuizApp.model;
22

3+
import com.fasterxml.jackson.annotation.JsonProperty;
34
import lombok.Data;
45

56
import java.util.List;
67
@Data
78
public class SessionResponse {
89
List<Response> responseList;
910
Integer sessionId;
11+
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
1012
Integer userId;
1113
String sessionUserId;
1214
}

src/main/java/com/example/quizapp/QuizApp/security/JwtAuthenticationFilter.java

+14-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.example.quizapp.QuizApp.security;
22

33

4+
import com.example.quizapp.QuizApp.exceptions.BadRequest;
5+
import com.example.quizapp.QuizApp.model.UserDTO;
46
import io.jsonwebtoken.ExpiredJwtException;
57
import io.jsonwebtoken.MalformedJwtException;
68
import jakarta.servlet.FilterChain;
@@ -10,6 +12,7 @@
1012

1113
import lombok.extern.slf4j.Slf4j;
1214

15+
import org.modelmapper.ModelMapper;
1316
import org.springframework.beans.factory.annotation.Autowired;
1417

1518
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@@ -30,9 +33,11 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter {
3033
private JwtHelper jwtHelper;
3134

3235

36+
3337
@Autowired
3438
private UserDetailsService userDetailsService;
3539

40+
String userNameByToken;
3641
@Override
3742
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
3843
String requestHeader = request.getHeader("Authorization");
@@ -42,21 +47,21 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse
4247
String username = null;
4348
String token = null;
4449
if (requestHeader != null && requestHeader.startsWith("Bearer")) {
45-
//looking good
50+
4651
token = requestHeader.substring(7);
4752
try {
48-
4953
username = this.jwtHelper.getUsernameFromToken(token);
50-
5154
} catch (IllegalArgumentException e) {
5255
logger.info("Illegal Argument while fetching the username !!");
5356
e.printStackTrace();
5457
} catch (ExpiredJwtException e) {
5558
logger.info("Given jwt token is expired !!");
5659
e.printStackTrace();
60+
throw new BadRequest("Jwt token expired");
5761
} catch (MalformedJwtException e) {
5862
logger.info("Some changed has done in token !! Invalid Token");
5963
e.printStackTrace();
64+
throw new BadRequest("Jwt token is manipulated");
6065
} catch (Exception e) {
6166
e.printStackTrace();
6267

@@ -73,7 +78,8 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse
7378

7479

7580
//fetch user detail from username
76-
UserDetails userDetails = this.userDetailsService.loadUserByUsername(username);
81+
UserDetails userDetails= this.userDetailsService.loadUserByUsername(username);
82+
userNameByToken=userDetails.getUsername();
7783
Boolean validateToken = this.jwtHelper.validateToken(token, userDetails);
7884
if (validateToken) {
7985

@@ -93,4 +99,8 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse
9399
filterChain.doFilter(request, response);
94100

95101
}
102+
103+
public String getUserNameByToken() {
104+
return userNameByToken;
105+
}
96106
}

src/main/resources/templates/index.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ <h1>Welcome to My Portfolio</h1>
6767
<h2>Welcome to Quiz App Backend</h2>
6868
<p>Hello! I'm [Harsh Raj Srivastav], for accessing API please refer to documentation.</p>
6969
<ol>
70-
<li><a href="http://quiz-app-prod-env.eba-weahtpnc.ap-south-1.elasticbeanstalk.com/swagger-ui/index.html">Swagger Docs</a></li>
70+
<li><a href="http://52.66.242.197/swagger-ui/index.html">Swagger Docs</a></li>
7171
<li><a href="https://github.com/Harsh-Srivastav123/quizApp_backend">GitHub</a></li>
7272
</ol>
7373
</section>

0 commit comments

Comments
 (0)