Skip to content

Commit 6570ddb

Browse files
Autenticado o usuario
1 parent 2565a48 commit 6570ddb

File tree

8 files changed

+133
-11
lines changed

8 files changed

+133
-11
lines changed

testeSantanderWay/src/main/java/br/com/testesantanderway/TesteSantanderWayApplication.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,4 @@ public class TesteSantanderWayApplication {
1212
public static void main(String[] args) {
1313
SpringApplication.run(TesteSantanderWayApplication.class, args);
1414
}
15-
16-
}
15+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package br.com.testesantanderway.config.security;
2+
3+
import br.com.testesantanderway.modelo.Cliente;
4+
import br.com.testesantanderway.repository.ClienteRepository;
5+
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.security.core.userdetails.UserDetails;
7+
import org.springframework.security.core.userdetails.UserDetailsService;
8+
import org.springframework.security.core.userdetails.UsernameNotFoundException;
9+
import org.springframework.stereotype.Service;
10+
11+
import java.util.Optional;
12+
13+
@Service
14+
public class AutenticacaoService implements UserDetailsService {
15+
16+
@Autowired
17+
private ClienteRepository repository;
18+
19+
@Override
20+
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
21+
Optional<Cliente> clientePorEmail = repository.findByEmail(username);
22+
23+
if (clientePorEmail.isPresent()){
24+
return clientePorEmail.get();
25+
}
26+
27+
throw new UsernameNotFoundException("Dados Inválidos");
28+
}
29+
30+
}
Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,39 @@
11
package br.com.testesantanderway.config.security;
22

3+
import org.springframework.beans.factory.annotation.Autowired;
34
import org.springframework.context.annotation.Configuration;
45
import org.springframework.http.HttpMethod;
56
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
67
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
78
import org.springframework.security.config.annotation.web.builders.WebSecurity;
89
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
910
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
11+
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
1012

1113
@EnableWebSecurity
1214
@Configuration
1315
public class ConfigSeguranca extends WebSecurityConfigurerAdapter {
14-
16+
@Autowired
17+
private AutenticacaoService autenticacaoService;
1518

1619
//Autenticação
1720
@Override
1821
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
22+
auth.userDetailsService(autenticacaoService).passwordEncoder(new BCryptPasswordEncoder());
1923
}
2024

2125
//Autorização
2226
@Override
2327
protected void configure(HttpSecurity http) throws Exception {
2428
http.authorizeRequests()
2529
.antMatchers(HttpMethod.GET,"/clientes").permitAll()
26-
.antMatchers(HttpMethod.GET,"/clientes/*").permitAll();
30+
.antMatchers(HttpMethod.GET,"/clientes/*").permitAll()
31+
.anyRequest().authenticated()
32+
.and().formLogin();
2733
}
2834

2935
//Recursos estáticos(js, css, img, etc.)
3036
@Override
3137
public void configure(WebSecurity web) throws Exception {
3238
}
33-
}
39+
}

testeSantanderWay/src/main/java/br/com/testesantanderway/controller/LoginCliente.java renamed to testeSantanderWay/src/main/java/br/com/testesantanderway/controller/ClienteController.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import org.springframework.data.domain.Sort;
1616
import org.springframework.data.web.PageableDefault;
1717
import org.springframework.http.ResponseEntity;
18+
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
1819
import org.springframework.web.bind.annotation.*;
1920
import org.springframework.web.util.UriComponentsBuilder;
2021

@@ -24,7 +25,7 @@
2425

2526
@RestController
2627
@RequestMapping("/clientes")
27-
public class LoginCliente {
28+
public class ClienteController {
2829
@Autowired
2930
private ClienteRepository clienteRepository;
3031

@@ -46,6 +47,7 @@ public Page<ClienteDTO> dadosLoginCliente(@RequestParam(required = false) String
4647

4748
@PostMapping
4849
public ResponseEntity<ClienteDTO> cadastrarCliente(@RequestBody @Valid ClienteForm form, UriComponentsBuilder uriBuilder) {
50+
form.setSenha(new BCryptPasswordEncoder().encode(form.getSenha()));
4951
Cliente clientesCadastro = form.converter();
5052
clienteRepository.save(clientesCadastro);
5153
URI uri = uriBuilder.path("/{id}").buildAndExpand(clientesCadastro.getCodigoUsuario()).toUri();

testeSantanderWay/src/main/java/br/com/testesantanderway/controller/form/ClienteForm.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
package br.com.testesantanderway.controller.form;
22

3-
import br.com.testesantanderway.dto.ClienteDTO;
43
import br.com.testesantanderway.modelo.Cliente;
5-
import br.com.testesantanderway.repository.ClienteRepository;
64
import org.hibernate.validator.constraints.Length;
7-
85
import javax.validation.constraints.NotEmpty;
96
import javax.validation.constraints.NotNull;
107
import java.time.LocalDateTime;

testeSantanderWay/src/main/java/br/com/testesantanderway/modelo/Cliente.java

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,16 @@
33
import org.apache.solr.client.solrj.beans.Field;
44
import org.springframework.data.annotation.Id;
55
import org.springframework.data.solr.core.mapping.SolrDocument;
6+
import org.springframework.security.core.GrantedAuthority;
7+
import org.springframework.security.core.userdetails.UserDetails;
68

79
import java.time.LocalDateTime;
10+
import java.util.ArrayList;
11+
import java.util.Collection;
12+
import java.util.List;
813

914
@SolrDocument(collection = "cliente")
10-
public class Cliente {
15+
public class Cliente implements UserDetails {
1116

1217
@Id
1318
@Field
@@ -21,6 +26,8 @@ public class Cliente {
2126
@Field
2227
private LocalDateTime dataCriacao;
2328

29+
private List<Perfil> perfis = new ArrayList<>();
30+
2431
public Cliente() {
2532
}
2633

@@ -68,4 +75,39 @@ public int hashCode() {
6875

6976
return result;
7077
}
78+
79+
@Override
80+
public Collection<? extends GrantedAuthority> getAuthorities() {
81+
return this.perfis;
82+
}
83+
84+
@Override
85+
public String getPassword() {
86+
return this.senha;
87+
}
88+
89+
@Override
90+
public String getUsername() {
91+
return this.nome;
92+
}
93+
94+
@Override
95+
public boolean isAccountNonExpired() {
96+
return true;
97+
}
98+
99+
@Override
100+
public boolean isAccountNonLocked() {
101+
return true;
102+
}
103+
104+
@Override
105+
public boolean isCredentialsNonExpired() {
106+
return true;
107+
}
108+
109+
@Override
110+
public boolean isEnabled() {
111+
return true;
112+
}
71113
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package br.com.testesantanderway.modelo;
2+
3+
import org.apache.solr.client.solrj.beans.Field;
4+
import org.springframework.data.annotation.Id;
5+
import org.springframework.data.solr.core.mapping.SolrDocument;
6+
import org.springframework.security.core.GrantedAuthority;
7+
8+
@SolrDocument(collection = "perfil")
9+
public class Perfil implements GrantedAuthority {
10+
11+
public Perfil(String codigoUsuario, String nomePerfil) {
12+
this.codigoUsuario = codigoUsuario;
13+
this.nomePerfil = nomePerfil;
14+
}
15+
16+
@Id
17+
@Field
18+
private String codigoUsuario;
19+
20+
@Field
21+
private String nomePerfil;
22+
23+
public String getCodigoUsuario() {
24+
return codigoUsuario;
25+
}
26+
27+
public void setCodigoUsuario(String codigoUsuario) {
28+
this.codigoUsuario = codigoUsuario;
29+
}
30+
31+
public String getNome() {
32+
return nomePerfil;
33+
}
34+
35+
public void setNome(String nome) {
36+
this.nomePerfil = nome;
37+
}
38+
39+
@Override
40+
public String getAuthority() {
41+
return nomePerfil;
42+
}
43+
}

testeSantanderWay/src/main/java/br/com/testesantanderway/repository/ClienteRepository.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
import org.springframework.data.domain.Pageable;
66
import org.springframework.data.solr.repository.SolrCrudRepository;
77

8-
public interface ClienteRepository extends SolrCrudRepository <Cliente, String> {
8+
import java.util.Optional;
9+
10+
public interface ClienteRepository extends SolrCrudRepository<Cliente, String> {
911
Page<Cliente> findByNome(String nome, Pageable paginacao);
12+
Optional<Cliente> findByEmail(String email);
1013
}

0 commit comments

Comments
 (0)