UserController.java 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package cn.seecoder.fdroidrepository.Controller;
  2. import cn.seecoder.fdroidrepository.DataObject.User;
  3. import cn.seecoder.fdroidrepository.Service.ServiceImpl.USER_STATUS;
  4. import cn.seecoder.fdroidrepository.Service.UserService;
  5. import cn.seecoder.fdroidrepository.utils.Result;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.http.HttpStatus;
  8. import org.springframework.http.ResponseEntity;
  9. import org.springframework.web.bind.annotation.*;
  10. @RestController
  11. @RequestMapping("/api/users")
  12. public class UserController {
  13. @Autowired
  14. private UserService userService;
  15. @PostMapping("/register")
  16. public ResponseEntity<String> register(@RequestBody User user) {
  17. if (!userService.isUsernameUnique(user.getUsername())) {
  18. return new ResponseEntity<>("Username is already taken", HttpStatus.BAD_REQUEST);
  19. }
  20. userService.save(user);
  21. return new ResponseEntity<>("User registered successfully", HttpStatus.OK);
  22. }
  23. @GetMapping("/activation/{userId}/{code}")
  24. private Result<?> activate(@PathVariable int userId,@PathVariable String code){
  25. USER_STATUS result=userService.activate(userId,code);
  26. if(result==USER_STATUS.START_ACTIVATE){
  27. return new Result<>("200","activate success");
  28. }else if(result==USER_STATUS.REPEAT_ACTIVATE){
  29. return new Result<>("409","repeat activation");
  30. }
  31. return new Result<>("400","activate failed!");
  32. }
  33. @PostMapping("/login")
  34. public ResponseEntity<String> login(@RequestBody User user) {
  35. User existingUser = userService.findByUsername(user.getUsername());
  36. if (existingUser == null || !existingUser.getPassword().equals(user.getPassword())) {
  37. return new ResponseEntity<>("Invalid username or password", HttpStatus.UNAUTHORIZED);
  38. }
  39. return new ResponseEntity<>("Login successful", HttpStatus.OK);
  40. }
  41. }