package net.pechorina.kontempl.rest;
import net.pechorina.kontempl.data.AuthToken;
import net.pechorina.kontempl.data.User;
import net.pechorina.kontempl.service.UserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
@RestController
@RequestMapping(value = "/api/users/{userId}/authtokens")
public class AuthTokensResource {
static final Logger logger = LoggerFactory.getLogger(AuthTokensResource.class);
@Autowired
private UserService userService;
@RequestMapping(method = RequestMethod.GET)
public List<AuthToken> getTokens(@PathVariable("userId") Integer userId) {
User u = userService.getUserByIdDetailed(userId);
return userService.listAuthTokens(u);
}
@RequestMapping(method = RequestMethod.GET, value="{uuid}")
public AuthToken getAuthToken(@PathVariable("userId") Integer userId, @PathVariable("uuid") String uuid) {
return userService.getAuthToken(uuid);
}
@RequestMapping(method = RequestMethod.DELETE, value = "/{uuid}")
public void remove(@PathVariable("userId") Integer userId,
@PathVariable("uuid") String uuid, HttpServletRequest request, HttpServletResponse response) {
AuthToken t = userService.getAuthToken(uuid);
userService.deleteAuthToken(t);
logger.info("AUTHTOKEN DELETED: " + uuid + " Src:" + request.getRemoteAddr());
response.setStatus(HttpServletResponse.SC_OK);
}
}