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.RegisterResponse;
import com.petshop.backend.dto.auth.UserInfoResponse;
import com.petshop.backend.entity.EmployeeStore;
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.security.JwtUtil;
import com.petshop.backend.service.UserBusinessLinkageService;
@@ -46,13 +49,17 @@ public class AuthController {
private final JwtUtil jwtUtil;
private final PasswordEncoder passwordEncoder;
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.userRepository = userRepository;
this.jwtUtil = jwtUtil;
this.passwordEncoder = passwordEncoder;
this.userBusinessLinkageService = userBusinessLinkageService;
this.employeeRepository = employeeRepository;
this.employeeStoreRepository = employeeStoreRepository;
}
@PostMapping("/register")
@@ -149,13 +156,17 @@ public class AuthController {
User user = userRepository.findByUsername(username)
.orElseThrow(() -> new UsernameNotFoundException("User not found"));
EmployeeStore employeeStore = resolveEmployeeStore(user);
return ResponseEntity.ok(new UserInfoResponse(
user.getId(),
user.getUsername(),
user.getEmail(),
user.getFullName(),
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);
EmployeeStore employeeStore = resolveEmployeeStore(updatedUser);
return ResponseEntity.ok(new UserInfoResponse(
updatedUser.getId(),
updatedUser.getUsername(),
updatedUser.getEmail(),
updatedUser.getFullName(),
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")
public ResponseEntity<?> uploadAvatar(@RequestParam("avatar") MultipartFile file) {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();

View File

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