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.LoginRequest;
|
||||
import online.wesal.wesal.dto.LoginResponse;
|
||||
import online.wesal.wesal.dto.UpdateUserRequest;
|
||||
import online.wesal.wesal.dto.UsernameSelectionRequest;
|
||||
import online.wesal.wesal.entity.User;
|
||||
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")
|
||||
@Operation(summary = "Create new user (Admin only)", description = "Creates a new user - requires admin privileges")
|
||||
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);
|
||||
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