Skip to content

Commit 45b9213

Browse files
Criado e configurado o usuario, incluindo seguranca do mesmo
1 parent fa5d67b commit 45b9213

23 files changed

+569
-104
lines changed

testeSantanderWay/src/main/java/br/com/testesantanderway/config/security/ConfigSeguranca.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ protected void configure(HttpSecurity http) throws Exception {
4343
http.authorizeRequests()
4444
.antMatchers(HttpMethod.GET,"/clientes/*").permitAll()
4545
.antMatchers(HttpMethod.GET,"/gastos/*").permitAll()
46+
.antMatchers(HttpMethod.GET,"/usuarios/*").permitAll()
47+
.antMatchers(HttpMethod.POST,"/usuarios/*").permitAll()
4648
.antMatchers(HttpMethod.POST,"/auth").permitAll()
4749
.antMatchers(HttpMethod.GET,"/actuator/**").permitAll()
4850
.antMatchers(

testeSantanderWay/src/main/java/br/com/testesantanderway/config/security/ServicoDeToken.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public String gerarToken(Authentication authentication) {
2424

2525
return Jwts.builder()
2626
.setIssuer("Api teste way")
27-
.setSubject(clienteLogado.getCodigoUsuario())
27+
.setSubject(clienteLogado.getCodigoCliente())
2828
.setIssuedAt(hoje)
2929
.setExpiration(dataExpiracao)
3030
.signWith(SignatureAlgorithm.HS256, secret).compact();

testeSantanderWay/src/main/java/br/com/testesantanderway/controller/ClienteController.java

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

3-
43
import br.com.testesantanderway.controller.form.AtualizacaoClienteForm;
54
import br.com.testesantanderway.controller.form.ClienteForm;
65
import br.com.testesantanderway.dto.ClienteDTO;
@@ -10,8 +9,8 @@
109
import org.springframework.beans.factory.annotation.Autowired;
1110
import org.springframework.cache.annotation.CacheEvict;
1211
import org.springframework.cache.annotation.Cacheable;
13-
import org.springframework.data.domain.Page;
1412
import org.springframework.data.domain.Pageable;
13+
import org.springframework.data.domain.Page;
1514
import org.springframework.data.domain.Sort;
1615
import org.springframework.data.web.PageableDefault;
1716
import org.springframework.http.ResponseEntity;
@@ -31,16 +30,16 @@ public class ClienteController {
3130

3231
@GetMapping
3332
@Cacheable(value = "listaDeCliente")
34-
public Page<ClienteDTO> dadosLoginCliente(@RequestParam(required = false) String nome,
35-
@PageableDefault(sort = "codigoUsuario",
33+
public Page<ClienteDTO> dadosLoginCliente(@RequestParam(required = false) String nomeCliente,
34+
@PageableDefault(sort = "codigoCliente",
3635
direction = Sort.Direction.ASC) Pageable paginacao) {
3736

38-
if (nome == null || nome.isEmpty()) {
37+
if (nomeCliente == null || nomeCliente.isEmpty()) {
3938
Page<Cliente> clientes = clienteRepository.findAll(paginacao);
4039

4140
return ClienteDTO.converter(clientes);
4241
} else {
43-
Page<Cliente> clientes = clienteRepository.findByNome(nome, paginacao);
42+
Page<Cliente> clientes = clienteRepository.findByNomeCliente(nomeCliente, paginacao);
4443

4544
return ClienteDTO.converter(clientes);
4645
}
@@ -51,7 +50,7 @@ public ResponseEntity<ClienteDTO> cadastrarCliente(@RequestBody @Valid ClienteFo
5150
form.setSenha(new BCryptPasswordEncoder().encode(form.getSenha()));
5251
Cliente clientesCadastro = form.converter();
5352
clienteRepository.save(clientesCadastro);
54-
URI uri = uriBuilder.path("/{id}").buildAndExpand(clientesCadastro.getCodigoUsuario()).toUri();
53+
URI uri = uriBuilder.path("/{id}").buildAndExpand(clientesCadastro.getCodigoCliente()).toUri();
5554

5655
return ResponseEntity.created(uri).body(new ClienteDTO(clientesCadastro));
5756
}

testeSantanderWay/src/main/java/br/com/testesantanderway/controller/GastosController.java

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,37 +26,48 @@ public class GastosController {
2626

2727
@GetMapping
2828
@Cacheable(value = "gastoDeCliente")
29-
public Page<GastosDTO> dadosDosGastos(@RequestParam(required = false) String descricao,
30-
@PageableDefault(sort = "codigoUsuario",
29+
public Page<GastosDTO> listagemDeGastos(@RequestParam(required = false) String descricao,
30+
@PageableDefault(sort = "codigoCliente",
3131
direction = Sort.Direction.ASC) Pageable paginacao) {
3232

3333
if (descricao == null || descricao.isEmpty()) {
3434
Page<Gasto> gastos = gastoRepository.findAll(paginacao);
3535

3636
return GastosDTO.converter(gastos);
3737
} else {
38-
Page<Gasto> gastos = gastoRepository.findByDescricao(descricao, paginacao);
38+
Page<Gasto> gastos = gastoRepository.findByCategoria(descricao, paginacao);
3939

4040
return GastosDTO.converter(gastos);
4141
}
4242
}
4343

4444
@PostMapping
45-
public ResponseEntity<GastosDTO> lancarGastos(@RequestBody GastoForm form, UriComponentsBuilder uriBuilder) {
45+
public ResponseEntity<GastosDTO> lancarGastosCartao(@RequestBody GastoForm form, UriComponentsBuilder uriBuilder) {
4646
Gasto gastoCadastro = form.converter();
47+
//TODO pesquisar nos gastos pela descrição se existe algim já categrizado e aplica essa categoria
4748
gastoRepository.save(gastoCadastro);
48-
URI uri = uriBuilder.path("/{id}").buildAndExpand(gastoCadastro.getCodigoUsuario()).toUri();
49+
URI uri = uriBuilder.path("/{id}").buildAndExpand(gastoCadastro.getCodigoGasto()).toUri();
4950

5051
return ResponseEntity.created(uri).body(new GastosDTO(gastoCadastro));
5152
}
5253

5354
@GetMapping("/{dataCriacao}")
54-
public ResponseEntity<DetalheGastosDTO> detalheGastosPorData(@PathVariable String dataCriacao) {
55+
public ResponseEntity<DetalheGastosDTO> listagemDeGastosPorData(@PathVariable String dataCriacao) {
5556
Optional<Gasto> gasto = gastoRepository.findByDataCriacao(dataCriacao);
57+
5658
if (gasto.isPresent()) {
5759
return ResponseEntity.ok(new DetalheGastosDTO(gasto.get()));
5860
}
5961

6062
return ResponseEntity.notFound().build();
6163
}
64+
65+
// @PostMapping("/{categorizaGasto}")
66+
// public ResponseEntity<GastosDTO> categorizarGastos(@RequestBody CategoriaForm form, UriComponentsBuilder uriBuilder) {
67+
// Gasto categoriaCadastro = form.converter();
68+
// gastoRepository.save(categoriaCadastro);
69+
// URI uri = uriBuilder.path("/{id}").buildAndExpand(categoriaCadastro.getCodigoGasto()).toUri();
70+
//
71+
// return ResponseEntity.created(uri).body(new GastosDTO(categoriaCadastro));
72+
// }
6273
}
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
package br.com.testesantanderway.controller;
2+
3+
import br.com.testesantanderway.controller.form.AtualizacaoUsuarioForm;
4+
import br.com.testesantanderway.controller.form.UsuarioForm;
5+
import br.com.testesantanderway.dto.DetalheUsuarioDTO;
6+
import br.com.testesantanderway.dto.UsuarioDTO;
7+
import br.com.testesantanderway.modelo.Usuario;
8+
import br.com.testesantanderway.repository.UsuarioRepository;
9+
import org.springframework.beans.factory.annotation.Autowired;
10+
import org.springframework.cache.annotation.CacheEvict;
11+
import org.springframework.cache.annotation.Cacheable;
12+
import org.springframework.data.domain.Page;
13+
import org.springframework.data.domain.Pageable;
14+
import org.springframework.data.domain.Sort;
15+
import org.springframework.data.web.PageableDefault;
16+
import org.springframework.http.ResponseEntity;
17+
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
18+
import org.springframework.web.bind.annotation.*;
19+
import org.springframework.web.util.UriComponentsBuilder;
20+
21+
import javax.validation.Valid;
22+
import java.net.URI;
23+
import java.util.Optional;
24+
25+
@RestController
26+
@RequestMapping("/usuarios")
27+
public class UsuarioController {
28+
@Autowired
29+
private UsuarioRepository usuarioRepository;
30+
31+
// @GetMapping
32+
// @Cacheable(value = "listaDeUsuario")
33+
// public Page<UsuarioDTO> dadosLoginUsuario(@RequestParam(required = false) String nomeUsuario,
34+
// @PageableDefault(sort = "codigoUsuario",
35+
// direction = Sort.Direction.ASC) Pageable paginacao) {
36+
//
37+
// if (nomeUsuario == null || nomeUsuario.isEmpty()) {
38+
// Page<Usuario> usuarios = usuarioRepository.findAll(paginacao);
39+
//
40+
// return UsuarioDTO.converter(usuarios);
41+
// } else {
42+
// Page<Usuario> usuarios = usuarioRepository.findByNomeUsuario(nomeUsuario, paginacao);
43+
//
44+
// return UsuarioDTO.converter(usuarios);
45+
// }
46+
// }
47+
48+
@PostMapping
49+
public ResponseEntity<UsuarioDTO> cadastrarUsuario(@RequestBody @Valid UsuarioForm form, UriComponentsBuilder uriBuilder) {
50+
form.setSenha(new BCryptPasswordEncoder().encode(form.getSenha()));
51+
Usuario usuarioCadastro = form.converter();
52+
usuarioRepository.save(usuarioCadastro);
53+
URI uri = uriBuilder.path("/{id}").buildAndExpand(usuarioCadastro.getCodigoUsuario()).toUri();
54+
55+
return ResponseEntity.created(uri).body(new UsuarioDTO(usuarioCadastro));
56+
}
57+
58+
@GetMapping("/{id}")
59+
public ResponseEntity<DetalheUsuarioDTO> detalhe(@PathVariable String id) {
60+
Optional<Usuario> usuario = usuarioRepository.findById(id);
61+
if (usuario.isPresent()) {
62+
return ResponseEntity.ok(new DetalheUsuarioDTO(usuario.get()));
63+
}
64+
65+
return ResponseEntity.notFound().build();
66+
}
67+
68+
@PutMapping("/{id}")
69+
@CacheEvict(value = "listaDeUsuario", allEntries = true)
70+
public ResponseEntity<UsuarioDTO> atualizar(@PathVariable String id, @RequestBody @Valid AtualizacaoUsuarioForm form) {
71+
Optional<Usuario> optional = usuarioRepository.findById(id);
72+
if (optional.isPresent()) {
73+
Usuario usuario = form.atualizar(id, usuarioRepository);
74+
return ResponseEntity.ok(new UsuarioDTO(usuario));
75+
}
76+
77+
return ResponseEntity.notFound().build();
78+
}
79+
80+
@DeleteMapping("/{id}")
81+
@CacheEvict(value = "listaDeUsuario", allEntries = true)
82+
public ResponseEntity<?> remover(@PathVariable String id) {
83+
Optional<Usuario> optional = usuarioRepository.findById(id);
84+
if (optional.isPresent()) {
85+
usuarioRepository.deleteById(id);
86+
return ResponseEntity.ok().build();
87+
}
88+
89+
return ResponseEntity.notFound().build();
90+
}
91+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package br.com.testesantanderway.controller.form;
2+
3+
import br.com.testesantanderway.modelo.Usuario;
4+
import br.com.testesantanderway.repository.UsuarioRepository;
5+
import org.hibernate.validator.constraints.Length;
6+
7+
import javax.validation.constraints.NotEmpty;
8+
import javax.validation.constraints.NotNull;
9+
10+
public class AtualizacaoUsuarioForm {
11+
@NotNull
12+
@NotEmpty
13+
@Length(min = 11)
14+
private String email;
15+
@NotNull @NotEmpty @Length(min = 6)
16+
private String senha;
17+
18+
public AtualizacaoUsuarioForm() {
19+
}
20+
21+
public AtualizacaoUsuarioForm(Usuario usuario) {
22+
this.email = usuario.getEmail();
23+
this.senha = usuario.getSenha();
24+
}
25+
26+
public String getEmail() {
27+
return email;
28+
}
29+
30+
public void setEmail(String email) {
31+
this.email = email;
32+
}
33+
34+
public String getSenha() {
35+
return senha;
36+
}
37+
38+
public void setSenha(String senha) {
39+
this.senha = senha;
40+
}
41+
42+
public Usuario atualizar(String id, UsuarioRepository usuarioRepository) {
43+
Usuario usuario = usuarioRepository.findById(id).orElseThrow(() -> new RuntimeException("Não encontrado"));
44+
45+
usuario.setEmail(this.email);
46+
usuario.setSenha(this.senha);
47+
48+
usuarioRepository.save(usuario);
49+
50+
return usuario;
51+
}
52+
}

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

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,9 @@
66
import javax.validation.constraints.NotNull;
77
import java.time.LocalDateTime;
88

9-
109
public class ClienteForm {
1110
@NotNull @NotEmpty @Length(min = 2)
12-
private String nome;
11+
private String nomeCliente;
1312
@NotNull @NotEmpty @Length(min = 11)
1413
private String email;
1514
@NotNull @NotEmpty @Length(min = 6)
@@ -20,18 +19,18 @@ public ClienteForm() {
2019
}
2120

2221
public ClienteForm(Cliente cliente){
23-
this.nome = cliente.getNome();
22+
this.nomeCliente = cliente.getNomeCliente();
2423
this.email = cliente.getEmail();
2524
this.senha = cliente.getSenha();
2625
this.dataCriacao = cliente.getDataCriacao();
2726
}
2827

29-
public String getNome() {
30-
return nome;
28+
public String getNomeCliente() {
29+
return nomeCliente;
3130
}
3231

33-
public void setNome(String nome) {
34-
this.nome = nome;
32+
public void setNomeCliente(String nomeCliente) {
33+
this.nomeCliente = nomeCliente;
3534
}
3635

3736
public String getEmail() {
@@ -59,6 +58,6 @@ public void LocalDateTime (LocalDateTime dataCriacao) {
5958
}
6059

6160
public Cliente converter() {
62-
return new Cliente(nome, email, senha, dataCriacao);
61+
return new Cliente(nomeCliente, email, senha, dataCriacao);
6362
}
6463
}

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

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

33
import br.com.testesantanderway.modelo.Gasto;
4-
import org.hibernate.validator.constraints.Length;
4+
55
import javax.validation.constraints.NotEmpty;
66
import javax.validation.constraints.NotNull;
77
import java.time.LocalDateTime;
88

99
public class GastoForm {
10-
@NotNull @NotEmpty @Length(min = 11)
10+
@NotNull
11+
@NotEmpty
1112
private String descricao;
12-
@NotNull @NotEmpty
13+
@NotNull
14+
@NotEmpty
1315
private Double valor;
1416
private LocalDateTime dataCriacao;
1517

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package br.com.testesantanderway.controller.form;
2+
3+
import br.com.testesantanderway.modelo.Usuario;
4+
import org.hibernate.validator.constraints.Length;
5+
6+
import javax.validation.constraints.NotEmpty;
7+
import javax.validation.constraints.NotNull;
8+
import java.time.LocalDateTime;
9+
10+
public class UsuarioForm {
11+
@NotNull
12+
@NotEmpty
13+
@Length(min = 2)
14+
private String nomeUsuario;
15+
@NotNull @NotEmpty @Length(min = 11)
16+
private String email;
17+
@NotNull @NotEmpty @Length(min = 6)
18+
private String senha;
19+
private LocalDateTime dataCriacao;
20+
21+
public UsuarioForm() {
22+
}
23+
24+
public UsuarioForm(Usuario usuario) {
25+
this.nomeUsuario = usuario.getNomeUsuario();
26+
this.email = usuario.getEmail();
27+
this.senha = usuario.getSenha();
28+
this.dataCriacao = usuario.getDataCriacao();
29+
}
30+
31+
public String getNomeUsuario() {
32+
return nomeUsuario;
33+
}
34+
35+
public void setNomeUsuario(String nomeUsuario) {
36+
this.nomeUsuario = nomeUsuario;
37+
}
38+
39+
public String getEmail() {
40+
return email;
41+
}
42+
43+
public void setEmail(String email) {
44+
this.email = email;
45+
}
46+
47+
public String getSenha() {
48+
return senha;
49+
}
50+
51+
public void setSenha(String senha) {
52+
this.senha = senha;
53+
}
54+
55+
public LocalDateTime getDataCriacao() {
56+
return dataCriacao;
57+
}
58+
59+
public void setDataCriacao(LocalDateTime dataCriacao) {
60+
this.dataCriacao = dataCriacao;
61+
}
62+
63+
public Usuario converter() {
64+
return new Usuario(nomeUsuario, email, senha, dataCriacao);
65+
}
66+
}

0 commit comments

Comments
 (0)