Index: src/main/java/com/wediscussmovies/project/service/impl/DiscussionServiceImpl.java
===================================================================
--- src/main/java/com/wediscussmovies/project/service/impl/DiscussionServiceImpl.java	(revision 2a5d6a3d7e82fe6a72290f16b30ecfbbd8df2c98)
+++ src/main/java/com/wediscussmovies/project/service/impl/DiscussionServiceImpl.java	(revision 2a5d6a3d7e82fe6a72290f16b30ecfbbd8df2c98)
@@ -0,0 +1,38 @@
+package com.wediscussmovies.project.service.impl;
+
+import com.wediscussmovies.project.model.Discussion;
+import com.wediscussmovies.project.repository.DiscussionRepository;
+import com.wediscussmovies.project.service.DiscussionService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Optional;
+
+@Service
+public class DiscussionServiceImpl implements DiscussionService {
+    private final DiscussionRepository discussionRepository;
+
+    public DiscussionServiceImpl(DiscussionRepository discussionRepository) {
+        this.discussionRepository = discussionRepository;
+    }
+
+    @Override
+    public List<Discussion> listAll() {
+        return discussionRepository.findAll();
+    }
+
+    @Override
+    public void save(Discussion discussion) {
+        discussionRepository.save(discussion);
+    }
+
+    @Override
+    public Optional<Discussion> findById(Integer id) {
+        return discussionRepository.findById(id);
+    }
+
+    @Override
+    public List<Discussion> listAllByTitle(String title) {
+        return discussionRepository.findAllByTitleLike("%"+title+"%");
+    }
+}
Index: src/main/java/com/wediscussmovies/project/service/impl/PersonServiceImpl.java
===================================================================
--- src/main/java/com/wediscussmovies/project/service/impl/PersonServiceImpl.java	(revision 7a0bf79dedf74d33b1f9bb8ce17b562e420e1fc6)
+++ src/main/java/com/wediscussmovies/project/service/impl/PersonServiceImpl.java	(revision 2a5d6a3d7e82fe6a72290f16b30ecfbbd8df2c98)
@@ -28,4 +28,8 @@
     }
 
+    @Override
+    public Optional<Person> findById(Integer person_id) {
+        return personRepository.findById(person_id);
+    }
 
     @Override
@@ -38,3 +42,31 @@
         return personRepository.findAllByPersonType(PersonType.A);
     }
+
+    @Override
+    public boolean save(Person person) {
+        Person p = personRepository.save(person);
+        if(p != null)
+            return true;
+        return false;
+    }
+
+    @Override
+    public List<Person> findActorsByNameLike(String name) {
+        return personRepository.findAllByPersonTypeAndNameLike(PersonType.A, name);
+    }
+
+    @Override
+    public List<Person> findActorsBySurnameLike(String surname) {
+        return personRepository.findAllByPersonTypeAndSurnameLike(PersonType.A, surname);
+    }
+
+    @Override
+    public List<Person> findDirectorsByNameLike(String name) {
+        return personRepository.findAllByPersonTypeAndNameLike(PersonType.D, name);
+    }
+
+    @Override
+    public List<Person> findDirectorsBySurnameLike(String surname) {
+        return personRepository.findAllByPersonTypeAndSurnameLike(PersonType.D, surname);
+    }
 }
Index: src/main/java/com/wediscussmovies/project/service/impl/ReplyServiceImpl.java
===================================================================
--- src/main/java/com/wediscussmovies/project/service/impl/ReplyServiceImpl.java	(revision 2a5d6a3d7e82fe6a72290f16b30ecfbbd8df2c98)
+++ src/main/java/com/wediscussmovies/project/service/impl/ReplyServiceImpl.java	(revision 2a5d6a3d7e82fe6a72290f16b30ecfbbd8df2c98)
@@ -0,0 +1,32 @@
+package com.wediscussmovies.project.service.impl;
+
+import com.wediscussmovies.project.model.Reply;
+import com.wediscussmovies.project.repository.ReplyRepository;
+import com.wediscussmovies.project.service.ReplyService;
+import org.springframework.stereotype.Service;
+
+import java.util.Optional;
+
+@Service
+public class ReplyServiceImpl implements ReplyService {
+    private final ReplyRepository replyRepository;
+
+    public ReplyServiceImpl(ReplyRepository replyRepository) {
+        this.replyRepository = replyRepository;
+    }
+
+    @Override
+    public Optional<Reply> findById(Integer id) {
+        return replyRepository.findById(id);
+    }
+
+    @Override
+    public void delete(Reply r) {
+        replyRepository.delete(r);
+    }
+
+    @Override
+    public Reply save(Reply r) {
+        return replyRepository.save(r);
+    }
+}
Index: src/main/java/com/wediscussmovies/project/service/impl/UserServiceImpl.java
===================================================================
--- src/main/java/com/wediscussmovies/project/service/impl/UserServiceImpl.java	(revision 2a5d6a3d7e82fe6a72290f16b30ecfbbd8df2c98)
+++ src/main/java/com/wediscussmovies/project/service/impl/UserServiceImpl.java	(revision 2a5d6a3d7e82fe6a72290f16b30ecfbbd8df2c98)
@@ -0,0 +1,59 @@
+package com.wediscussmovies.project.service.impl;
+
+import com.wediscussmovies.project.model.User;
+import com.wediscussmovies.project.model.exception.PasswordsDontMatchException;
+import com.wediscussmovies.project.model.exception.UserWithEmailAlreadyExists;
+import com.wediscussmovies.project.model.exception.UserWithUsernameAlreadyExists;
+import com.wediscussmovies.project.repository.UserRepository;
+import com.wediscussmovies.project.service.UserService;
+import org.springframework.http.HttpRequest;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Optional;
+
+@Service
+public class UserServiceImpl implements UserService {
+    private final UserRepository userRepository;
+
+    public UserServiceImpl(UserRepository userRepository) {
+        this.userRepository = userRepository;
+    }
+
+    @Override
+    public Optional<User> login(String email, String password) {
+        Optional<User> userEmail = userRepository.findByEmailAndPassword(email, password);
+        Optional<User> userUsername = userRepository.findByUsernameAndPassword(email, password);
+        if(userEmail.isPresent())
+            return userEmail;
+        else if(userUsername.isPresent())
+            return userUsername;
+        else
+            return Optional.empty();
+    }
+
+    @Override
+    public Optional<User> register(HttpServletRequest request, String email, String password, String confirmPassword,
+                                   String username, String name, String surname) {
+        if(email == null || email.isEmpty() || password == null || password.isEmpty() ||
+                confirmPassword == null || confirmPassword.isEmpty() || username == null || username.isEmpty() ||
+                name == null || name.isEmpty() || surname == null || surname.isEmpty()) {
+            request.getSession().setAttribute("error", "Not all of the fields had a value in them, check again.");
+            return Optional.empty();
+        }
+            if(userRepository.findByUsername(username).isPresent()){
+            request.getSession().setAttribute("error", new UserWithUsernameAlreadyExists(username).getMessage());
+            return Optional.empty();
+        }
+        if(userRepository.findByEmail(email).isPresent()){
+            request.getSession().setAttribute("error", new UserWithEmailAlreadyExists(email).getMessage());
+            return Optional.empty();
+        }
+        if(!password.equals(confirmPassword)){
+            request.getSession().setAttribute("error", new PasswordsDontMatchException().getMessage());
+            return Optional.empty();
+        }
+        User user = new User(email, username, password, name, surname);
+        return Optional.of(userRepository.save(user));
+    }
+}
