feat: add endpoint to update user information
This commit is contained in:
parent
eb90aa15ac
commit
0905a51ec5
@ -6,6 +6,7 @@ import jakarta.validation.Valid;
|
|||||||
import online.wesal.wesal.dto.CreateUserRequest;
|
import online.wesal.wesal.dto.CreateUserRequest;
|
||||||
import online.wesal.wesal.dto.LoginRequest;
|
import online.wesal.wesal.dto.LoginRequest;
|
||||||
import online.wesal.wesal.dto.LoginResponse;
|
import online.wesal.wesal.dto.LoginResponse;
|
||||||
|
import online.wesal.wesal.dto.UpdateUserRequest;
|
||||||
import online.wesal.wesal.dto.UsernameSelectionRequest;
|
import online.wesal.wesal.dto.UsernameSelectionRequest;
|
||||||
import online.wesal.wesal.entity.User;
|
import online.wesal.wesal.entity.User;
|
||||||
import online.wesal.wesal.service.AuthService;
|
import online.wesal.wesal.service.AuthService;
|
||||||
@ -67,6 +68,22 @@ public class AuthController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/updateUser")
|
||||||
|
@Operation(summary = "Update user information", description = "Update authenticated user's fcmToken, displayName, avatar, or password")
|
||||||
|
public ResponseEntity<Map<String, Object>> updateUser(@Valid @RequestBody UpdateUserRequest request) {
|
||||||
|
try {
|
||||||
|
User user = userService.updateUser(
|
||||||
|
request.getFcmToken(),
|
||||||
|
request.getDisplayName(),
|
||||||
|
request.getAvatar(),
|
||||||
|
request.getPassword()
|
||||||
|
);
|
||||||
|
return ResponseEntity.ok(Map.of("status", 200, "user", user));
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
return ResponseEntity.badRequest().body(Map.of("status", 400, "message", e.getMessage()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@PostMapping("/admin/createUser")
|
@PostMapping("/admin/createUser")
|
||||||
@Operation(summary = "Create new user (Admin only)", description = "Creates a new user - requires admin privileges")
|
@Operation(summary = "Create new user (Admin only)", description = "Creates a new user - requires admin privileges")
|
||||||
public ResponseEntity<?> createUser(@Valid @RequestBody CreateUserRequest request) {
|
public ResponseEntity<?> createUser(@Valid @RequestBody CreateUserRequest request) {
|
||||||
|
|||||||
@ -0,0 +1,49 @@
|
|||||||
|
package online.wesal.wesal.dto;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.Size;
|
||||||
|
|
||||||
|
public class UpdateUserRequest {
|
||||||
|
|
||||||
|
private String fcmToken;
|
||||||
|
|
||||||
|
private String displayName;
|
||||||
|
|
||||||
|
private String avatar;
|
||||||
|
|
||||||
|
@Size(min = 8, message = "Password must be at least 8 characters long")
|
||||||
|
private String password;
|
||||||
|
|
||||||
|
public UpdateUserRequest() {}
|
||||||
|
|
||||||
|
public String getFcmToken() {
|
||||||
|
return fcmToken;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFcmToken(String fcmToken) {
|
||||||
|
this.fcmToken = fcmToken;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDisplayName() {
|
||||||
|
return displayName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDisplayName(String displayName) {
|
||||||
|
this.displayName = displayName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAvatar() {
|
||||||
|
return avatar;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAvatar(String avatar) {
|
||||||
|
this.avatar = avatar;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPassword() {
|
||||||
|
return password;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPassword(String password) {
|
||||||
|
this.password = password;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -55,4 +55,26 @@ public class UserService {
|
|||||||
User user = new User(email, passwordEncoder.encode(password), displayName);
|
User user = new User(email, passwordEncoder.encode(password), displayName);
|
||||||
return userRepository.save(user);
|
return userRepository.save(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public User updateUser(String fcmToken, String displayName, String avatar, String password) {
|
||||||
|
User user = getCurrentUser();
|
||||||
|
|
||||||
|
if (fcmToken != null && !fcmToken.trim().isEmpty()) {
|
||||||
|
user.setFcmToken(fcmToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (displayName != null && !displayName.trim().isEmpty()) {
|
||||||
|
user.setDisplayName(displayName);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (avatar != null) {
|
||||||
|
user.setAvatar(avatar);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (password != null && !password.trim().isEmpty()) {
|
||||||
|
user.setPassword(passwordEncoder.encode(password));
|
||||||
|
}
|
||||||
|
|
||||||
|
return userRepository.save(user);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user