Add auth store info
This commit is contained in:
@@ -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();
|
||||||
|
|||||||
@@ -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 + '\'' +
|
||||||
'}';
|
'}';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user