проблема с доступом для роли ADMIN
Всем привет. Есть форма авторизации, которая выдает обычным пользователям роль USER, потом через sql я обновил роль одного из пользователя повысив его до ADMIN, но этот пользователь не может зайти на страницу предназначенную для роли ADMIN. Как быть в этой ситуации?
Spring Security
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private PasswordEncoder passwordEncoder;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/upload").hasRole(User.ROLE.ADMIN.toString())
.antMatchers("/personalArea").hasAnyRole(User.ROLE.USER.toString())
.antMatchers("/*").permitAll()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.defaultSuccessUrl("/")
.and()
.csrf()
.disable()
.logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/")
;
}
}
Контролер, отвечающий за регистрацию
@RequestMapping("/register")
public class RegisterController {
private UserService userService;
@Autowired
public RegisterController(UserService userService) {
this.userService = userService;
}
@GetMapping
public String registerPage(Model model){
return "register";
}
@PostMapping
public String registerUser(User user){
userService.registration(user);
return "redirect:/login";
}
}
регистрация, в UserService
public void registration(User user){
user.setPassword(passwordEncoder.encode(user.getPassword()));
user.setRole(User.ROLE.USER);
log.info(user.toString());
userRepository.save();
User admin = new User();
admin.setUsername("admin");
admin.setEmail("[email protected]");
admin.setPhoneNumber("234");
admin.setPassword(passwordEncoder.encode("12345678"));
admin.setRole(User.ROLE.ADMIN);
userRepository.save();
}
Класс Пользователя
@Getter
@Setter
@Entity
@Table(name = "users")
@RequiredArgsConstructor
@Transactional
public class User implements UserDetails{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String username;
@Email
private String email;
@NumberFormat
private String phoneNumber;
private String password;
@Enumerated(EnumType.STRING)
private ROLE role;
@OneToMany(fetch = FetchType.EAGER, mappedBy = "user")
private List<Order> orderList = new ArrayList<>();
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return Arrays.asList(new SimpleGrantedAuthority("ROLE_USER"));
}
@Override
public boolean isAccountNonExpired() {
return true;
}
@Override
public boolean isAccountNonLocked() {
return true;
}
@Override
public boolean isCredentialsNonExpired() {
return true;
}
@Override
public boolean isEnabled() {
return true;
}
public enum ROLE implements GrantedAuthority{
USER, ADMIN, MODERATOR, ANON;
@Override
public String getAuthority() {
return name();
}
}
public ROLE getAnonRole(){
return ROLE.ANON;
}
public void addOrder(Order order){
this.orderList.add(order);
}
}