Olá! Segui os passos da aula 01 tópico 05 e mesmo assim da forbidden ao tentar excluir o tópico como moderador.
Inseri o moderador e sua permissão na tabela USUARIO_PERFIS
INSERT INTO USUARIO(nome, email, senha) VALUES('Aluno', 'aluno@email.com', '$2a$10$sFKmbxbG4ryhwPNx/l3pgOJSt.fW1z6YcUnuE2X8APA/Z3NI/oSpq');
INSERT INTO USUARIO(nome, email, senha) VALUES('Moderador', 'moderador@email.com', '$2a$10$sFKmbxbG4ryhwPNx/l3pgOJSt.fW1z6YcUnuE2X8APA/Z3NI/oSpq');
INSERT INTO PERFIL(id, nome) VALUES(1, 'ROLE_ALUNO');
INSERT INTO PERFIL(id, nome) VALUES(2, 'ROLE_MODERADOR');
INSERT INTO USUARIO_PERFIS(usuario_id, perfis_id) VALUES(1, 1);
INSERT INTO USUARIO_PERFIS(usuario_id, perfis_id) VALUES(2, 2);
Na SecurityConfigurations adicionei a permissão ao Role "moderador"
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers(HttpMethod.GET, "/topicos").permitAll()
.antMatchers(HttpMethod.GET, "/topicos/*").permitAll()
.antMatchers(HttpMethod.POST, "/auth").permitAll()
.antMatchers(HttpMethod.GET, "/actuator/**").permitAll()
.antMatchers(HttpMethod.DELETE, "/topicos/*").hasRole("MODERADOR")
.anyRequest().authenticated()
.and().csrf().disable()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and().addFilterBefore(new AutenticacaoViaTokenFilter(tokenService, usuarioRepository), UsernamePasswordAuthenticationFilter.class);
}
No POSTMAN
Fiz uma requisição no endpoint: http://localhost:8080/auth passando o Body:
{
"email":"moderador@email.com",
"senha":"123456"
}
E obtive o token de autenticação.
Fiz a requisição do tipo delete com o token na parte de Authorization e com o mesmo body utilizado anteriormente. Porém só consigo o resultado:
{
"timestamp": "2021-06-07T15:47:57.860+00:00",
"status": 403,
"error": "Forbidden",
"message": "Forbidden",
"path": "/topicos/2"
}