base.jee.servlet.GroupRolesServlet Maven / Gradle / Ivy
/**
* Creative commons Attribution-NonCommercial license.
*
* http://creativecommons.org/licenses/by-nc/2.5/au/deed.en_GB
*
* NO WARRANTY IS GIVEN OR IMPLIED, USE AT YOUR OWN RISK.
*/
package base.jee.servlet;
import base.KeyValue;
import base.jee.Breadcrumb;
import base.jee.Constants;
import base.jee.JeeBase;
import base.security.Group;
import base.security.Role;
import base.security.User;
import base.text.StringHelper;
import org.stringtemplate.v4.ST;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Hashtable;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.UUID;
public class GroupRolesServlet extends BaseServlet {
private static final long serialVersionUID = 1L;
public GroupRolesServlet(JeeBase jee) throws IOException {
super(jee);
}
@SuppressWarnings("unchecked")
public void doGet(String token, User u, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
UUID uuid = UUID.fromString(request.getParameter("uuid"));
String error = null;
String a = request.getParameter("a");
if(a != null && !a.equals(u.getFormAuthToken())) {
throw new IllegalArgumentException("Invalid authentication token.");
}
if(request.getParameter("add_role") != null && request.getParameter("role_resource") != null) {
if(a == null) {
throw new IllegalArgumentException("Invalid authentication token.");
}
jee.getAPI().upsertGroupResourceRole(u, uuid,
request.getParameter("add_role"),
jee.getRoles().getRole(request.getParameter("add_role")).getResourceType(),
request.getParameter("role_resource"));
response.setHeader("Location", settings.get("base.url", "") + "/group.roles?uuid=" + uuid + "&saved=ok");
response.setStatus(302);
}
if(request.getParameter("delete_role") != null && request.getParameter("resource") != null) {
if(a == null) {
throw new IllegalArgumentException("Invalid authentication token.");
}
jee.getAPI().deleteGroupResourceRole(u,
jee.getRoles().getRole(request.getParameter("delete_role")).getResourceType(),
request.getParameter("resource"),
uuid,
request.getParameter("delete_role")
);
response.setHeader("Location", settings.get("base.url", "") + "/group.roles?uuid=" + uuid + "&saved=ok");
response.setStatus(302);
}
if(request.getParameter("admin_roles") != null) {
if(a == null) {
throw new IllegalArgumentException("Invalid authentication token.");
}
// Update the (non resource based) roles.
for(Role r : jee.getRoles().nonResourceBasedRoles) {
if(request.getParameter("role_" + r.getRole()) != null && request.getParameter("role_" + r.getRole()).equals("true")) {
jee.getAPI().upsertGroupRole(u, uuid, r.getRole());
} else {
jee.getAPI().deleteGroupRole(u, uuid, r.getRole());
}
}
response.setHeader("Location", settings.get("base.url", "") + "/group.roles?uuid=" + uuid + "&saved=ok");
response.setStatus(302);
}
Group g = jee.getAPI().getGroup(u, uuid).get(0);
List currentRoles = jee.getAPI().getGroupRoles(u, uuid);
String roleToAdd = null;
String roleToAddName = null;
List possibleResourceBasedRoles = null;
if(request.getParameter("add_role") != null && request.getParameter("role_resource") == null) {
roleToAdd = request.getParameter("add_role");
Role role = jee.getRoles().getRole(roleToAdd);
roleToAddName = role.getName();
possibleResourceBasedRoles = jee.getRoles().getResourceLookup(role.getResourceType()).list();
}
ST page = jee.getPage(u, "group_roles");
page.add("uuid", g.getUuid());
// Used in the person editing form
page.add("g", g);
List © 2015 - 2025 Weber Informatics LLC | Privacy Policy