From bb5391bca9069bd895d275b1e685333bd6ba22ed Mon Sep 17 00:00:00 2001 From: "paul-emmanuel.dos-sa" Date: Wed, 25 Nov 2020 13:16:04 +0100 Subject: [PATCH] modify role --- .../configuration/WebSocketConfig.java | 35 ++++++--------- .../petclinic/controller/UserController.java | 2 +- .../samples/petclinic/dto/BaseDTO.java | 5 +-- .../samples/petclinic/dto/NamedDTO.java | 1 - .../samples/petclinic/dto/common/RoleDTO.java | 1 + .../samples/petclinic/model/common/Role.java | 34 ++++++++++++++- .../samples/petclinic/model/common/User.java | 43 +++++-------------- .../petclinic/repository/RoleRepository.java | 4 +- .../petclinic/repository/UserRepository.java | 6 ++- .../petclinic/service/common/RoleService.java | 10 ++++- .../petclinic/service/common/UserService.java | 12 +++++- .../controller/WebSecurityConfig.java | 17 +++----- 12 files changed, 92 insertions(+), 78 deletions(-) diff --git a/src/main/java/org/springframework/samples/petclinic/configuration/WebSocketConfig.java b/src/main/java/org/springframework/samples/petclinic/configuration/WebSocketConfig.java index 7d89077bf..0bf9dcf55 100644 --- a/src/main/java/org/springframework/samples/petclinic/configuration/WebSocketConfig.java +++ b/src/main/java/org/springframework/samples/petclinic/configuration/WebSocketConfig.java @@ -17,19 +17,16 @@ import org.springframework.web.socket.config.annotation.StompEndpointRegistry; @EnableWebSocketMessageBroker public class WebSocketConfig extends AbstractSecurityWebSocketMessageBrokerConfigurer { -/* - @Override - public void registerStompEndpoints(StompEndpointRegistry stompEndpointRegistry) { - stompEndpointRegistry.addEndpoint("/websocket").withSockJS(); - } - - @Override - public void configureMessageBroker(MessageBrokerRegistry registry) { - registry.enableSimpleBroker("/topic"); - registry.setApplicationDestinationPrefixes("/app"); - } - -*/ + /* + * @Override public void registerStompEndpoints(StompEndpointRegistry + * stompEndpointRegistry) { + * stompEndpointRegistry.addEndpoint("/websocket").withSockJS(); } + * + * @Override public void configureMessageBroker(MessageBrokerRegistry registry) { + * registry.enableSimpleBroker("/topic"); + * registry.setApplicationDestinationPrefixes("/app"); } + * + */ @Override public void configureMessageBroker(MessageBrokerRegistry config) { config.enableSimpleBroker("/topic"); @@ -38,22 +35,18 @@ public class WebSocketConfig extends AbstractSecurityWebSocketMessageBrokerConfi @Override public void registerStompEndpoints(StompEndpointRegistry registry) { - registry.addEndpoint("/websocket") - .setAllowedOrigins("*") - .withSockJS(); + registry.addEndpoint("/websocket").setAllowedOrigins("*").withSockJS(); } @Override protected void configureInbound(MessageSecurityMetadataSourceRegistry message) { - message - .nullDestMatcher().permitAll() - .simpDestMatchers("/app/**").permitAll() - .simpSubscribeDestMatchers("/topic/**").permitAll() - .anyMessage().denyAll(); + message.nullDestMatcher().permitAll().simpDestMatchers("/app/**").permitAll() + .simpSubscribeDestMatchers("/topic/**").permitAll().anyMessage().denyAll(); } @Override protected boolean sameOriginDisabled() { return true; } + } diff --git a/src/main/java/org/springframework/samples/petclinic/controller/UserController.java b/src/main/java/org/springframework/samples/petclinic/controller/UserController.java index 7cfa5d80c..d6c20de84 100644 --- a/src/main/java/org/springframework/samples/petclinic/controller/UserController.java +++ b/src/main/java/org/springframework/samples/petclinic/controller/UserController.java @@ -59,7 +59,7 @@ public class UserController extends WebSocketSender { @InitBinder("user") public void setAllowedFields(WebDataBinder dataBinder) { - // dataBinder.setDisallowedFields(CommonAttribute.USER_ID,"roles"); + // dataBinder.setDisallowedFields(CommonAttribute.USER_ID,"roles"); } diff --git a/src/main/java/org/springframework/samples/petclinic/dto/BaseDTO.java b/src/main/java/org/springframework/samples/petclinic/dto/BaseDTO.java index 5d002182d..7adb4312e 100644 --- a/src/main/java/org/springframework/samples/petclinic/dto/BaseDTO.java +++ b/src/main/java/org/springframework/samples/petclinic/dto/BaseDTO.java @@ -41,8 +41,7 @@ public class BaseDTO implements Serializable { @Override public String toString() { - return "BaseDTO{" + - "id=" + id + - '}'; + return "BaseDTO{" + "id=" + id + '}'; } + } diff --git a/src/main/java/org/springframework/samples/petclinic/dto/NamedDTO.java b/src/main/java/org/springframework/samples/petclinic/dto/NamedDTO.java index 01412ee17..1d3168628 100644 --- a/src/main/java/org/springframework/samples/petclinic/dto/NamedDTO.java +++ b/src/main/java/org/springframework/samples/petclinic/dto/NamedDTO.java @@ -50,5 +50,4 @@ public class NamedDTO extends BaseDTO { return getName().equals(namedDTO.getName()); } - } diff --git a/src/main/java/org/springframework/samples/petclinic/dto/common/RoleDTO.java b/src/main/java/org/springframework/samples/petclinic/dto/common/RoleDTO.java index 7c196a68b..e8c1c86fa 100644 --- a/src/main/java/org/springframework/samples/petclinic/dto/common/RoleDTO.java +++ b/src/main/java/org/springframework/samples/petclinic/dto/common/RoleDTO.java @@ -15,4 +15,5 @@ public class RoleDTO extends NamedDTO implements Serializable { public String toString() { return super.toString(); } + } diff --git a/src/main/java/org/springframework/samples/petclinic/model/common/Role.java b/src/main/java/org/springframework/samples/petclinic/model/common/Role.java index 353a14955..0f33a40ee 100644 --- a/src/main/java/org/springframework/samples/petclinic/model/common/Role.java +++ b/src/main/java/org/springframework/samples/petclinic/model/common/Role.java @@ -2,9 +2,41 @@ package org.springframework.samples.petclinic.model.common; import javax.persistence.*; import java.io.Serializable; +import java.util.Collection; @Entity(name = "Role") @Table(name = "roles") -public class Role extends NamedEntity implements Serializable { +public class Role implements Serializable { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + private String name; + @ManyToMany(mappedBy = "roles") + private Collection users; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Collection getUsers() { + return users; + } + + public void setUsers(Collection users) { + this.users = users; + } } diff --git a/src/main/java/org/springframework/samples/petclinic/model/common/User.java b/src/main/java/org/springframework/samples/petclinic/model/common/User.java index 0f14c1cc1..f9fc3a8cd 100644 --- a/src/main/java/org/springframework/samples/petclinic/model/common/User.java +++ b/src/main/java/org/springframework/samples/petclinic/model/common/User.java @@ -54,9 +54,9 @@ public class User extends Person implements Serializable, UserDetails { private boolean credentialsNonExpired; @ManyToMany(fetch = FetchType.EAGER) - @JoinTable(name = "users_roles", joinColumns = @JoinColumn(name = "user_id"), - inverseJoinColumns = @JoinColumn(name = "role_id")) - private Set roles; + @JoinTable(name = "users_roles", joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"), + inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id")) + private Collection roles; @Size(max = CommonParameter.PHONE_MAX, message = CommonError.FORMAT_LESS + CommonParameter.PHONE_MAX) // @Pattern(regexp = CommonParameter.PHONE_REGEXP, message = CommonError.PHONE_FORMAT) @@ -145,6 +145,14 @@ public class User extends Person implements Serializable, UserDetails { this.credentialsNonExpired = credentialsNonExpired; } + public Collection getRoles() { + return roles; + } + + public void setRoles(Collection roles) { + this.roles = roles; + } + @Override public Collection getAuthorities() { Set grantedAuthorities = new HashSet<>(); @@ -154,35 +162,6 @@ public class User extends Person implements Serializable, UserDetails { return grantedAuthorities; } - protected Set getRolesInternal() { - if (this.roles == null) { - this.roles = new HashSet<>(); - } - return this.roles; - } - - protected void setRolesInternal(Set roles) { - this.roles = roles; - } - - @XmlElement - public List getRoles() { - List sortedRoles = new ArrayList<>(getRolesInternal()); - PropertyComparator.sort(sortedRoles, new MutableSortDefinition("name", true, true)); - return Collections.unmodifiableList(sortedRoles); - } - - public int getNrOfRoles() { - return getRolesInternal().size(); - } - - public void addRole(Role role) { - getRolesInternal().add(role); - } - - public void setRoles(Set roles) { - this.roles = roles; - } public String getTelephone() { return telephone; diff --git a/src/main/java/org/springframework/samples/petclinic/repository/RoleRepository.java b/src/main/java/org/springframework/samples/petclinic/repository/RoleRepository.java index 193f2c5ed..07ff5de44 100644 --- a/src/main/java/org/springframework/samples/petclinic/repository/RoleRepository.java +++ b/src/main/java/org/springframework/samples/petclinic/repository/RoleRepository.java @@ -3,7 +3,7 @@ package org.springframework.samples.petclinic.repository; import org.springframework.samples.petclinic.model.common.Role; import org.springframework.data.repository.Repository; -import java.util.List; +import java.util.Collection; /** * Repository class for Role domain objects All method names are compliant @@ -31,7 +31,7 @@ public interface RoleRepository extends Repository { * Retrieve all {@link Role}s from the data store * @return a Collection of {@link Role}s (or an empty Collection if none */ - List findAll(); + Collection findAll(); /** * Save a {@link Role} to the data store, either inserting or updating it. diff --git a/src/main/java/org/springframework/samples/petclinic/repository/UserRepository.java b/src/main/java/org/springframework/samples/petclinic/repository/UserRepository.java index 89fb16232..bd7880e39 100644 --- a/src/main/java/org/springframework/samples/petclinic/repository/UserRepository.java +++ b/src/main/java/org/springframework/samples/petclinic/repository/UserRepository.java @@ -3,6 +3,7 @@ package org.springframework.samples.petclinic.repository; import org.springframework.data.repository.Repository; import org.springframework.samples.petclinic.model.common.User; +import java.util.Collection; import java.util.List; /** @@ -23,7 +24,7 @@ public interface UserRepository extends Repository { * Retrieve all {@link User}s from the data store * @return a Collection of {@link User}s (or an empty Collection if none */ - List findAll(); + Collection findAll(); /** * Save an {@link User} to the data store, either inserting or updating it. @@ -33,9 +34,10 @@ public interface UserRepository extends Repository { User save(User user); /** - * Delete an {@link User} to the data store. + * Delete an {@link User} to the data store. * @param user the {@link User} to delete * @return the deleted {@link User} */ User delete(User user); + } diff --git a/src/main/java/org/springframework/samples/petclinic/service/common/RoleService.java b/src/main/java/org/springframework/samples/petclinic/service/common/RoleService.java index d0f2e43ce..4dff3254f 100644 --- a/src/main/java/org/springframework/samples/petclinic/service/common/RoleService.java +++ b/src/main/java/org/springframework/samples/petclinic/service/common/RoleService.java @@ -8,6 +8,7 @@ import org.springframework.samples.petclinic.service.business.BaseService; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Collection; import java.util.List; /** @@ -69,7 +70,14 @@ public class RoleService implements BaseService { @Override public List findAll() { - return entitiesToDTOS(roleRepository.findAll()); + Collection roles = roleRepository.findAll(); + List roleDTOS = new ArrayList<>(); + + roles.forEach(role -> { + roleDTOS.add(entityToDTO(role)); + }); + + return roleDTOS; } @Override diff --git a/src/main/java/org/springframework/samples/petclinic/service/common/UserService.java b/src/main/java/org/springframework/samples/petclinic/service/common/UserService.java index 2d6f4720b..0bf0b9482 100644 --- a/src/main/java/org/springframework/samples/petclinic/service/common/UserService.java +++ b/src/main/java/org/springframework/samples/petclinic/service/common/UserService.java @@ -5,11 +5,13 @@ import org.springframework.samples.petclinic.dto.common.RoleDTO; import org.springframework.samples.petclinic.dto.common.UserDTO; import org.springframework.samples.petclinic.model.common.Role; import org.springframework.samples.petclinic.model.common.User; +import org.springframework.samples.petclinic.repository.RoleRepository; import org.springframework.samples.petclinic.repository.UserRepository; import org.springframework.samples.petclinic.service.business.BaseService; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Collection; import java.util.List; /** @@ -88,9 +90,14 @@ public class UserService implements BaseService { @Override public List findAll() { - List users = userRepository.findAll(); + Collection users = userRepository.findAll(); + List userDTOS = new ArrayList<>(); - return entitiesToDTOS(users); + users.forEach(user -> { + userDTOS.add(entityToDTO(user)); + }); + + return userDTOS; } @Override @@ -105,6 +112,7 @@ public class UserService implements BaseService { public UserDTO findByEmail(String email) { User user = userRepository.findByEmail(email); + return entityToDTO(user); } diff --git a/src/test/java/org/springframework/samples/petclinic/controller/WebSecurityConfig.java b/src/test/java/org/springframework/samples/petclinic/controller/WebSecurityConfig.java index 820aa7308..ceeba2359 100644 --- a/src/test/java/org/springframework/samples/petclinic/controller/WebSecurityConfig.java +++ b/src/test/java/org/springframework/samples/petclinic/controller/WebSecurityConfig.java @@ -20,21 +20,14 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { PasswordEncoder encoder = PasswordEncoderFactories.createDelegatingPasswordEncoder(); - auth.inMemoryAuthentication() - .passwordEncoder(encoder) - .withUser(TEST_USER) - .password(encoder.encode("secret")) - .roles("ROLE_USER"); + auth.inMemoryAuthentication().passwordEncoder(encoder).withUser(TEST_USER).password(encoder.encode("secret")) + .roles("ROLE_USER"); } @Override protected void configure(HttpSecurity http) throws Exception { - http.authorizeRequests() - .antMatchers("/owners/**", "/pets/**", "/users/**", "/visits/**") - .authenticated() - .antMatchers("/**") - .permitAll() - .and() - .httpBasic(); + http.authorizeRequests().antMatchers("/owners/**", "/pets/**", "/users/**", "/visits/**").authenticated() + .antMatchers("/**").permitAll().and().httpBasic(); } + }