From 1a2f551c06a23df95c2197aaf4e8a95077299e2f Mon Sep 17 00:00:00 2001 From: Harkamal Randhawa Date: Tue, 10 Mar 2026 18:49:51 -0600 Subject: [PATCH] Add auth store info --- .../backend/controller/AuthController.java | 31 +++++++++++++++++-- .../backend/dto/auth/UserInfoResponse.java | 30 ++++++++++++++++-- 2 files changed, 55 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/petshop/backend/controller/AuthController.java b/src/main/java/com/petshop/backend/controller/AuthController.java index b5bc1900..bf907257 100644 --- a/src/main/java/com/petshop/backend/controller/AuthController.java +++ b/src/main/java/com/petshop/backend/controller/AuthController.java @@ -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(); diff --git a/src/main/java/com/petshop/backend/dto/auth/UserInfoResponse.java b/src/main/java/com/petshop/backend/dto/auth/UserInfoResponse.java index 7ce89f8a..1f15daf8 100644 --- a/src/main/java/com/petshop/backend/dto/auth/UserInfoResponse.java +++ b/src/main/java/com/petshop/backend/dto/auth/UserInfoResponse.java @@ -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 + '\'' + '}'; } }