package com.airbnb.airpal.resources;
import com.airbnb.airpal.core.AirpalUser;
import com.airbnb.airpal.core.AuthorizationUtil;
import lombok.Value;
import org.secnod.shiro.jaxrs.Auth;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@Path("/api/user")
@Produces(MediaType.APPLICATION_JSON)
public class UserResource
{
@GET
public Response getUserInfo(@Auth AirpalUser user)
{
if (user == null) {
return Response.status(Response.Status.FORBIDDEN).build();
} else {
return Response.ok(
new UserInfo(
user.getUserName(),
new ExecutionPermissions(
AuthorizationUtil.isAuthorizedWrite(user, "hive", "airpal", "any"),
true,
user.getAccessLevel())
)).build();
}
}
@Value
private static class UserInfo
{
private final String name;
private final ExecutionPermissions executionPermissions;
}
@Value
public static class ExecutionPermissions
{
private final boolean canCreateTable;
private final boolean canCreateCsv;
private final String accessLevel;
}
}