Skip to content
This repository was archived by the owner on Jul 6, 2025. It is now read-only.

Commit 3cfd73b

Browse files
authored
Merge pull request #86 from Zenfulcode/patch-refactoring-registering-guest
Refactoring the guest to user convertion
2 parents 87ff823 + 3ddba17 commit 3cfd73b

5 files changed

Lines changed: 33 additions & 41 deletions

File tree

src/main/java/com/zenfulcode/commercify/commercify/controller/AuthenticationController.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import lombok.RequiredArgsConstructor;
1111
import lombok.extern.slf4j.Slf4j;
1212
import org.springframework.http.ResponseEntity;
13+
import org.springframework.security.access.prepost.PreAuthorize;
1314
import org.springframework.web.bind.annotation.*;
1415

1516
@Slf4j
@@ -42,6 +43,21 @@ public ResponseEntity<AuthResponse> login(@RequestBody LoginUserRequest loginReq
4243
}
4344
}
4445

46+
@PutMapping("/{id}/register")
47+
@PreAuthorize("hasRole('ADMIN') or #id == authentication.principal.id")
48+
public ResponseEntity<AuthResponse> registerGuest(@PathVariable Long id, @RequestBody RegisterUserRequest request) {
49+
try {
50+
authenticationService.convertGuestToUser(id, request);
51+
52+
UserDTO authenticatedUser = authenticationService.authenticate(new LoginUserRequest(request.email(), request.password()));
53+
String jwtToken = jwtService.generateToken(authenticatedUser);
54+
return ResponseEntity.ok(AuthResponse.UserAuthenticated(authenticatedUser, jwtToken, jwtService.getExpirationTime()));
55+
} catch (Exception e) {
56+
log.error("Error converting guest to a user: {}", e.getMessage());
57+
return ResponseEntity.badRequest().body(AuthResponse.AuthenticationFailed(e.getMessage()));
58+
}
59+
}
60+
4561
@GetMapping("/me")
4662
public ResponseEntity<UserDTO> getAuthenticatedUser(@RequestHeader("Authorization") String authHeader) {
4763
try {

src/main/java/com/zenfulcode/commercify/commercify/controller/UserManagementController.java

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package com.zenfulcode.commercify.commercify.controller;
22

33

4-
import com.zenfulcode.commercify.commercify.api.requests.RegisterUserRequest;
54
import com.zenfulcode.commercify.commercify.dto.AddressDTO;
65
import com.zenfulcode.commercify.commercify.dto.UserDTO;
76
import com.zenfulcode.commercify.commercify.service.UserManagementService;
87
import lombok.RequiredArgsConstructor;
8+
import lombok.extern.slf4j.Slf4j;
99
import org.springframework.data.domain.Page;
1010
import org.springframework.data.domain.PageRequest;
1111
import org.springframework.data.domain.Sort;
@@ -16,6 +16,7 @@
1616
import org.springframework.security.access.prepost.PreAuthorize;
1717
import org.springframework.web.bind.annotation.*;
1818

19+
@Slf4j
1920
@RestController
2021
@RequestMapping("/api/v1/users")
2122
@RequiredArgsConstructor
@@ -51,20 +52,6 @@ public ResponseEntity<UserDTO> updateUser(@PathVariable Long id, @RequestBody Us
5152
return ResponseEntity.ok(userManagementService.updateUser(id, userDTO));
5253
}
5354

54-
@PutMapping("/{id}/register")
55-
@PreAuthorize("hasRole('ADMIN') or #id == authentication.principal.id")
56-
public ResponseEntity<UserDTO> registerGuest(@PathVariable Long id, @RequestBody RegisterUserRequest request) {
57-
System.out.println("Registering guest");
58-
System.out.println(request);
59-
60-
try {
61-
return ResponseEntity.ok(userManagementService.updateGuest(id, request));
62-
} catch (Exception e) {
63-
System.out.println("error: " + e.getMessage());
64-
return ResponseEntity.badRequest().build();
65-
}
66-
}
67-
6855
@DeleteMapping("/{id}")
6956
@PreAuthorize("hasRole('ADMIN')")
7057
public ResponseEntity<Void> deleteUser(@PathVariable Long id) {

src/main/java/com/zenfulcode/commercify/commercify/service/AuthenticationService.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public class AuthenticationService {
3030
private final UserMapper mapper;
3131
private final JwtService jwtService;
3232
private final PasswordEncoder passwordEncoder;
33+
private final UserManagementService usersService;
3334

3435
@Transactional
3536
public UserDTO registerUser(RegisterUserRequest registerRequest) {
@@ -68,6 +69,20 @@ public UserDTO registerUser(RegisterUserRequest registerRequest) {
6869
return mapper.apply(savedUser);
6970
}
7071

72+
@Transactional
73+
public void convertGuestToUser(Long id, RegisterUserRequest request) {
74+
usersService.updateUser(id, request.toUserDTO());
75+
76+
UserEntity user = userRepository.findById(id)
77+
.orElseThrow(() -> new RuntimeException("User not found"));
78+
79+
user.setPassword(passwordEncoder.encode(request.password()));
80+
user.removeRole("GUEST");
81+
user.addRole("USER");
82+
83+
userRepository.save(user);
84+
}
85+
7186
public UserDTO registerGuest() {
7287
String firstName = "Guest";
7388
String lastName = String.valueOf(new Date().toInstant().toEpochMilli());

src/main/java/com/zenfulcode/commercify/commercify/service/UserManagementService.java

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.zenfulcode.commercify.commercify.service;
22

33

4-
import com.zenfulcode.commercify.commercify.api.requests.RegisterUserRequest;
54
import com.zenfulcode.commercify.commercify.dto.AddressDTO;
65
import com.zenfulcode.commercify.commercify.dto.UserDTO;
76
import com.zenfulcode.commercify.commercify.dto.mapper.AddressMapper;
@@ -13,7 +12,6 @@
1312
import lombok.extern.slf4j.Slf4j;
1413
import org.springframework.data.domain.Page;
1514
import org.springframework.data.domain.Pageable;
16-
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
1715
import org.springframework.stereotype.Service;
1816
import org.springframework.transaction.annotation.Transactional;
1917

@@ -27,7 +25,6 @@ public class UserManagementService {
2725
private final UserRepository userRepository;
2826
private final UserMapper mapper;
2927
private final AddressMapper addressMapper;
30-
private final BCryptPasswordEncoder passwordEncoder;
3128

3229
@Transactional(readOnly = true)
3330
public UserDTO getUserById(Long id) {
@@ -59,27 +56,6 @@ public UserDTO updateUser(Long id, UserDTO userDTO) throws RuntimeException { /
5956
return mapper.apply(userRepository.save(user));
6057
}
6158

62-
@Transactional
63-
public UserDTO updateGuest(Long id, RegisterUserRequest request) {
64-
try {
65-
updateUser(id, request.toUserDTO());
66-
67-
UserEntity user = userRepository.findById(id)
68-
.orElseThrow(() -> new RuntimeException("User not found"));
69-
70-
user.setPassword(passwordEncoder.encode(request.password()));
71-
user.removeRole("GUEST");
72-
user.addRole("USER");
73-
74-
UserEntity updatedUser = userRepository.save(user);
75-
return mapper.apply(updatedUser);
76-
} catch (RuntimeException e) {
77-
// Log the error
78-
log.error("Failed to update guest user: {}", e.getMessage(), e);
79-
throw e; // Re-throw the exception instead of swallowing it
80-
}
81-
}
82-
8359
@Transactional
8460
public void deleteUser(Long id) {
8561
if (!userRepository.existsById(id)) {

src/main/java/com/zenfulcode/commercify/commercify/service/order/OrderService.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -261,8 +261,6 @@ private OrderDetailsDTO buildOrderDetailsDTO(OrderEntity order) {
261261

262262
OrderShippingInfo shippingInfo = order.getOrderShippingInfo();
263263

264-
System.out.println("shippingInfo = " + shippingInfo);
265-
266264
CustomerDetailsDTO customerDetails = CustomerDetailsDTO.builder()
267265
.email(shippingInfo.getCustomerEmail())
268266
.firstName(shippingInfo.getCustomerFirstName())

0 commit comments

Comments
 (0)