@Override public Response add(User user) { validateParameters(user, "userName|id", "roles.id|name"); StringBuilder buf = new StringBuilder(); String userArg = null; if (user.isSetId()) { userArg = PowerShellUtils.escape(user.getId()); } else { buf.append("$u = select-user -AD").append(SEARCH_TEXT); buf.append(PowerShellUtils.escape(user.getUserName())).append("; "); userArg = "$u.UserId"; } String roleArg = getRoleArg(user.getRoles().getRoles().get(0), buf); buf.append("add-user -userid ").append(userArg).append(" -userroleid ").append(roleArg); User newUser = PowerShellUserResource.addLinks(getUriInfo(), runAndParseSingle(buf.toString())); UriBuilder uriBuilder = getUriInfo().getAbsolutePathBuilder().path(newUser.getId()); if (user.getRoles().getRoles().size() > 1) { for (int i = 1 ; i < user.getRoles().getRoles().size() ; i++) { StringBuilder addRole = new StringBuilder(); String extraRoleArg = getRoleArg(user.getRoles().getRoles().get(i), addRole); addRole.append("attach-role -roleid ").append(extraRoleArg) .append(" -elementid ").append(newUser.getId()); PowerShellRoleResource.runAndParseSingle(getPool(), getParser(), newUser.getId(), addRole.toString()); } } return Response.created(uriBuilder.build()).entity(newUser).build(); }
protected Object doExecute() throws Exception { if (user == null) { doList(client.getCollection("roles", Roles.class, null).getRoles(), limit); } else { List<User> users = client.getCollection("users", Users.class, "name=" + user).getUsers(); if (!(users == null || users.isEmpty())) { Link roles = findLink(users.get(0).getLinks(), "roles"); if (roles != null) { doList(client.getCollection(roles, Roles.class).getRoles(), limit); } } } return null; } }
@Override public Roles list() { Roles ret = new Roles(); StringBuilder getRoles = new StringBuilder(); // roles assigned to a specific user getRoles.append("$u = get-user -userid ") .append(PowerShellUtils.escape(userId)) .append(";$u.getroles()"); for (Role Role : runAndParse(getRoles.toString())) { ret.getRoles().add(LinkHelper.addLinks(getUriInfo(), Role)); } return ret; }