use of io.apiman.manager.api.beans.idm.RoleMembershipBean in project apiman by apiman.
the class EsStorage method getUserMemberships.
/**
* @see io.apiman.manager.api.core.IStorageQuery#getUserMemberships(java.lang.String)
*/
@Override
public Set<RoleMembershipBean> getUserMemberships(String userId) throws StorageException {
try {
@SuppressWarnings("nls") QueryBuilder qb = QueryBuilders.termQuery("userId", userId);
SearchSourceBuilder builder = new SearchSourceBuilder().query(qb).size(500);
// $NON-NLS-1$
List<SearchHit> hits = listEntities(INDEX_MANAGER_POSTFIX_ROLE_MEMBERSHIP, builder);
Set<RoleMembershipBean> rval = new HashSet<>();
for (SearchHit hit : hits) {
RoleMembershipBean roleMembership = EsMarshalling.unmarshallRoleMembership(hit.getSourceAsMap());
rval.add(roleMembership);
}
return rval;
} catch (Exception e) {
throw new StorageException(e);
}
}
use of io.apiman.manager.api.beans.idm.RoleMembershipBean in project apiman by apiman.
the class OrganizationResourceImpl method grant.
/**
* @see IOrganizationResource#grant(java.lang.String, io.apiman.manager.api.beans.idm.GrantRolesBean)
*/
@Override
public void grant(String organizationId, GrantRolesBean bean) throws OrganizationNotFoundException, RoleNotFoundException, UserNotFoundException, NotAuthorizedException {
securityContext.checkPermissions(PermissionType.orgAdmin, organizationId);
// Verify that the references are valid.
get(organizationId);
users.get(bean.getUserId());
for (String roleId : bean.getRoleIds()) {
roles.get(roleId);
}
MembershipData auditData = new MembershipData();
auditData.setUserId(bean.getUserId());
try {
storage.beginTx();
for (String roleId : bean.getRoleIds()) {
RoleMembershipBean membership = RoleMembershipBean.create(bean.getUserId(), roleId, organizationId);
membership.setCreatedOn(new Date());
// If the membership already exists, that's fine!
if (storage.getMembership(bean.getUserId(), roleId, organizationId) == null) {
storage.createMembership(membership);
}
auditData.addRole(roleId);
}
storage.createAuditEntry(AuditUtils.membershipGranted(organizationId, auditData, securityContext));
storage.commitTx();
} catch (AbstractRestException e) {
storage.rollbackTx();
throw e;
} catch (Exception e) {
storage.rollbackTx();
throw new SystemErrorException(e);
}
}
use of io.apiman.manager.api.beans.idm.RoleMembershipBean in project apiman by apiman.
the class OrganizationResourceImpl method create.
/**
* @see IOrganizationResource#create(io.apiman.manager.api.beans.orgs.NewOrganizationBean)
*/
@Override
public OrganizationBean create(NewOrganizationBean bean) throws OrganizationAlreadyExistsException, InvalidNameException {
if (config.isAdminOnlyOrgCreationEnabled()) {
securityContext.checkAdminPermissions();
}
FieldValidator.validateName(bean.getName());
List<RoleBean> autoGrantedRoles;
SearchCriteriaBean criteria = new SearchCriteriaBean();
criteria.setPage(1);
criteria.setPageSize(100);
// $NON-NLS-1$ //$NON-NLS-2$
criteria.addFilter("autoGrant", "true", SearchCriteriaFilterOperator.bool_eq);
try {
autoGrantedRoles = query.findRoles(criteria).getBeans();
} catch (StorageException e) {
throw new SystemErrorException(e);
}
if ("true".equals(System.getProperty("apiman.manager.require-auto-granted-org", "true"))) {
// $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
if (autoGrantedRoles.isEmpty()) {
// $NON-NLS-1$
throw new SystemErrorException(Messages.i18n.format("OrganizationResourceImpl.NoAutoGrantRoleAvailable"));
}
}
OrganizationBean orgBean = new OrganizationBean();
orgBean.setName(bean.getName());
orgBean.setDescription(bean.getDescription());
orgBean.setId(BeanUtils.idFromName(bean.getName()));
orgBean.setCreatedOn(new Date());
orgBean.setCreatedBy(securityContext.getCurrentUser());
orgBean.setModifiedOn(new Date());
orgBean.setModifiedBy(securityContext.getCurrentUser());
try {
// Store/persist the new organization
storage.beginTx();
if (storage.getOrganization(orgBean.getId()) != null) {
throw ExceptionFactory.organizationAlreadyExistsException(bean.getName());
}
storage.createOrganization(orgBean);
storage.createAuditEntry(AuditUtils.organizationCreated(orgBean, securityContext));
// Auto-grant memberships in roles to the creator of the organization
for (RoleBean roleBean : autoGrantedRoles) {
String currentUser = securityContext.getCurrentUser();
String orgId = orgBean.getId();
RoleMembershipBean membership = RoleMembershipBean.create(currentUser, roleBean.getId(), orgId);
membership.setCreatedOn(new Date());
storage.createMembership(membership);
}
storage.commitTx();
// $NON-NLS-1$
log.debug(String.format("Created organization %s: %s", orgBean.getName(), orgBean));
return orgBean;
} catch (AbstractRestException e) {
storage.rollbackTx();
throw e;
} catch (Exception e) {
storage.rollbackTx();
throw new SystemErrorException(e);
}
}
use of io.apiman.manager.api.beans.idm.RoleMembershipBean in project apiman by apiman.
the class OrganizationService method grant.
public void grant(String organizationId, GrantRolesBean bean) throws OrganizationNotFoundException, RoleNotFoundException, UserNotFoundException, NotAuthorizedException {
// Verify that the references are valid.
getOrg(organizationId);
userService.getUserById(bean.getUserId());
for (String roleId : bean.getRoleIds()) {
roles.get(roleId);
}
MembershipData auditData = new MembershipData();
auditData.setUserId(bean.getUserId());
tryAction(() -> {
for (String roleId : bean.getRoleIds()) {
RoleMembershipBean membership = RoleMembershipBean.create(bean.getUserId(), roleId, organizationId);
membership.setCreatedOn(new Date());
// If the membership already exists, that's fine!
if (storage.getMembership(bean.getUserId(), roleId, organizationId) == null) {
storage.createMembership(membership);
}
auditData.addRole(roleId);
}
storage.createAuditEntry(AuditUtils.membershipGranted(organizationId, auditData, securityContext));
});
}
use of io.apiman.manager.api.beans.idm.RoleMembershipBean in project apiman by apiman.
the class OrganizationService method listMembers.
public List<MemberBean> listMembers(String organizationId) throws OrganizationNotFoundException, NotAuthorizedException {
getOrg(organizationId);
return tryAction(() -> {
Set<RoleMembershipBean> memberships = query.getOrgMemberships(organizationId);
TreeMap<String, MemberBean> members = new TreeMap<>();
for (RoleMembershipBean membershipBean : memberships) {
String userId = membershipBean.getUserId();
String roleId = membershipBean.getRoleId();
RoleBean role = storage.getRole(roleId);
// Role does not exist!
if (role == null) {
continue;
}
MemberBean member = members.get(userId);
if (member == null) {
UserBean user = storage.getUser(userId);
member = new MemberBean();
member.setEmail(user.getEmail());
member.setUserId(userId);
member.setUserName(user.getFullName());
member.setRoles(new ArrayList<>());
members.put(userId, member);
}
MemberRoleBean mrb = new MemberRoleBean();
mrb.setRoleId(roleId);
mrb.setRoleName(role.getName());
member.getRoles().add(mrb);
if (member.getJoinedOn() == null || membershipBean.getCreatedOn().compareTo(member.getJoinedOn()) < 0) {
member.setJoinedOn(membershipBean.getCreatedOn());
}
}
return new ArrayList<>(members.values());
});
}
Aggregations