Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions security-admin/src/main/java/org/apache/ranger/rest/RoleREST.java
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,8 @@
import org.apache.ranger.service.XUserService;
import org.apache.ranger.view.RangerExportRoleList;
import org.apache.ranger.view.RangerRoleList;
import org.apache.ranger.view.VXString;
import org.apache.ranger.view.VXStringList;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
Expand Down Expand Up @@ -358,6 +360,42 @@ public RangerRole getRole(@PathParam("id") Long id) {
return ret;
}

@GET
@Path("/lookup/roles/names")
@Produces("application/json")
public VXStringList lookupAllRolesNames(@Context HttpServletRequest request) {
LOG.debug("==> lookupAllRolesNames()");

VXStringList ret = new VXStringList();

RangerRoleList rangerRoleList = new RangerRoleList();
List<VXString> vXList = new ArrayList<>();

SearchFilter filter = searchUtil.getSearchFilter(request, roleService.sortFields);
try {
roleStore.getRoles(filter, rangerRoleList);
VXString vXString = null;
for (RangerRole role : rangerRoleList.getSecurityRoles()) {
vXString = new VXString();
vXString.setValue(role.getName());
vXList.add(vXString);
}
ret.setVXStrings(vXList);
ret.setPageSize(rangerRoleList.getPageSize());
ret.setTotalCount(rangerRoleList.getTotalCount());
ret.setSortType(rangerRoleList.getSortType());
ret.setSortBy(rangerRoleList.getSortBy());
} catch (WebApplicationException excp) {
throw excp;
} catch (Throwable excp) {
LOG.error("lookupAllRolesNames() failed", excp);
throw restErrorUtil.createRESTException(excp.getMessage());
}

LOG.debug("<== lookupAllRolesNames():{}", ret);
return ret;
}

/* This operation is allowed only when effective User has ranger admin or auditor privilege
* if execUser is not same as logged-in user then effective user is execUser
* else effective user is logged-in user.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -216,14 +216,14 @@ export default function AddUpdatePolicyForm() {
let op = [];

const roleResp = await fetchApi({
url: "roles/roles",
url: "roles/lookup/roles/names",
params: params
});
op = roleResp.data.roles;
op = roleResp.data.vXStrings;

return op.map((obj) => ({
label: obj.name,
value: obj.name
label: obj.value,
value: obj.value
}));
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -800,39 +800,26 @@ function SearchByAsyncSelect(props) {
let optsList = [];
let serverResp = [];

if (inputValue) {
params["name"] = inputValue || "";
}
if (searchByOptName.value == "searchByGroup") {
apiUrl = "xusers/lookup/groups";
params["name"] = inputValue || "";
} else if (searchByOptName.value == "searchByUser") {
apiUrl = "xusers/lookup/users";
params["name"] = inputValue || "";
} else if (searchByOptName.value == "searchByRole") {
apiUrl = "roles/roles";
apiUrl = "roles/lookup/roles/names";
params["roleNamePartial"] = inputValue || "";
}
if (!isEmpty(apiUrl)) {
serverResp = await fetchApi({
url: apiUrl,
params: params
});
}

if (searchByOptName.value == "searchByUser") {
optsList = serverResp.data.vXStrings.map((obj) => ({
label: obj["value"],
value: obj["value"]
}));
} else if (searchByOptName.value == "searchByRole") {
optsList = serverResp.data.roles.map(({ name }) => ({
label: name,
value: name
}));
} else {
optsList = serverResp.data.vXStrings.map((obj) => ({
label: obj["value"],
value: obj["value"]
}));
}
optsList = serverResp?.data?.vXStrings.map((obj) => ({
label: obj["value"],
value: obj["value"]
}));

return optsList;
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -574,17 +574,17 @@ const SecurityZoneForm = () => {

try {
const roleResp = await fetchApi({
url: "roles/roles",
url: "roles/lookup/roles/names",
params: params
});
op = roleResp.data.roles;
op = roleResp?.data?.vXStrings;
} catch (error) {
console.error(`Error occurred while fetching Roles! ${error}`);
serverError(error);
}
return op.map((obj) => ({
label: obj.name,
value: obj.name
label: obj.value,
value: obj.value
}));
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1035,16 +1035,16 @@ class ServiceForm extends Component {

try {
const roleResp = await fetchApi({
url: "roles/roles",
url: "roles/lookup/roles/names",
params: params
});
op = roleResp.data?.roles;
op = roleResp.data?.vXStrings;
} catch (error) {
console.error(`Error occurred while fetching Roles ! ${error}`);
}

return map(op, function (obj) {
return { label: obj.name, value: obj.name };
return { label: obj.value, value: obj.value };
});
};
ServiceDefnBreadcrumb = () => {
Expand Down