added security and fix edit profile
This commit is contained in:
@@ -2,18 +2,20 @@ package com.krylov.refound.controller;
|
||||
|
||||
import com.krylov.refound.dto.AuthRequest;
|
||||
import com.krylov.refound.dto.AuthResponse;
|
||||
import com.krylov.refound.dto.CheckLoginDto;
|
||||
import com.krylov.refound.dto.RegisterRequest;
|
||||
import com.krylov.refound.dto.UserDto;
|
||||
import com.krylov.refound.entity.User;
|
||||
import com.krylov.refound.repository.UserRepository;
|
||||
import com.krylov.refound.security.JwtService;
|
||||
import java.util.Map;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@@ -23,6 +25,8 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
public class AuthController {
|
||||
|
||||
private final UserRepository userRepository;
|
||||
private final PasswordEncoder passwordEncoder;
|
||||
private final JwtService jwtService;
|
||||
|
||||
@PostMapping("/register")
|
||||
public ResponseEntity<?> register(@RequestBody RegisterRequest request) {
|
||||
@@ -38,18 +42,37 @@ public class AuthController {
|
||||
User user = new User();
|
||||
user.setName(request.getName());
|
||||
user.setLogin(request.getLogin());
|
||||
user.setPassword(request.getPassword()); // позже добавить BCrypt
|
||||
user.setPassword(passwordEncoder.encode(request.getPassword()));
|
||||
|
||||
userRepository.save(user);
|
||||
|
||||
String token = "fake-jwt-token";
|
||||
String token = jwtService.generateToken(user.getLogin());
|
||||
|
||||
return ResponseEntity.ok(new AuthResponse(token, user));
|
||||
UserDto userDto = new UserDto(user.getId(), user.getName(), user.getLogin(), user.getEmail());
|
||||
return ResponseEntity.ok(new AuthResponse(token, userDto));
|
||||
}
|
||||
|
||||
@GetMapping("/check-login")
|
||||
public ResponseEntity<?> checkLogin(@RequestParam String login) {
|
||||
boolean exists = userRepository.existsByLogin(login);
|
||||
@PostMapping("/login")
|
||||
public ResponseEntity<?> login(@RequestBody AuthRequest request) {
|
||||
|
||||
User user = userRepository.findByLogin(request.getLogin())
|
||||
.orElse(null);
|
||||
|
||||
if (user == null || !passwordEncoder.matches(request.getPassword(), user.getPassword())) {
|
||||
return ResponseEntity
|
||||
.badRequest()
|
||||
.body(Map.of("message", "Неверный логин или пароль"));
|
||||
}
|
||||
|
||||
String token = jwtService.generateToken(user.getLogin());
|
||||
|
||||
UserDto userDto = new UserDto(user.getId(), user.getName(), user.getLogin(), user.getEmail());
|
||||
return ResponseEntity.ok(new AuthResponse(token, userDto));
|
||||
}
|
||||
|
||||
@PostMapping("/check-login")
|
||||
public ResponseEntity<?> checkLogin(@RequestBody CheckLoginDto request) {
|
||||
boolean exists = userRepository.existsByLogin(request.getLogin());
|
||||
return ResponseEntity.ok(Map.of("exists", exists));
|
||||
}
|
||||
|
||||
|
||||
@@ -42,6 +42,11 @@ public class PostController {
|
||||
return service.getFeed();
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
public List<PostResponse> getById(@PathVariable Long id) {
|
||||
return service.getById(id);
|
||||
}
|
||||
|
||||
@PutMapping(value = "/{id}", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
|
||||
public PostResponse update(
|
||||
@PathVariable Long id,
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.krylov.refound.controller;
|
||||
|
||||
import com.krylov.refound.dto.UserResponseDto;
|
||||
import com.krylov.refound.dto.UserUpdateDto;
|
||||
import com.krylov.refound.service.UserService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/v1/users")
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
public class UserController {
|
||||
|
||||
private final UserService userService;
|
||||
|
||||
@PutMapping("/{id}")
|
||||
public ResponseEntity<UserResponseDto> updateUser(@PathVariable Long id, @ModelAttribute UserUpdateDto userUpdateDto) {
|
||||
log.info("updateUser, id={}", id);
|
||||
UserResponseDto userResponseDto = userService.updateUser(id, userUpdateDto);
|
||||
return ResponseEntity.ok(userResponseDto);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user