Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -64,11 +64,11 @@ public ResponseEntity<JwtAuthenticationResponse> authenticateUser(@Valid @Reques

@PostMapping("/signup")
public ResponseEntity<ApiResponse> registerUser(@Valid @RequestBody SignUpRequest signUpRequest) {
if (userRepository.existsByUsername(signUpRequest.getUsername())) {
if (Boolean.TRUE.equals(userRepository.existsByUsername(signUpRequest.getUsername()))) {
throw new BlogapiException(HttpStatus.BAD_REQUEST, "Username is already taken");
}

if (userRepository.existsByEmail(signUpRequest.getEmail())) {
if (Boolean.TRUE.equals(userRepository.existsByEmail(signUpRequest.getEmail()))) {
throw new BlogapiException(HttpStatus.BAD_REQUEST, "Email is already taken");
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ public ResponseEntity<Todo> updateTodo(@PathVariable(value = "id") Long id, @Val
public ResponseEntity<ApiResponse> deleteTodo(@PathVariable(value = "id") Long id, @CurrentUser UserPrincipal currentUser) {
ApiResponse apiResponse = todoService.deleteTodo(id, currentUser);

return new ResponseEntity<ApiResponse>(apiResponse, HttpStatus.OK);
return new ResponseEntity<>(apiResponse, HttpStatus.OK);
}

@PutMapping("/{id}/complete")
Expand Down
1 change: 0 additions & 1 deletion src/main/java/com/sopromadze/blogapi/model/Photo.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.sopromadze.blogapi.model;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.sopromadze.blogapi.model.Album;
import com.sopromadze.blogapi.model.audit.UserDateAudit;
import lombok.Data;
import lombok.EqualsAndHashCode;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.sopromadze.blogapi.repository;

import com.sopromadze.blogapi.exception.ResourceNotFoundException;
import com.sopromadze.blogapi.model.user.User;
import com.sopromadze.blogapi.security.UserPrincipal;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

Expand All @@ -18,4 +20,13 @@ public interface UserRepository extends JpaRepository<User, Long> {
Boolean existsByEmail(@NotBlank String email);

Optional<User> findByUsernameOrEmail(String username, String email);

default User getUser(UserPrincipal currentUser) {
return getUserByName(currentUser.getUsername());
}

default User getUserByName(String username) {
return findByUsername(username)
.orElseThrow(() -> new ResourceNotFoundException("User", "username", username));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,6 @@ public class AlbumServiceImpl implements AlbumService {

private static final String ALBUM_STR = "Album";

private static final String USER_STR = "User";

private static final String USERNAME_STR = "username";

private static final String YOU_DON_T_HAVE_PERMISSION_TO_MAKE_THIS_OPERATION = "You don't have permission to make this operation";

@Autowired
Expand Down Expand Up @@ -73,8 +69,7 @@ public PagedResponse<AlbumResponse> getAllAlbums(int page, int size) {

@Override
public ResponseEntity<Album> addAlbum(AlbumRequest albumRequest, UserPrincipal currentUser) {
User user = userRepository.findByUsername(currentUser.getUsername())
.orElseThrow(() -> new ResourceNotFoundException(USER_STR, USERNAME_STR, currentUser.getUsername()));
User user = userRepository.getUser(currentUser);

Album album = new Album();

Expand All @@ -94,8 +89,7 @@ public ResponseEntity<Album> getAlbum(Long id) {
@Override
public ResponseEntity<AlbumResponse> updateAlbum(Long id, AlbumRequest newAlbum, UserPrincipal currentUser) {
Album album = albumRepository.findById(id).orElseThrow(() -> new ResourceNotFoundException(ALBUM_STR, ID, id));
User user = userRepository.findByUsername(currentUser.getUsername())
.orElseThrow(() -> new ResourceNotFoundException(USER_STR, USERNAME_STR, currentUser.getUsername()));
User user = userRepository.getUser(currentUser);
if (album.getUser().getId().equals(user.getId()) || currentUser.getAuthorities()
.contains(new SimpleGrantedAuthority(RoleName.ROLE_ADMIN.toString()))) {
album.setTitle(newAlbum.getTitle());
Expand All @@ -114,8 +108,7 @@ public ResponseEntity<AlbumResponse> updateAlbum(Long id, AlbumRequest newAlbum,
@Override
public ResponseEntity<ApiResponse> deleteAlbum(Long id, UserPrincipal currentUser) {
Album album = albumRepository.findById(id).orElseThrow(() -> new ResourceNotFoundException(ALBUM_STR, ID, id));
User user = userRepository.findByUsername(currentUser.getUsername())
.orElseThrow(() -> new ResourceNotFoundException(USER_STR, USERNAME_STR, currentUser.getUsername()));
User user = userRepository.getUser(currentUser);
if (album.getUser().getId().equals(user.getId()) || currentUser.getAuthorities()
.contains(new SimpleGrantedAuthority(RoleName.ROLE_ADMIN.toString()))) {
albumRepository.deleteById(id);
Expand All @@ -127,7 +120,8 @@ public ResponseEntity<ApiResponse> deleteAlbum(Long id, UserPrincipal currentUse

@Override
public PagedResponse<Album> getUserAlbums(String username, int page, int size) {
User user = userRepository.findByUsername(username).orElseThrow(() -> new ResourceNotFoundException(USER_STR, USERNAME_STR, username));
User user = userRepository.getUserByName(username);

Pageable pageable = PageRequest.of(page, size, Sort.Direction.DESC, CREATED_AT);

Page<Album> albums = albumRepository.findByCreatedBy(user.getId(), pageable);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ public ResponseEntity<Category> addCategory(Category category, UserPrincipal cur
}

@Override
public ResponseEntity<Category> updateCategory(Long id, Category newCategory, UserPrincipal currentUser) throws UnauthorizedException {
public ResponseEntity<Category> updateCategory(Long id, Category newCategory, UserPrincipal currentUser) {
Category category = categoryRepository.findById(id).orElseThrow(() -> new ResourceNotFoundException("Category", "id", id));
if (category.getCreatedBy().equals(currentUser.getId()) || currentUser.getAuthorities()
.contains(new SimpleGrantedAuthority(RoleName.ROLE_ADMIN.toString()))) {
Expand All @@ -69,7 +69,7 @@ public ResponseEntity<Category> updateCategory(Long id, Category newCategory, Us
}

@Override
public ResponseEntity<ApiResponse> deleteCategory(Long id, UserPrincipal currentUser) throws UnauthorizedException {
public ResponseEntity<ApiResponse> deleteCategory(Long id, UserPrincipal currentUser) {
Category category = categoryRepository.findById(id).orElseThrow(() -> new ResourceNotFoundException("category", "id", id));
if (category.getCreatedBy().equals(currentUser.getId()) || currentUser.getAuthorities()
.contains(new SimpleGrantedAuthority(RoleName.ROLE_ADMIN.toString()))) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,7 @@ public PagedResponse<Comment> getAllComments(Long postId, int page, int size) {
public Comment addComment(CommentRequest commentRequest, Long postId, UserPrincipal currentUser) {
Post post = postRepository.findById(postId)
.orElseThrow(() -> new ResourceNotFoundException(POST_STR, ID_STR, postId));
User user = userRepository.findByUsername(currentUser.getUsername())
.orElseThrow(() -> new ResourceNotFoundException("User", "username", currentUser.getUsername()));
User user = userRepository.getUser(currentUser);
Comment comment = new Comment(commentRequest.getBody());
comment.setUser(user);
comment.setPost(post);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public class CustomUserDetailsServiceImpl implements UserDetailsService, CustomU

@Override
@Transactional
public UserDetails loadUserByUsername(String usernameOrEmail) throws UsernameNotFoundException {
public UserDetails loadUserByUsername(String usernameOrEmail) {
User user = userRepository.findByUsernameOrEmail(usernameOrEmail, usernameOrEmail)
.orElseThrow(() -> new UsernameNotFoundException(String.format("User not found with this username or email: %s", usernameOrEmail)));
return UserPrincipal.create(user);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
import com.sopromadze.blogapi.exception.UnauthorizedException;
import com.sopromadze.blogapi.model.Category;
import com.sopromadze.blogapi.model.Post;
import com.sopromadze.blogapi.model.role.RoleName;
import com.sopromadze.blogapi.model.Tag;
import com.sopromadze.blogapi.model.role.RoleName;
import com.sopromadze.blogapi.model.user.User;
import com.sopromadze.blogapi.payload.ApiResponse;
import com.sopromadze.blogapi.payload.PagedResponse;
Expand All @@ -29,7 +29,6 @@
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

Expand All @@ -39,7 +38,6 @@
import static com.sopromadze.blogapi.utils.AppConstants.POST;
import static com.sopromadze.blogapi.utils.AppConstants.TAG;
import static com.sopromadze.blogapi.utils.AppConstants.USER;
import static com.sopromadze.blogapi.utils.AppConstants.USERNAME;

@Service
public class PostServiceImpl implements PostService {
Expand Down Expand Up @@ -72,8 +70,7 @@ public PagedResponse<Post> getAllPosts(int page, int size) {
@Override
public PagedResponse<Post> getPostsByCreatedBy(String username, int page, int size) {
validatePageNumberAndSize(page, size);
User user = userRepository.findByUsername(username)
.orElseThrow(() -> new ResourceNotFoundException(USER, USERNAME, username));
User user = userRepository.getUserByName(username);
Pageable pageable = PageRequest.of(page, size, Sort.Direction.DESC, CREATED_AT);
Page<Post> posts = postRepository.findByCreatedBy(user.getId(), pageable);

Expand Down Expand Up @@ -106,7 +103,7 @@ public PagedResponse<Post> getPostsByTag(Long id, int page, int size) {

Pageable pageable = PageRequest.of(page, size, Sort.Direction.DESC, CREATED_AT);

Page<Post> posts = postRepository.findByTags(Arrays.asList(tag), pageable);
Page<Post> posts = postRepository.findByTags(Collections.singletonList(tag), pageable);

List<Post> content = posts.getNumberOfElements() == 0 ? Collections.emptyList() : posts.getContent();

Expand Down Expand Up @@ -152,7 +149,7 @@ public PostResponse addPost(PostRequest postRequest, UserPrincipal currentUser)
Category category = categoryRepository.findById(postRequest.getCategoryId())
.orElseThrow(() -> new ResourceNotFoundException(CATEGORY, ID, postRequest.getCategoryId()));

List<Tag> tags = new ArrayList< >(postRequest.getTags().size());
List<Tag> tags = new ArrayList<>(postRequest.getTags().size());

for (String name : postRequest.getTags()) {
Tag tag = tagRepository.findByName(name);
Expand All @@ -176,7 +173,7 @@ public PostResponse addPost(PostRequest postRequest, UserPrincipal currentUser)
postResponse.setBody(newPost.getBody());
postResponse.setCategory(newPost.getCategory().getName());

List<String> tagNames = new ArrayList< >(newPost.getTags().size());
List<String> tagNames = new ArrayList<>(newPost.getTags().size());

for (Tag tag : newPost.getTags()) {
tagNames.add(tag.getName());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import com.sopromadze.blogapi.exception.ResourceNotFoundException;
import com.sopromadze.blogapi.exception.UnauthorizedException;
import com.sopromadze.blogapi.model.role.RoleName;
import com.sopromadze.blogapi.model.Tag;
import com.sopromadze.blogapi.model.role.RoleName;
import com.sopromadze.blogapi.payload.ApiResponse;
import com.sopromadze.blogapi.payload.PagedResponse;
import com.sopromadze.blogapi.repository.TagRepository;
Expand Down Expand Up @@ -37,7 +37,7 @@ public PagedResponse<Tag> getAllTags(int page, int size) {

List<Tag> content = tags.getNumberOfElements() == 0 ? Collections.emptyList() : tags.getContent();

return new PagedResponse< >(content, tags.getNumber(), tags.getSize(), tags.getTotalElements(), tags.getTotalPages(), tags.isLast());
return new PagedResponse<>(content, tags.getNumber(), tags.getSize(), tags.getTotalElements(), tags.getTotalPages(), tags.isLast());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,6 @@
import static com.sopromadze.blogapi.utils.AppConstants.CREATED_AT;
import static com.sopromadze.blogapi.utils.AppConstants.ID;
import static com.sopromadze.blogapi.utils.AppConstants.TODO;
import static com.sopromadze.blogapi.utils.AppConstants.USER;
import static com.sopromadze.blogapi.utils.AppConstants.USERNAME;
import static com.sopromadze.blogapi.utils.AppConstants.YOU_DON_T_HAVE_PERMISSION_TO_MAKE_THIS_OPERATION;

@Service
Expand All @@ -42,8 +40,7 @@ public class TodoServiceImpl implements TodoService {
public Todo completeTodo(Long id, UserPrincipal currentUser) {
Todo todo = todoRepository.findById(id).orElseThrow(() -> new ResourceNotFoundException(TODO, ID, id));

User user = userRepository.findByUsername(currentUser.getUsername())
.orElseThrow(() -> new ResourceNotFoundException(USER, USERNAME, currentUser.getUsername()));
User user = userRepository.getUser(currentUser);

if (todo.getUser().getId().equals(user.getId())) {
todo.setCompleted(Boolean.TRUE);
Expand All @@ -58,8 +55,7 @@ public Todo completeTodo(Long id, UserPrincipal currentUser) {
@Override
public Todo unCompleteTodo(Long id, UserPrincipal currentUser) {
Todo todo = todoRepository.findById(id).orElseThrow(() -> new ResourceNotFoundException(TODO, ID, id));
User user = userRepository.findByUsername(currentUser.getUsername())
.orElseThrow(() -> new ResourceNotFoundException(USER, USERNAME, currentUser.getUsername()));
User user = userRepository.getUser(currentUser);
if (todo.getUser().getId().equals(user.getId())) {
todo.setCompleted(Boolean.FALSE);
return todoRepository.save(todo);
Expand All @@ -85,16 +81,14 @@ public PagedResponse<Todo> getAllTodos(UserPrincipal currentUser, int page, int

@Override
public Todo addTodo(Todo todo, UserPrincipal currentUser) {
User user = userRepository.findByUsername(currentUser.getUsername())
.orElseThrow(() -> new ResourceNotFoundException(USER, USERNAME, currentUser.getUsername()));
User user = userRepository.getUser(currentUser);
todo.setUser(user);
return todoRepository.save(todo);
}

@Override
public Todo getTodo(Long id, UserPrincipal currentUser) {
User user = userRepository.findByUsername(currentUser.getUsername())
.orElseThrow(() -> new ResourceNotFoundException(USER, USERNAME, currentUser.getUsername()));
User user = userRepository.getUser(currentUser);
Todo todo = todoRepository.findById(id).orElseThrow(() -> new ResourceNotFoundException(TODO, ID, id));

if (todo.getUser().getId().equals(user.getId())) {
Expand All @@ -108,8 +102,7 @@ public Todo getTodo(Long id, UserPrincipal currentUser) {

@Override
public Todo updateTodo(Long id, Todo newTodo, UserPrincipal currentUser) {
User user = userRepository.findByUsername(currentUser.getUsername())
.orElseThrow(() -> new ResourceNotFoundException(USER, USERNAME, currentUser.getUsername()));
User user = userRepository.getUser(currentUser);
Todo todo = todoRepository.findById(id).orElseThrow(() -> new ResourceNotFoundException(TODO, ID, id));
if (todo.getUser().getId().equals(user.getId())) {
todo.setTitle(newTodo.getTitle());
Expand All @@ -124,8 +117,7 @@ public Todo updateTodo(Long id, Todo newTodo, UserPrincipal currentUser) {

@Override
public ApiResponse deleteTodo(Long id, UserPrincipal currentUser) {
User user = userRepository.findByUsername(currentUser.getUsername())
.orElseThrow(() -> new ResourceNotFoundException(USER, USERNAME, currentUser.getUsername()));
User user = userRepository.getUser(currentUser);
Todo todo = todoRepository.findById(id).orElseThrow(() -> new ResourceNotFoundException(TODO, ID, id));

if (todo.getUser().getId().equals(user.getId())) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,7 @@ public UserIdentityAvailability checkEmailAvailability(String email) {

@Override
public UserProfile getUserProfile(String username) {
User user = userRepository.findByUsername(username)
.orElseThrow(() -> new ResourceNotFoundException("User", "username", username));
User user = userRepository.getUserByName(username);

Long postCount = postRepository.countByCreatedBy(user.getId());

Expand Down Expand Up @@ -97,8 +96,7 @@ public User addUser(User user) {

@Override
public User updateUser(User newUser, String username, UserPrincipal currentUser) {
User user = userRepository.findByUsername(username)
.orElseThrow(() -> new ResourceNotFoundException("User", "username", username));
User user = userRepository.getUserByName(username);
if (user.getId().equals(currentUser.getId())
|| currentUser.getAuthorities().contains(new SimpleGrantedAuthority(RoleName.ROLE_ADMIN.toString()))) {
user.setFirstName(newUser.getFirstName());
Expand Down Expand Up @@ -135,8 +133,7 @@ public ApiResponse deleteUser(String username, UserPrincipal currentUser) {

@Override
public ApiResponse giveAdmin(String username) {
User user = userRepository.findByUsername(username)
.orElseThrow(() -> new ResourceNotFoundException("User", "username", username));
User user = userRepository.getUserByName(username);
List<Role> roles = new ArrayList<>();
roles.add(roleRepository.findByName(RoleName.ROLE_ADMIN)
.orElseThrow(() -> new AppException("User role not set")));
Expand All @@ -149,8 +146,7 @@ public ApiResponse giveAdmin(String username) {

@Override
public ApiResponse removeAdmin(String username) {
User user = userRepository.findByUsername(username)
.orElseThrow(() -> new ResourceNotFoundException("User", "username", username));
User user = userRepository.getUserByName(username);
List<Role> roles = new ArrayList<>();
roles.add(
roleRepository.findByName(RoleName.ROLE_USER).orElseThrow(() -> new AppException("User role not set")));
Expand Down