String userLocale = (String) perun.getAttributesManagerBl().getAttribute(session, perun.getUsersManagerBl() .getUserById(session, id), "urn:perun:user:attribute-def:def:preferredLanguage").getValue(); if (userLocale == null) {
/** * Return groups that user is member of. * * @return groups that user is member of * @throws VOOTException if the can not read groups of user */ private List<Group> isMemberOf() throws VOOTException{ List<Group> groups = new ArrayList<Group>(); List<Vo> vos = new ArrayList<Vo>(); try{ vos.addAll(perun.getUsersManagerBl().getVosWhereUserIsMember(session, user)); }catch(InternalErrorException ex){ throw new VOOTException("internal_server_error"); } try{ for (Vo vo : vos) { Member member = perun.getMembersManagerBl().getMemberByUser(session, vo, user); groups.addAll(perun.getGroupsManagerBl().getAllMemberGroups(session, member)); } }catch(InternalErrorException ex){ throw new VOOTException("internal_server_error"); }catch(MemberNotExistsException ex){ throw new VOOTException("not_a_member"); } return groups; }
private Author convertAuthorToAuthorWithAttributes(Author author) { try { if (session == null) { session = perun.getPerunSession(new PerunPrincipal("perunCabinet", ExtSourcesManager.EXTSOURCE_NAME_INTERNAL, ExtSourcesManager.EXTSOURCE_INTERNAL), new PerunClient()); } User user = perun.getUsersManagerBl().getUserById(session, author.getId()); Attribute a = perun.getAttributesManagerBl().getAttribute(session, user, AttributesManager.NS_USER_ATTR_DEF + ":preferredMail"); Attribute b = perun.getAttributesManagerBl().getAttribute(session, user, AttributesManager.NS_USER_ATTR_DEF + ":organization"); author.setAttributes(Arrays.asList(a,b)); } catch (Exception ex) { log.error("Unable to get attributes for {}: {}", author, ex); } return author; }
/** * Init method, instantiate PerunSession * * @throws PerunException */ protected void initialize() throws PerunException { // gets session for a system principal "perunRegistrar" final PerunPrincipal pp = new PerunPrincipal("perunRegistrar", ExtSourcesManager.EXTSOURCE_NAME_INTERNAL, ExtSourcesManager.EXTSOURCE_INTERNAL); registrarSession = perun.getPerunSession(pp, new PerunClient()); this.attrManager = perun.getAttributesManager(); this.membersManager = perun.getMembersManager(); this.usersManager = perun.getUsersManager(); this.groupsManager = perun.getGroupsManager(); }
public void updatePriorityCoefficient(PerunSession sess, Integer userId, Double rank) throws CabinetException { try { // get definition AttributeDefinition attrDef = perun.getAttributesManager().getAttributeDefinition(cabinetSession, ATTR_COEF_NAMESPACE+":"+ATTR_COEF_FRIENDLY_NAME); // Set attribute value Attribute attr = new Attribute(attrDef); DecimalFormat twoDForm = new DecimalFormat("#.##"); attr.setValue(String.valueOf(twoDForm.format(rank))); // get user User user = perun.getUsersManager().getUserById(cabinetSession, userId); // assign or update user's attribute perun.getAttributesManager().setAttribute(cabinetSession, user, attr); } catch (PerunException e) { throw new CabinetException("Failed to update priority coefficient in Perun.",ErrorCodes.PERUN_EXCEPTION, e); } }
List<User> users = perun.getUsersManagerBl().getUsers(perunSession); Attribute attrPreferredMail = null; try { attrPreferredMail = perun.getAttributesManagerBl().getAttribute(perunSession, user, AttributesManager.NS_USER_ATTR_DEF + ":preferredMail"); } catch (AttributeNotExistsException | WrongAttributeAssignmentException ex) { log.error("Preferred mail attribute is missing or it's assignment is wrong. Attribute was skipped.", ex); Attribute attrOrganization = null; try { attrOrganization = perun.getAttributesManagerBl().getAttribute(perunSession, user, AttributesManager.NS_USER_ATTR_DEF + ":organization"); } catch (AttributeNotExistsException | WrongAttributeAssignmentException ex) { log.error("Organization attribute is missing or it's assignment is wrong. Attribute was skipped.", ex); Attribute attrPhone = null; try { attrPhone = perun.getAttributesManagerBl().getAttribute(perunSession, user, AttributesManager.NS_USER_ATTR_DEF + ":phone"); } catch (AttributeNotExistsException | WrongAttributeAssignmentException ex) { log.error("Phone attribute is missing or it's assignment is wrong. Attribute was skipped.", ex); Attribute attrBonaFideStatus = null; try { attrBonaFideStatus = perun.getAttributesManagerBl().getAttribute(perunSession, user, AttributesManager.NS_USER_ATTR_VIRT + ":elixirBonaFideStatus"); } catch (AttributeNotExistsException | WrongAttributeAssignmentException ex) { log.error("Bona fide status attribute is missing or it's assignment is wrong. Attribute was skipped.", ex); attrVirtCertDNs = perun.getAttributesManagerBl().getAttribute(perunSession, user, AttributesManager.NS_USER_ATTR_VIRT + ":userCertDNs"); } catch (AttributeNotExistsException | WrongAttributeAssignmentException ex) { log.error("Certificate DNs attribute is missing or it's assignment is wrong. Attribute was skipped.", ex);
/** * Create proper UserExtSource */ @Override public Application approveApplication(PerunSession session, Application app) throws PerunException { PerunBl perun = (PerunBl)session.getPerun(); User user = app.getUser(); if (user == null) { log.error("At the end of approval action, we should have user present in application: {}", app); } else { Attribute userLogin = perun.getAttributesManagerBl().getAttribute(session, user, AttributesManager.NS_USER_ATTR_DEF + ":login-namespace:lifescience-hostel"); if (userLogin.getValue() != null) { ExtSource extSource = perun.getExtSourcesManagerBl().getExtSourceByName(session, "https://login.bbmri-eric.eu/lshostel/"); UserExtSource ues = new UserExtSource(extSource, userLogin + "@lifescience-hostel.org"); ues.setLoa(0); try { perun.getUsersManagerBl().addUserExtSource(session, user, ues); } catch (UserExtSourceExistsException ex) { // this is OK } } // User doesn't have login - don't set UES } return app; }
List<Member> shouldBeExpired = perun.getSearcherBl().getMembersByGroupExpiration(sess, group, "<=", calendar); shouldBeExpired.stream() return perun.getGroupsManagerBl().getDirectMemberGroupStatus(sess, member, group).equals(MemberGroupStatus.VALID); } catch (InternalErrorException e) { log.error("Synchronizer: checkGroupMemberExpiration failed to read member's state in group. Member: {}, Group: {}, Exception: {}", member, group, e); .forEach(member -> { try { perun.getGroupsManagerBl().expireMemberInGroup(sess, member, group); log.info("Switching {} in {} to EXPIRED state, due to expiration {}.", member, group, perun.getAttributesManagerBl().getAttribute(sess, member, group, "urn:perun:member_group:attribute-def:def:membershipExpiration").getValue()); } catch (InternalErrorException e) { log.error("Consistency error while trying to expire member {} in {}, exception {}", member, group, e);
Group group = perun.getGroupsManagerBl().getGroupById(session, groupId); List<Member> groupMembers = perun.getGroupsManagerBl().getGroupMembers(session, group); if (groupMembers != null) { for (Member member : groupMembers) { memberEmailDto.setMessage(messageDto.getMessageToSend()); memberEmailDto.setSubject(messageDto.getSubject()); memberEmailDto.setReceiver((String) perun.getAttributesManagerBl().getAttribute(session, perun.getUsersManager().getUserByMember(session, member), "urn:perun:user:attribute-def:def:preferredMail").getValue()); memberEmailDto.setSender(groupSender);
/** * Expires members whose expiration is set to given date or before it. * * @throws InternalErrorException internal error * @throws WrongAttributeAssignmentException error * @throws AttributeNotExistsException error */ private void expireMembers(Calendar date) throws InternalErrorException, WrongAttributeAssignmentException, AttributeNotExistsException { List<Member> shouldBeExpired = perun.getSearcherBl().getMembersByExpiration(sess, "<=", date); for (Member member : shouldBeExpired) { if (member.getStatus().equals(Status.VALID)) { try { perun.getMembersManagerBl().expireMember(sess, member); log.info("Switching {} to EXPIRE state, due to expiration {}.", member, perun.getAttributesManagerBl().getAttribute(sess, member, "urn:perun:member:attribute-def:def:membershipExpiration").getValue()); } catch (MemberNotValidYetException e) { log.error("Consistency error while trying to expire member {}, exception {}", member, e); } } } }
} else { Member member = perun.getMembersManagerBl().getMemberByUser(session, vo, user); Date membershipExpiration = null; Date manualExpiration = null; Attribute membershipExpirationAttr = perun.getAttributesManagerBl().getAttribute(session, member, AttributesManager.NS_MEMBER_ATTR_DEF + ":membershipExpiration"); if (membershipExpirationAttr.getValue() != null) { Attribute manualExpirationAttr = perun.getAttributesManagerBl().getAttribute(session, user, AttributesManager.NS_USER_ATTR_DEF + ":expirationManual"); if (manualExpirationAttr.getValue() != null) { perun.getAttributesManager().setAttribute(session, user, manualExpirationAttr);
userOfMember = perun.getUsersManagerBl().getUserByMember(session, member); }catch(InternalErrorException ex){ throw new VOOTException("internal_server_error"); if(perun.getGroupsManagerBl().getAdmins(session, group).contains(userOfMember)){ vootMembership = "admin"; }else{
public Response getUser(String identifier) throws SCIMException { log.debug("Calling SCIM REST method getUser by id {}", identifier); if (identifier == null) { throw new NullPointerException("identifier is null"); } try { User perunUser = perunBl.getUsersManagerBl().getUserById(session, Integer.parseInt(identifier)); ObjectMapper mapper = new ObjectMapper(); return Response.ok(mapper.writeValueAsString(mapPerunUserToScimUser(perunUser))).build(); } catch (InternalErrorException ex) { log.warn("Internal exception occured while getting user with id {}.", identifier); return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } catch (UserNotExistsException ex) { log.warn("User with id {} does not exists.", identifier); return Response.status(Response.Status.NOT_FOUND).build(); } catch (IOException ex) { throw new SCIMException("Cannot convert user resource to json string", ex); } }
perun.getUsersManagerBl().validatePasswordAndSetExtSources(registrarSession, app.getUser(), pair.getRight(), pair.getLeft()); perun.getGroupsManager().addMember(registrarSession, app.getGroup(), member); } else { ExtSource es = perun.getExtSourcesManagerBl().getExtSourceByName(sess, app.getExtSourceName()); UserExtSource ues = perun.getUsersManagerBl().getUserExtSourceByExtLogin(sess, es, app.getCreatedBy()); perun.getUsersManagerBl().validatePasswordAndSetExtSources(registrarSession, u, pair.getRight(), pair.getLeft()); perun.getAuditer().log(sess, new MemberCreatedForApprovedApp(member,app)); perun.getUsersManagerBl().validatePasswordAndSetExtSources(registrarSession, app.getUser(), pair.getRight(), pair.getLeft()); perun.getAuditer().log(sess, new MembershipExtendedForMemberInApprovedApp(member,app,app.getVo()));
List<Vo> vos = perun.getVosManagerBl().getVos(perunSession); resources = perun.getResourcesManagerBl().getResources(perunSession, vo); for(Resource resource: resources) { Facility facility = null; try { facility = perun.getFacilitiesManagerBl().getFacilityById(perunSession, resource.getFacilityId()); } catch (FacilityNotExistsException ex) { throw new InternalErrorException("Can't found facility of this resource " + resource, ex); Attribute entityIDAttr = null; try { entityIDAttr = perun.getAttributesManagerBl().getAttribute(perunSession, facility, AttributesManager.NS_FACILITY_ATTR_DEF + ":entityID"); } catch (AttributeNotExistsException | WrongAttributeAssignmentException ex) { Attribute clientIDAttr = null; try { clientIDAttr = perun.getAttributesManagerBl().getAttribute(perunSession, facility, AttributesManager.NS_FACILITY_ATTR_DEF + ":OIDCClientID"); } catch (AttributeNotExistsException | WrongAttributeAssignmentException ex) { List<Group> assignedGroups = perun.getResourcesManagerBl().getAssignedGroups(perunSession, resource); for(Group g: assignedGroups) { writer.write("assignedGroupId: " + g.getId());
if (perun.getUsersManagerBl().isLoginAvailable(registrarSession, loginNamespace, login)) { try { try { perun.getUsersManagerBl().reservePassword(registrarSession, login, loginNamespace, pass); log.debug("[REGISTRAR] Password for login: {} in namespace: {} successfully reserved in external system.", login, loginNamespace); } catch (Exception ex) { perun.getAuditer().log(session, new ApplicationCreated(application));
@Transactional @Override public void deleteFormItem(PerunSession user, ApplicationForm form, int ordnum) throws InternalErrorException, PrivilegeException { if (!AuthzResolver.isAuthorized(user, Role.VOADMIN, form.getVo())) { throw new PrivilegeException(user, "deleteFormItem"); } jdbc.update("delete from application_form_items where form_id=? and ordnum=?", form.getId(), ordnum); jdbc.update("update application_form_items set ordnum=ordnum-1 where form_id=? and ordnum>?", form.getId(), ordnum); perun.getAuditer().log(user, new FormItemDeleted(form)); }
@Override public Application approveApplication(PerunSession session, Application app) throws PerunException { PerunBl perun = (PerunBl) session.getPerun(); Member member = perun.getMembersManagerBl().getMemberByUser(session, app.getVo(), app.getUser()); if (app.getGroup() == null && Objects.equals(app.getType(), Application.AppType.INITIAL)) { // IF VO INITIAL override VO rules to set unlimited (only to those with LoA = 2). Attribute loaAttr = perun.getAttributesManagerBl().getAttribute(session, member, AttributesManager.NS_MEMBER_ATTR_VIRT + ":loa"); int loa = Integer.valueOf((String) loaAttr.getValue()); if (loa == 2) { Attribute attr = perun.getAttributesManagerBl().getAttribute(session, member, AttributesManager.NS_MEMBER_ATTR_DEF + ":membershipExpiration"); attr.setValue("9999-01-01"); // set distant future as never expires perun.getAttributesManagerBl().setAttribute(session, member, attr); } } if ((app.getGroup() != null && Objects.equals(app.getType(), Application.AppType.INITIAL)) || (app.getGroup() == null && Objects.equals(app.getType(), Application.AppType.EXTENSION))) { // GROUP INITIAL OR VO EXTENSION -> set back standard expiration date based on VO rules Attribute attr = perun.getAttributesManagerBl().getAttribute(session, member, AttributesManager.NS_MEMBER_ATTR_DEF + ":membershipExpiration"); perun.getAttributesManagerBl().removeAttribute(session, member, attr); perun.getMembersManagerBl().extendMembership(session, member); } return app; }
List<Vo> vos = perun.getVosManagerBl().getVos(perunSession); groups = perun.getGroupsManagerBl().getGroups(perunSession, vo); members = perun.getGroupsManagerBl().getGroupMembers(perunSession, group, Status.VALID); writer.write(cn + '\n'); writer.write(perunUniqueGroupName + '\n'); associatedResources = perun.getResourcesManagerBl().getAssignedResources(perunSession, group); for(Resource r: associatedResources) { writer.write("assignedToResourceId: " + r.getId());
private EmailSCIM getEmail(User perunUser) { Attribute preferredEmailAttribute = new Attribute(); EmailSCIM email = new EmailSCIM(); try { preferredEmailAttribute = perunBl.getAttributesManagerBl().getAttribute(session, perunUser, AttributesManager.NS_USER_ATTR_DEF + ":preferredMail"); if (preferredEmailAttribute.getValue() != null) { email.setValue(preferredEmailAttribute.getValue().toString()); email.setPrimary(true); email.setType("preferred email"); return email; } } catch (InternalErrorException | WrongAttributeAssignmentException ex) { log.error("Internal exception occured while getting preferred email of user " + perunUser.getId(), ex); } catch (AttributeNotExistsException ex) { log.error("Attribute preferredMail doesn't exist for user " + perunUser.getId(), ex); } return null; } }