summaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/blog/web/services
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2024-07-20 00:51:37 -0400
committerrealtradam <[email protected]>2024-07-20 00:51:37 -0400
commit5e2eab6f32bc76918aa17791b688d1df27d6ddfc (patch)
tree420a0bcb5091d1e220fa8c42565a507897e11ec4 /src/main/java/com/blog/web/services
parenta6a60a5e774eed9d84f522fc452b67ee52e033cb (diff)
downloadspring-blog-5e2eab6f32bc76918aa17791b688d1df27d6ddfc.tar.gz
spring-blog-5e2eab6f32bc76918aa17791b688d1df27d6ddfc.zip
code cleanup
Diffstat (limited to 'src/main/java/com/blog/web/services')
-rw-r--r--src/main/java/com/blog/web/services/ArticleService.java6
-rw-r--r--src/main/java/com/blog/web/services/UserService.java8
-rw-r--r--src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java38
-rw-r--r--src/main/java/com/blog/web/services/impl/UserServiceImpl.java32
4 files changed, 52 insertions, 32 deletions
diff --git a/src/main/java/com/blog/web/services/ArticleService.java b/src/main/java/com/blog/web/services/ArticleService.java
index aeedcb4..f0fb05b 100644
--- a/src/main/java/com/blog/web/services/ArticleService.java
+++ b/src/main/java/com/blog/web/services/ArticleService.java
@@ -2,18 +2,20 @@ package com.blog.web.services;
import com.blog.web.dto.ArticleDto;
import com.blog.web.models.Article;
+
import java.util.List;
+import java.util.Optional;
public interface ArticleService {
List<ArticleDto> findAllArticles();
- Article saveArticle(ArticleDto article);
+ Optional<Article> saveArticle(ArticleDto article);
ArticleDto findArticleById(long articleId);
void updateArticle(ArticleDto articleDto);
- void delete(Long articleId);
+ boolean delete(Long articleId);
List<ArticleDto> searchArticles(String search);
}
diff --git a/src/main/java/com/blog/web/services/UserService.java b/src/main/java/com/blog/web/services/UserService.java
index 270c2ef..b9c231b 100644
--- a/src/main/java/com/blog/web/services/UserService.java
+++ b/src/main/java/com/blog/web/services/UserService.java
@@ -3,12 +3,14 @@ package com.blog.web.services;
import com.blog.web.dto.RegistrationDto;
import com.blog.web.models.UserEntity;
+import java.util.Optional;
+
public interface UserService {
void saveUser(RegistrationDto registrationDto);
- UserEntity findByEmail(String email);
+ Optional<UserEntity> findByEmail(String email);
- UserEntity findByUsername(String username);
+ Optional<UserEntity> findByUsername(String username);
- public UserEntity getLoggedInUser();
+ public Optional<UserEntity> getLoggedInUser();
}
diff --git a/src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java b/src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java
index acca7e5..fb55c54 100644
--- a/src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java
+++ b/src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java
@@ -7,12 +7,15 @@ import com.blog.web.repository.ArticleRepository;
import com.blog.web.repository.UserRepository;
import com.blog.web.security.SecurityUtil;
import com.blog.web.services.ArticleService;
+import com.blog.web.services.UserService;
import org.springframework.stereotype.Service;
import java.util.List;
+import java.util.Optional;
import java.util.stream.Collectors;
import com.blog.web.mappers.ArticleMapper;
+
import static com.blog.web.mappers.ArticleMapper.mapToArticle;
import static com.blog.web.mappers.ArticleMapper.mapToArticleDto;
@@ -20,27 +23,31 @@ import static com.blog.web.mappers.ArticleMapper.mapToArticleDto;
public class ArticleServiceImpl implements ArticleService {
final private ArticleRepository articleRepository;
final private UserRepository userRepository;
+ final private UserService userService;
- public ArticleServiceImpl(ArticleRepository articleRepository, UserRepository userRepository) {
+ public ArticleServiceImpl(ArticleRepository articleRepository, UserRepository userRepository, UserService userService) {
this.userRepository = userRepository;
this.articleRepository = articleRepository;
+ this.userService = userService;
}
@Override
public List<ArticleDto> findAllArticles() {
List<Article> articles = articleRepository.findAll();
- //return articles.stream().map((article) -> mapToArticleDto(article)).collect(Collectors.toList());
return articles.stream().map(ArticleMapper::mapToArticleDto).collect(Collectors.toList());
}
@Override
- public Article saveArticle(ArticleDto articleDto) {
+ public Optional<Article> saveArticle(ArticleDto articleDto) {
String username = SecurityUtil.getSessionUser();
- UserEntity user = userRepository.findByUsername(username);
+ UserEntity user = userRepository.findByUsername(username).orElse(null);
+ if (user == null) {
+ return null;
+ }
Article article = mapToArticle(articleDto);
article.setCreatedBy(user);
- return articleRepository.save(article);
+ return Optional.of(articleRepository.save(article));
}
@Override
@@ -52,15 +59,30 @@ public class ArticleServiceImpl implements ArticleService {
@Override
public void updateArticle(ArticleDto articleDto) {
String username = SecurityUtil.getSessionUser();
- UserEntity user = userRepository.findByUsername(username);
+ UserEntity user = userRepository.findByUsername(username).orElse(null);
+ if (user == null) {
+ return;
+ }
Article article = mapToArticle(articleDto);
article.setCreatedBy(user);
articleRepository.save(article);
}
@Override
- public void delete(Long articleId) {
- articleRepository.deleteById(articleId);
+ public boolean delete(Long articleId) {
+ final UserEntity user = userService.getLoggedInUser().orElse(null);
+ if (user == null) {
+ return false;
+ }
+ String userId = user.getUsername();
+ ArticleDto article = this.findArticleById(articleId);
+ String ownerId = article.getUsername();
+ if (ownerId.equals(userId)) {
+ articleRepository.deleteById(articleId);
+ return true;
+ } else {
+ return false;
+ }
}
@Override
diff --git a/src/main/java/com/blog/web/services/impl/UserServiceImpl.java b/src/main/java/com/blog/web/services/impl/UserServiceImpl.java
index f77eb9e..859e72c 100644
--- a/src/main/java/com/blog/web/services/impl/UserServiceImpl.java
+++ b/src/main/java/com/blog/web/services/impl/UserServiceImpl.java
@@ -11,17 +11,15 @@ import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import java.util.Arrays;
+import java.util.Optional;
@Service
public class UserServiceImpl implements UserService {
- final private UserRepository userRepository;
- final private RoleRepository roleRepository;
- final private PasswordEncoder passwordEncoder;
+ private final UserRepository userRepository;
+ private final RoleRepository roleRepository;
+ private final PasswordEncoder passwordEncoder;
- public UserServiceImpl(
- UserRepository userRepository,
- RoleRepository roleRepository,
- PasswordEncoder passwordEncoder) {
+ public UserServiceImpl(UserRepository userRepository, RoleRepository roleRepository, PasswordEncoder passwordEncoder) {
this.userRepository = userRepository;
this.roleRepository = roleRepository;
this.passwordEncoder = passwordEncoder;
@@ -32,34 +30,30 @@ public class UserServiceImpl implements UserService {
UserEntity user = new UserEntity();
user.setUsername(registrationDto.getUsername());
user.setEmail(registrationDto.getEmail());
- // this is an unsafe way to store passwords in production
- // it is left this way only because this is a practice project
- //user.setPassword(registrationDto.getPassword());
user.setPassword(passwordEncoder.encode(registrationDto.getPassword()));
- final Role role = roleRepository.findByName("User");
+ final Role role = roleRepository.findByName("User").orElse(new Role());
user.setRoles(Arrays.asList(role));
userRepository.save(user);
}
@Override
- public UserEntity findByEmail(String email) {
+ public Optional<UserEntity> findByEmail(String email) {
return userRepository.findByEmail(email);
}
@Override
- public UserEntity findByUsername(String username) {
+ public Optional<UserEntity> findByUsername(String username) {
return userRepository.findByUsername(username);
}
- public UserEntity getLoggedInUser() {
- final UserEntity user;
+ public Optional<UserEntity> getLoggedInUser() {
+ final Optional<UserEntity> user;
String username = SecurityUtil.getSessionUser();
- if(username != null) {
+ if (username != null) {
user = this.findByUsername(username);
- }
- else {
- user = new UserEntity();
+ } else {
+ user = Optional.of(new UserEntity());
}
return user;
}