Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package gumga.framework.security; import com.wordnik.swagger.annotations.ApiOperation; import gumga.framework.core.FacebookRegister; import gumga.framework.core.GumgaValues; import gumga.framework.core.UserAndPassword; import java.util.HashSet; import java.util.Iterator; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import javax.transaction.Transactional; import gumga.framework.domain.domains.GumgaImage; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.client.RestTemplate; /** * * @author munif */ @RestController @RequestMapping("/public/token") class GumgaSecurityProxy { private final RestTemplate restTemplate; @Autowired private GumgaValues gumgaValues; public GumgaSecurityProxy() { restTemplate = new RestTemplate(); } @ApiOperation(value = "create", notes = "Cria token atravs do usurio e senha informados.") @RequestMapping(value = "/create/{user}/{password}", method = RequestMethod.GET) public ResponseEntity create(@PathVariable String user, @PathVariable String password) { String url = gumgaValues.getGumgaSecurityUrl() + "/token/create/" + user + "/" + password; Map resposta = restTemplate.getForObject(url, Map.class); GumgaSecurityCode response = GumgaSecurityCode.OK; //TODO EST? PARA MANTER COMPAT?VEL COM A VERSO ANTERIOR DO SEGURANA, if (resposta.containsKey("response")) { response = GumgaSecurityCode.valueOf("" + resposta.get("response")); } return new ResponseEntity(resposta, response.httpStatus); } @ApiOperation(value = "delete", notes = "Faz logout do usurio fazendo o token informado expirar.") @RequestMapping(value = "/{token}", method = RequestMethod.DELETE) public Map delete(@PathVariable String token) { String url = gumgaValues.getGumgaSecurityUrl() + "/token/" + token; restTemplate.delete(url); return GumgaSecurityCode.OK.response(); } @ApiOperation(value = "login", notes = "Faz o login recebendo o objeto UserAndPassword.") @RequestMapping(method = RequestMethod.POST) public ResponseEntity login(@RequestBody UserAndPassword login) { String url = gumgaValues.getGumgaSecurityUrl() + "/token"; Map resposta = restTemplate.postForObject(url, login, Map.class); GumgaSecurityCode response = GumgaSecurityCode.OK; //TODO EST? PARA MANTER COMPAT?VEL COM A VERSO ANTERIOR DO SEGURANA, if (resposta.containsKey("response")) { response = GumgaSecurityCode.valueOf("" + resposta.get("response")); } return new ResponseEntity(resposta, response.httpStatus); } @ApiOperation(value = "facebook", notes = "Faz o login com facebook recebendo email e token.") @RequestMapping(value = "/facebook", method = RequestMethod.GET) public Map loginWithFacebook(@RequestParam("email") String email, @RequestParam("token") String facebookToken) { String url = gumgaValues.getGumgaSecurityUrl() + "/token/facebook?email=" + email + "&token=" + facebookToken; System.out.print(url); Map resposta = restTemplate.getForObject(url, Map.class); return resposta; } @ApiOperation(value = "facebook", notes = "Faz o login com github recebendo email e token.") @RequestMapping(value = "/github", method = RequestMethod.GET) public Map loginWithGitHub(@RequestParam("email") String email, @RequestParam("token") String gitToken) { String url = gumgaValues.getGumgaSecurityUrl() + "/token/github?email=" + email + "&token=" + gitToken; System.out.print(url); Map resposta = restTemplate.getForObject(url, Map.class); return resposta; } @ApiOperation(value = "register-facebook", notes = "Cria usurio e organizao com facebook") @RequestMapping(value = "/register-facebook", method = RequestMethod.POST) public Map loginWithFacebook(@RequestBody FacebookRegister facebookRegister) { String url = gumgaValues.getGumgaSecurityUrl() + "/token/register-facebook"; Map resposta = restTemplate.postForObject(url, facebookRegister, Map.class); return resposta; } @RequestMapping(value = "/{token}", method = RequestMethod.GET) public Map get(@PathVariable String token) { String url = gumgaValues.getGumgaSecurityUrl() + "/public/token/" + token; Map resposta = restTemplate.getForObject(url, Map.class); return resposta; } @ApiOperation(value = "changePassword", notes = "Altera a senha do usurio informados pelo objeto UserAndPassword.") @RequestMapping(method = RequestMethod.PUT) public Map changePassword(@RequestBody UserAndPassword login) { String url = gumgaValues.getGumgaSecurityUrl() + "/token"; restTemplate.put(url, login); return GumgaSecurityCode.OK.response(); } @Transactional @ApiOperation(value = "organizations", notes = "Lista as organizaes associadas ao token informado.") @RequestMapping(value = "/organizations/{token}", method = RequestMethod.GET) public List organizations(@PathVariable String token) { String url = gumgaValues.getGumgaSecurityUrl() + "/token/organizations/" + token; List resposta = restTemplate.getForObject(url, List.class); return resposta; } @Transactional @ApiOperation(value = "organizations", notes = "Lista as operaes associadas ao software e token informados.") @RequestMapping(value = "/operations/{software}/{token:.+}", method = RequestMethod.GET) public Set operations(@PathVariable String software, @PathVariable String token) { String url = gumgaValues.getGumgaSecurityUrl() + "/token/operations/" + software + "/" + token + "/"; Set resposta = restTemplate.getForObject(url, Set.class); return resposta; } @Transactional @ApiOperation(value = "organizations", notes = "Lista as operaes associadas ao software e token informados.") @RequestMapping(value = "/operationskeys/{software}/{token:.+}", method = RequestMethod.GET) public Set operationsKeys(@PathVariable String software, @PathVariable String token) { String url = gumgaValues.getGumgaSecurityUrl() + "/token/operations/" + software + "/" + token + "/"; Set resposta = restTemplate.getForObject(url, Set.class); HashSet<Object> keys = new HashSet<>(); for (Iterator it = resposta.iterator(); it.hasNext();) { Map r = (Map) it.next(); keys.add(r.get("key")); } return keys; } @ApiOperation(value = "lostPassword", notes = "Permite recuperar a senha, enviando um e-mail para o login informado.") @RequestMapping(method = RequestMethod.GET, value = "/lostpassword/{login:.+}") public Map lostPassword(@PathVariable String login) { String url = gumgaValues.getGumgaSecurityUrl() + "/token/lostpassword/" + login + "/"; Map resposta = restTemplate.getForObject(url, Map.class); return resposta; } @ApiOperation(value = "lostSoftwarePassword", notes = "Permite recuperar a senha, enviando um e-mail para o login informado.") @RequestMapping(method = RequestMethod.GET, value = "/lostsoftwarepassword/{software}/{login:.+}") public Map lostSoftwarePassword(@PathVariable String software, @PathVariable String login) { String url = gumgaValues.getGumgaSecurityUrl() + "/token/lostsoftwarepassword/" + software + "/" + login + "/"; Map resposta = restTemplate.getForObject(url, Map.class); return resposta; } @ApiOperation(value = "changeByTicket", notes = "Verifica se o ticket j foi utilizado e altera a senha do usurio.") @RequestMapping(method = RequestMethod.GET, value = "/lostpassword/{code}/{password}") public Map changeByTicket(@PathVariable String code, @PathVariable String password) { String url = gumgaValues.getGumgaSecurityUrl() + "/token/lostpassword/" + code + "/" + password; Map resposta = restTemplate.getForObject(url, Map.class); return resposta; } @ApiOperation(value = "findByTicket", notes = "Busca um ticket pelo cdigo.") @RequestMapping(method = RequestMethod.GET, value = "/searchticket/{code}") public Map findByTicket(@PathVariable String code) { String url = gumgaValues.getGumgaSecurityUrl() + "/token/searchticket/" + code; Map resposta = restTemplate.getForObject(url, Map.class); return resposta; } @ApiOperation(value = "/organizations/users", notes = "Buscar todos os usuarios por organizao.") @RequestMapping(method = RequestMethod.GET, value = "/organizations/users/{token}") public List findAllUserByOrganization(@PathVariable String token) { final String url = gumgaValues.getGumgaSecurityUrl() + "/token/organization/users?gumgaToken=" + token; List result = this.restTemplate.getForObject(url, List.class); return result; } @ApiOperation(value = "/roles", notes = "Buscar todos os perfis.") @RequestMapping(method = RequestMethod.GET, value = "/roles") public List getAllRoles() { final String url = gumgaValues.getGumgaSecurityUrl() + "/token/roles"; List result = this.restTemplate.getForObject(url, List.class); return result; } @ApiOperation(value = "/whois", notes = "Verificar o usuario.") @RequestMapping(method = RequestMethod.POST, value = "/whois") public Map whois(@RequestBody UserImageDTO userImageDTO) { final String url = gumgaValues.getGumgaSecurityUrl() + "/facereco/whois"; Map resposta = restTemplate.postForObject(url, userImageDTO, Map.class); return resposta; } } class UserImageDTO { private String metadados; private GumgaImage image; private byte[] imageData; public String getMetadados() { return metadados; } public void setMetadados(String metadados) { this.metadados = metadados; } public GumgaImage getImage() { return image; } public void setImage(GumgaImage image) { this.image = image; } public byte[] getImageData() { return imageData; } public void setImageData(byte[] imageData) { this.imageData = imageData; } }