diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/user/UserController.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/user/UserController.java index d7571c7a9189e5828967dcdc0c849a7d7c1a7626..0edc6d6e07f392c6a38810895b439221861a017f 100644 --- a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/user/UserController.java +++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/user/UserController.java @@ -75,10 +75,9 @@ public class UserController { .lastName(user.lastName()) .dateOfBirth(user.birthDate()) .enabled(true) - .authorities(new ArrayList<>()) + .authority(Authority.USER) .build(); userService.saveUser(newUser); - userService.addAuthorityToUser(newUser.getUsername(), Authority.USER); newUser.setPassword(null); return ResponseEntity.status(HttpStatus.CREATED).body(newUser); } diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/user/AuthorityTable.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/user/AuthorityTable.java deleted file mode 100644 index a1446f49db8b2921bf4a4bcbdc7ddf22cac9392e..0000000000000000000000000000000000000000 --- a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/user/AuthorityTable.java +++ /dev/null @@ -1,42 +0,0 @@ -package ntnu.idatt2016.v233.SmartMat.entity.user; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import jakarta.persistence.Entity; -import jakarta.persistence.Id; -import jakarta.persistence.ManyToMany; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import ntnu.idatt2016.v233.SmartMat.dto.enums.Authority; - -import java.util.ArrayList; -import java.util.List; - -@Entity -@NoArgsConstructor -@AllArgsConstructor -@Getter -public class AuthorityTable { - public AuthorityTable(Authority authority) { - this.authority = authority; - } - - @Id - private Authority authority; - - - @ManyToMany(mappedBy = "authorities") - @JsonIgnoreProperties({"authorities", "password"}) - private List<User> users; - - - /** - * Adds a user to the authority - * @param user user to add - */ - public void addUser(User user){ - if(users == null) - users = new ArrayList<>(); - users.add(user); - } -} diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/user/User.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/user/User.java index e9cf55479aa16f32ca269a7a528266381731c2cb..b0a8868055ad246016e1f09faac6830f7bfec189 100644 --- a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/user/User.java +++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/user/User.java @@ -79,13 +79,9 @@ public class User implements UserDetails { private List<Recipe> recipes; - @ManyToMany - @JoinTable( - name = "user_authority", - joinColumns = @JoinColumn(name = "username"), - inverseJoinColumns = @JoinColumn(name = "authority")) - @JsonIgnoreProperties({"users"}) - private List<AuthorityTable> authorities = new ArrayList<>(); + @Column(name = "authority") + private Authority authority; + /** @@ -128,9 +124,7 @@ public class User implements UserDetails { */ @Override public Collection<? extends GrantedAuthority> getAuthorities() { - return List.of(this.authorities.stream().map(AuthorityTable::getAuthority) - .map(Authority::toString).map(SimpleGrantedAuthority::new) - .toArray(GrantedAuthority[]::new)); + return List.of(new SimpleGrantedAuthority(this.authority.toString())); } /** @@ -187,11 +181,5 @@ public class User implements UserDetails { return this.enabled; } - public void addAuthority(AuthorityTable authority){ - if (this.authorities == null) { - this.authorities = new ArrayList<>(); - } - this.authorities.add(authority); - } } diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/user/AuthoritesRepository.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/user/AuthoritesRepository.java deleted file mode 100644 index d2140f7cb3294e5d39bd41c02d0b024fcd919ceb..0000000000000000000000000000000000000000 --- a/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/user/AuthoritesRepository.java +++ /dev/null @@ -1,11 +0,0 @@ -package ntnu.idatt2016.v233.SmartMat.repository.user; - -import ntnu.idatt2016.v233.SmartMat.dto.enums.Authority; -import ntnu.idatt2016.v233.SmartMat.entity.user.AuthorityTable; -import org.springframework.data.jpa.repository.JpaRepository; - -/** - * AuthoritesRepository is a repository for Authorites. - */ -public interface AuthoritesRepository extends JpaRepository<AuthorityTable, Authority> { -} diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/user/AuthoritesService.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/user/AuthoritesService.java deleted file mode 100644 index 887daed938288a73be6cfebb16fc46998cf72240..0000000000000000000000000000000000000000 --- a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/user/AuthoritesService.java +++ /dev/null @@ -1,47 +0,0 @@ -package ntnu.idatt2016.v233.SmartMat.service.user; - -import lombok.AllArgsConstructor; -import ntnu.idatt2016.v233.SmartMat.dto.enums.Authority; -import ntnu.idatt2016.v233.SmartMat.entity.user.AuthorityTable; -import ntnu.idatt2016.v233.SmartMat.entity.user.User; -import ntnu.idatt2016.v233.SmartMat.repository.user.AuthoritesRepository; -import org.springframework.stereotype.Service; - -import java.util.Optional; - -/** - * AuthoritesService is a service for Authorites. - * It is used to get an authority by the authority. - * If the authority does not exist, it will be created. - * @author Birk - * @version 1.0 - * @since 25.04.2023 - */ -@Service -@AllArgsConstructor -public class AuthoritesService { - private final AuthoritesRepository authoritesRepository; - - /** - * Gets an authority by the authority. - * @param auth The authority to get - * @return The authority if it exists, otherwise it will be created and returned - */ - public AuthorityTable getAuthorityByAuth(Authority auth){ - - Optional<AuthorityTable> temp = authoritesRepository.findById(auth); - - return temp.orElseGet(() -> authoritesRepository.save(new AuthorityTable(auth))); - - } - - /** - * Adds a user to an authority. - * @param auth The authority to add the user to - * @param user The user to add to the authority - */ - public void addUserToAuthoriy(AuthorityTable auth, User user){ - auth.addUser(user); - } - -} diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/user/UserService.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/user/UserService.java index 4fce289e2eab5ffd8e83878cbb2b69883178edcb..3343a58ca1ab85c8d6973b0e08259b38fec0eeed 100644 --- a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/user/UserService.java +++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/user/UserService.java @@ -4,10 +4,8 @@ import lombok.AllArgsConstructor; import ntnu.idatt2016.v233.SmartMat.dto.enums.Authority; import ntnu.idatt2016.v233.SmartMat.entity.Recipe; import ntnu.idatt2016.v233.SmartMat.entity.product.Allergy; -import ntnu.idatt2016.v233.SmartMat.entity.user.AuthorityTable; import ntnu.idatt2016.v233.SmartMat.entity.user.User; import ntnu.idatt2016.v233.SmartMat.repository.AllergyRepository; -import ntnu.idatt2016.v233.SmartMat.repository.user.AuthoritesRepository; import ntnu.idatt2016.v233.SmartMat.repository.user.UserRepository; import ntnu.idatt2016.v233.SmartMat.service.RecipeService; import org.springframework.security.core.userdetails.UsernameNotFoundException; @@ -32,10 +30,6 @@ public class UserService { private RecipeService recipeService; - private AuthoritesService authoritesService; - - private AuthoritesRepository authoritesRepository; - AllergyRepository allergyRepository; /** @@ -132,24 +126,6 @@ public class UserService { } - /** - * Adds authority to user - * @param username username of user - * @param authority authority to add - * @return user with added authority - */ - public User addAuthorityToUser(String username, Authority authority){ - User user = userRepository.findByUsername(username) - .orElseThrow(()-> new UsernameNotFoundException("did not find user")); - AuthorityTable auth = authoritesService.getAuthorityByAuth(authority); - - user.addAuthority(auth); - auth.addUser(user); - - authoritesRepository.save(auth); - - return userRepository.save(user); - } /** * Adds allergy to user diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/entity/user/UserTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/entity/user/UserTest.java index 30af02fb6b242a397b57a5bbb6a280d7db913b5a..596e6312bc5754daddbaddfdbce5a0d3569e879c 100644 --- a/src/test/java/ntnu/idatt2016/v233/SmartMat/entity/user/UserTest.java +++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/entity/user/UserTest.java @@ -17,7 +17,7 @@ class UserTest { void testGetAuthorities() { User user = User.builder() .username("johndoe") - .authorities(List.of(new AuthorityTable(Authority.USER))) + .authority(Authority.USER) .build(); diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/UserRepositoryTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/UserRepositoryTest.java index 4ccae7cd321fde8006936e13b0fe23f358b35120..5df6c84e015db2761bb7f4c4c3486ed634e179bf 100644 --- a/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/UserRepositoryTest.java +++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/UserRepositoryTest.java @@ -39,7 +39,7 @@ public class UserRepositoryTest { .email("testuser@example.com") .firstName("Test") .lastName("User") - .authorities(new ArrayList<>()) + .authority(Authority.USER) .dateOfBirth(Date.valueOf("1990-01-01")) .build(); entityManager.persist(user); @@ -54,7 +54,7 @@ public class UserRepositoryTest { .email("testuser@example.no") .firstName("TestUSERNAME") .lastName("UserTEST") - .authorities(new ArrayList<>()) + .authority(Authority.USER) .dateOfBirth(Date.valueOf("1989-01-01")) .build(); userRepository.save(user); @@ -113,7 +113,7 @@ public class UserRepositoryTest { .email("newemail@example.com") .firstName("New") .lastName("Name") - .authorities(new ArrayList<>()) + .authority(Authority.USER) .dateOfBirth(Date.valueOf("1995-01-01")) .build(); userRepository.save(modifiedUser); diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/service/user/AuthoritesServiceTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/service/user/AuthoritesServiceTest.java deleted file mode 100644 index 40e970ebb20594f2512f02a0533217735ff9381d..0000000000000000000000000000000000000000 --- a/src/test/java/ntnu/idatt2016/v233/SmartMat/service/user/AuthoritesServiceTest.java +++ /dev/null @@ -1,68 +0,0 @@ -package ntnu.idatt2016.v233.SmartMat.service.user; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; - -import java.util.Optional; - -import ntnu.idatt2016.v233.SmartMat.dto.enums.Authority; -import ntnu.idatt2016.v233.SmartMat.entity.user.AuthorityTable; -import ntnu.idatt2016.v233.SmartMat.entity.user.User; -import ntnu.idatt2016.v233.SmartMat.repository.user.AuthoritesRepository; - -import static org.mockito.Mockito.*; -import static org.junit.jupiter.api.Assertions.*; - -class AuthoritesServiceTest { - - @InjectMocks - private AuthoritesService authoritesService; - - @Mock - private AuthoritesRepository authoritesRepository; - - @BeforeEach - void setUp() { - MockitoAnnotations.openMocks(this); - } - - @Test - void testGetAuthorityByAuth() { - Authority authorityType = Authority.USER; - AuthorityTable authorityTable = new AuthorityTable(authorityType); - - when(authoritesRepository.findById(authorityType)).thenReturn(Optional.of(authorityTable)); - - AuthorityTable result = authoritesService.getAuthorityByAuth(authorityType); - - assertEquals(authorityType, result.getAuthority()); - } - - @Test - void testGetAuthorityByAuthCreateNew() { - Authority authorityType = Authority.ADMIN; - - when(authoritesRepository.findById(authorityType)).thenReturn(Optional.empty()); - when(authoritesRepository.save(any(AuthorityTable.class))).thenAnswer(invocation -> invocation.getArgument(0)); - - AuthorityTable result = authoritesService.getAuthorityByAuth(authorityType); - - assertEquals(authorityType, result.getAuthority()); - } - - @Test - void testAddUserToAuthority() { - Authority authorityType = Authority.USER; - AuthorityTable authorityTable = new AuthorityTable(authorityType); - User user = new User(); - user.setUsername("testUser"); - - authoritesService.addUserToAuthoriy(authorityTable, user); - - assertNotNull(authorityTable.getUsers()); - assertTrue(authorityTable.getUsers().contains(user)); - } -}