Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Auto detect text files and perform LF normalization
* text=auto
19 changes: 19 additions & 0 deletions DemoApplication.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package br.com.altrantest.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
@SpringBootApplication
@EnableJpaRepositories

public class DemoApplication extends SpringBootServletInitializer {


public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}


}

34 changes: 34 additions & 0 deletions config/SecurityConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package br.com.altrantest.demo.config;

import br.com.altrantest.demo.service.CustomUserDetailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private CustomUserDetailService customUserDetailService;

@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/*/user/**") .hasRole("USER")
.antMatchers("/*/admin/**") .hasRole("ADMIN")
.and()
.httpBasic()
.and()
.csrf().disable();
}

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(customUserDetailService).passwordEncoder(new BCryptPasswordEncoder());
}

}
54 changes: 54 additions & 0 deletions controller/ControllerUser.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package br.com.altrantest.demo.controller;

import br.com.altrantest.demo.repository.UsuarioRepository;
import br.com.altrantest.demo.usuario.UsuarioUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/v1")
public class ControllerUser {
@Autowired
private UsuarioRepository repository;
private UsuarioUser usuario;


//Retorna tudo
@GetMapping(path = "/user")
public ResponseEntity<?>findAll(){

return new ResponseEntity<>(repository.findAll(), HttpStatus.OK);
}
//controle de usuario
@GetMapping(path = "/user/{id}")
public ResponseEntity<?> getUserById(@PathVariable("id")Long id,
@AuthenticationPrincipal UserDetails userDetails){
System.out.println(userDetails);
UsuarioUser usuario = repository.findById(id).get();
return new ResponseEntity<>(usuario, HttpStatus.OK);
}
@PostMapping(path = "/admin")
public ResponseEntity<UsuarioUser> adcionarUsuario(@RequestBody UsuarioUser usuario){
usuario = repository.save(usuario);
return ResponseEntity.ok().body(usuario);
}
@DeleteMapping(path = "/admin/{id}")
public ResponseEntity<?>delete(@PathVariable Long id){
repository.deleteById(id);
return new ResponseEntity<>(HttpStatus.OK);
}
@PutMapping(path = "/admin/{id}")
public ResponseEntity<?> update(@RequestBody UsuarioUser usuario){
repository.save(usuario);
return new ResponseEntity<>(HttpStatus.OK);
}





}
62 changes: 62 additions & 0 deletions controller/GastosController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package br.com.altrantest.demo.controller;

import br.com.altrantest.demo.gastos.GastoByUser;
import br.com.altrantest.demo.repository.GastosRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;



@RequestMapping("/v1/gastos")
@RestController
public class GastosController {

@Autowired
private GastosRepository gastosRepository;

private GastoByUser gastosByUser;

//Controle de gastos


@GetMapping(path = "/user/all")
public ResponseEntity<?> findAllGastos() {

return new ResponseEntity<>(gastosRepository.findAll(), HttpStatus.OK);
}

@GetMapping(path = "/user/{id}")
public ResponseEntity<?> getGastosById(@PathVariable("id") Long id) {
GastoByUser gastos = gastosRepository.findById(id).get();
return new ResponseEntity<>(gastos, HttpStatus.OK);
}

@PostMapping(path = "/user")
public ResponseEntity<GastoByUser> adcionarGastos(@RequestBody GastoByUser gastosByUser) {
gastosByUser = gastosRepository.save(gastosByUser);
return ResponseEntity.ok().body(gastosByUser);
}

@DeleteMapping(path = "/admin/{id}")
public ResponseEntity<?> deleteGastos(@PathVariable Long id) {
gastosRepository.deleteById(id);
return new ResponseEntity<>(HttpStatus.OK);
}

@PutMapping(path = "/{id}")
public ResponseEntity<?> update(@RequestBody GastoByUser gastoByUser) {
gastosRepository.save(gastoByUser);
return new ResponseEntity<>(HttpStatus.OK);
}

@GetMapping(path = "/user/filtro/{descricao}")
@ResponseBody
public ResponseEntity<?> getByDesc(@PathVariable String descricao) {

return new ResponseEntity<>(gastosRepository.findByDescricao(descricao), HttpStatus.OK);
}


}
63 changes: 63 additions & 0 deletions gastos/GastoByUser.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package br.com.altrantest.demo.gastos;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import java.io.Serializable;
import java.util.Date;

@Entity
public class GastoByUser implements Serializable {
@Id
@GeneratedValue
private Long id;
private String descricao;
private Date dataCompra ;
private Long codigoUsuario;
private Double valor;



public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}


public String getDescricao() {
return descricao;
}

public void setDescricao(String descricao) {
this.descricao = descricao;
}

public Date getDataCompra() {
return dataCompra;
}

public void setDataCompra(Date dataCompra) {
this.dataCompra = dataCompra;
}

public Long getCodigoUsuario() {
return codigoUsuario;
}

public void setCodigoUsuario(Long codigoUsuario) {
this.codigoUsuario = codigoUsuario;
}

public Double getValor() {
return valor;
}

public void setValor(Double valor) {
this.valor = valor;
}


}
14 changes: 14 additions & 0 deletions repository/GastosRepository.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package br.com.altrantest.demo.repository;

import br.com.altrantest.demo.gastos.GastoByUser;
import org.springframework.data.repository.PagingAndSortingRepository;

import java.util.List;
import java.util.Optional;

public interface GastosRepository extends PagingAndSortingRepository<GastoByUser, Long> {
public Optional<GastoByUser> findById(Long id);


List<GastoByUser> findByDescricao(String desc);
}
15 changes: 15 additions & 0 deletions repository/UsuarioRepository.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package br.com.altrantest.demo.repository;

import br.com.altrantest.demo.usuario.UsuarioUser;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;

import java.util.Optional;

@Repository
public interface UsuarioRepository extends PagingAndSortingRepository<UsuarioUser, Long> {
public Optional<UsuarioUser> findById(Long id);



}
8 changes: 8 additions & 0 deletions repository/ValidationRepository.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package br.com.altrantest.demo.repository;

import br.com.altrantest.demo.usuario.UserValid;
import org.springframework.data.repository.PagingAndSortingRepository;

public interface ValidationRepository extends PagingAndSortingRepository<UserValid, Long> {
UserValid findByUsername(String username);
}
31 changes: 31 additions & 0 deletions service/CustomUserDetailService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package br.com.altrantest.demo.service;

import br.com.altrantest.demo.repository.ValidationRepository;
import br.com.altrantest.demo.usuario.UserValid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Optional;
@Component
public class CustomUserDetailService implements UserDetailsService {
private ValidationRepository validationRepository;
@Autowired
public CustomUserDetailService(ValidationRepository validationRepository) {
this.validationRepository = validationRepository;
}

@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException{
UserValid user = Optional.ofNullable(validationRepository.findByUsername(username)).orElseThrow(()->new UsernameNotFoundException("User not Found"));
List<GrantedAuthority> authorityListAdmin = AuthorityUtils.createAuthorityList("ROLE_USER", "ROLE_ADMIN");
List<GrantedAuthority> authorityListUser = AuthorityUtils.createAuthorityList("ROLE_USER", "ROLE_ADMIN");
return new User(user.getUsername(),user.getPassword(),user.isAdmin()? authorityListAdmin : authorityListUser);
}
}
21 changes: 21 additions & 0 deletions service/UsuarioService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package br.com.altrantest.demo.service;


import br.com.altrantest.demo.repository.UsuarioRepository;
import br.com.altrantest.demo.usuario.UsuarioUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UsuarioService {

@Autowired
UsuarioRepository repository;

public UsuarioUser consultar(Long id){
UsuarioUser result = repository.findById(id).get();
return result;
}


}
Loading