Add auth store info

This commit is contained in:
2026-03-10 18:49:51 -06:00
parent bd3575ef26
commit 1a2f551c06
2 changed files with 55 additions and 6 deletions

View File

@@ -7,7 +7,10 @@ import com.petshop.backend.dto.auth.ProfileUpdateRequest;
import com.petshop.backend.dto.auth.RegisterRequest; import com.petshop.backend.dto.auth.RegisterRequest;
import com.petshop.backend.dto.auth.RegisterResponse; import com.petshop.backend.dto.auth.RegisterResponse;
import com.petshop.backend.dto.auth.UserInfoResponse; import com.petshop.backend.dto.auth.UserInfoResponse;
import com.petshop.backend.entity.EmployeeStore;
import com.petshop.backend.entity.User; import com.petshop.backend.entity.User;
import com.petshop.backend.repository.EmployeeRepository;
import com.petshop.backend.repository.EmployeeStoreRepository;
import com.petshop.backend.repository.UserRepository; import com.petshop.backend.repository.UserRepository;
import com.petshop.backend.security.JwtUtil; import com.petshop.backend.security.JwtUtil;
import com.petshop.backend.service.UserBusinessLinkageService; import com.petshop.backend.service.UserBusinessLinkageService;
@@ -46,13 +49,17 @@ public class AuthController {
private final JwtUtil jwtUtil; private final JwtUtil jwtUtil;
private final PasswordEncoder passwordEncoder; private final PasswordEncoder passwordEncoder;
private final UserBusinessLinkageService userBusinessLinkageService; private final UserBusinessLinkageService userBusinessLinkageService;
private final EmployeeRepository employeeRepository;
private final EmployeeStoreRepository employeeStoreRepository;
public AuthController(AuthenticationManager authenticationManager, UserRepository userRepository, JwtUtil jwtUtil, PasswordEncoder passwordEncoder, UserBusinessLinkageService userBusinessLinkageService) { public AuthController(AuthenticationManager authenticationManager, UserRepository userRepository, JwtUtil jwtUtil, PasswordEncoder passwordEncoder, UserBusinessLinkageService userBusinessLinkageService, EmployeeRepository employeeRepository, EmployeeStoreRepository employeeStoreRepository) {
this.authenticationManager = authenticationManager; this.authenticationManager = authenticationManager;
this.userRepository = userRepository; this.userRepository = userRepository;
this.jwtUtil = jwtUtil; this.jwtUtil = jwtUtil;
this.passwordEncoder = passwordEncoder; this.passwordEncoder = passwordEncoder;
this.userBusinessLinkageService = userBusinessLinkageService; this.userBusinessLinkageService = userBusinessLinkageService;
this.employeeRepository = employeeRepository;
this.employeeStoreRepository = employeeStoreRepository;
} }
@PostMapping("/register") @PostMapping("/register")
@@ -149,13 +156,17 @@ public class AuthController {
User user = userRepository.findByUsername(username) User user = userRepository.findByUsername(username)
.orElseThrow(() -> new UsernameNotFoundException("User not found")); .orElseThrow(() -> new UsernameNotFoundException("User not found"));
EmployeeStore employeeStore = resolveEmployeeStore(user);
return ResponseEntity.ok(new UserInfoResponse( return ResponseEntity.ok(new UserInfoResponse(
user.getId(), user.getId(),
user.getUsername(), user.getUsername(),
user.getEmail(), user.getEmail(),
user.getFullName(), user.getFullName(),
user.getAvatarUrl(), user.getAvatarUrl(),
user.getRole().name() user.getRole().name(),
employeeStore != null ? employeeStore.getStore().getStoreId() : null,
employeeStore != null ? employeeStore.getStore().getStoreName() : null
)); ));
} }
@@ -195,16 +206,30 @@ public class AuthController {
User updatedUser = userRepository.save(user); User updatedUser = userRepository.save(user);
EmployeeStore employeeStore = resolveEmployeeStore(updatedUser);
return ResponseEntity.ok(new UserInfoResponse( return ResponseEntity.ok(new UserInfoResponse(
updatedUser.getId(), updatedUser.getId(),
updatedUser.getUsername(), updatedUser.getUsername(),
updatedUser.getEmail(), updatedUser.getEmail(),
updatedUser.getFullName(), updatedUser.getFullName(),
updatedUser.getAvatarUrl(), updatedUser.getAvatarUrl(),
updatedUser.getRole().name() updatedUser.getRole().name(),
employeeStore != null ? employeeStore.getStore().getStoreId() : null,
employeeStore != null ? employeeStore.getStore().getStoreName() : null
)); ));
} }
private EmployeeStore resolveEmployeeStore(User user) {
if (user.getRole() == User.Role.CUSTOMER) {
return null;
}
return employeeRepository.findByUserId(user.getId())
.flatMap(employee -> employeeStoreRepository.findByEmployeeEmployeeId(employee.getEmployeeId()))
.orElse(null);
}
@PostMapping("/me/avatar") @PostMapping("/me/avatar")
public ResponseEntity<?> uploadAvatar(@RequestParam("avatar") MultipartFile file) { public ResponseEntity<?> uploadAvatar(@RequestParam("avatar") MultipartFile file) {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); Authentication authentication = SecurityContextHolder.getContext().getAuthentication();

View File

@@ -9,17 +9,21 @@ public class UserInfoResponse {
private String fullName; private String fullName;
private String avatarUrl; private String avatarUrl;
private String role; private String role;
private Long storeId;
private String storeName;
public UserInfoResponse() { public UserInfoResponse() {
} }
public UserInfoResponse(Long id, String username, String email, String fullName, String avatarUrl, String role) { public UserInfoResponse(Long id, String username, String email, String fullName, String avatarUrl, String role, Long storeId, String storeName) {
this.id = id; this.id = id;
this.username = username; this.username = username;
this.email = email; this.email = email;
this.fullName = fullName; this.fullName = fullName;
this.avatarUrl = avatarUrl; this.avatarUrl = avatarUrl;
this.role = role; this.role = role;
this.storeId = storeId;
this.storeName = storeName;
} }
public Long getId() { public Long getId() {
@@ -70,6 +74,22 @@ public class UserInfoResponse {
this.role = role; this.role = role;
} }
public Long getStoreId() {
return storeId;
}
public void setStoreId(Long storeId) {
this.storeId = storeId;
}
public String getStoreName() {
return storeName;
}
public void setStoreName(String storeName) {
this.storeName = storeName;
}
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
if (this == o) return true; if (this == o) return true;
@@ -80,12 +100,14 @@ public class UserInfoResponse {
Objects.equals(email, that.email) && Objects.equals(email, that.email) &&
Objects.equals(fullName, that.fullName) && Objects.equals(fullName, that.fullName) &&
Objects.equals(avatarUrl, that.avatarUrl) && Objects.equals(avatarUrl, that.avatarUrl) &&
Objects.equals(role, that.role); Objects.equals(role, that.role) &&
Objects.equals(storeId, that.storeId) &&
Objects.equals(storeName, that.storeName);
} }
@Override @Override
public int hashCode() { public int hashCode() {
return Objects.hash(id, username, email, fullName, avatarUrl, role); return Objects.hash(id, username, email, fullName, avatarUrl, role, storeId, storeName);
} }
@Override @Override
@@ -97,6 +119,8 @@ public class UserInfoResponse {
", fullName='" + fullName + '\'' + ", fullName='" + fullName + '\'' +
", avatarUrl='" + avatarUrl + '\'' + ", avatarUrl='" + avatarUrl + '\'' +
", role='" + role + '\'' + ", role='" + role + '\'' +
", storeId=" + storeId +
", storeName='" + storeName + '\'' +
'}'; '}';
} }
} }