Package es.ua.dccia.rest

Source Code of es.ua.dccia.rest.UsuarioResource

/*
* 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 es.ua.dccia.rest;

import es.ua.dccia.MueveteException;
import es.ua.dccia.Tokens;
import es.ua.dccia.dominio.Usuario;
import es.ua.dccia.negocio.UsuarioBO;
import es.ua.dccia.rest.to.UsuarioTO;
import es.ua.dccia.utils.Utils;
import java.net.URI;
import java.util.Map;
import java.util.Set;
import javax.annotation.security.RolesAllowed;
import javax.servlet.ServletContext;
import javax.validation.ConstraintViolation;
import javax.validation.Valid;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.SecurityContext;
import javax.ws.rs.core.UriInfo;

/**
*
* @author otto
*/
@Path("/usuarios")
public class UsuarioResource {
    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public Response registrar(@Valid Usuario u, @Context UriInfo uriInfo) {
        UsuarioBO usuarioBO = new UsuarioBO();
        try {
            u.setRol(Tokens.DEFAULT_USER_ROLE);
            usuarioBO.registrar(u);
        } catch(MueveteException me) {
            return Response.status(Response.Status.BAD_REQUEST).entity("Error al crear usuario").build();
        }
        URI uri = uriInfo.getAbsolutePathBuilder().path("{login}").build(u.getLogin());   
        return Response.created(uri).build();
    }
   
    @Path("{login}")
    @GET
    @Produces(MediaType.APPLICATION_JSON)   
    public Usuario getUsuario(@PathParam("login") String login) {
        Usuario buscado = new UsuarioBO().getUsuario(login);
        if (buscado!=null) {
            buscado.setFirmas(null);
            buscado.setPeticiones(null);
            return buscado;
        }
        else
            throw new CustomNotFoundException("Usuario no encontrado");
               
    }
   
    @Path("{login}")
    @PUT
    @Consumes(MediaType.APPLICATION_JSON
    @RolesAllowed("registrado")
    public String actualizaUsuario(@PathParam("login") String login, UsuarioTO uto, @Context SecurityContext sc) {
        //comprobar que se intenta modificar el usuario logueado actualmente
        if (!login.equals(sc.getUserPrincipal().getName()))
            throw new CustomWebAppException("No puedes modificar los datos de otro usuario", Response.Status.FORBIDDEN);
        UsuarioBO ubo = new UsuarioBO();
        //Si estamos intentando cambiar el password, comprobar que el usuario sabe su password antiguo
        if (uto.getNewPassword()!=null && !ubo.getUsuario(login).getPassword().equals(uto.getOldPassword()))
           throw new CustomWebAppException("La antigua contraseña no es correcta", Response.Status.FORBIDDEN);
        ubo.modificar(uto);
        return "OK";
    }
   
}
TOP

Related Classes of es.ua.dccia.rest.UsuarioResource

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.