Skip to content

Commit

Permalink
fix(registrar): do not display VO membership extension dialog for use…
Browse files Browse the repository at this point in the history
…r that's valid with no expiration date when submitting application to group
  • Loading branch information
xflord committed Dec 6, 2022
1 parent 80b0c66 commit bd81af6
Showing 1 changed file with 108 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@
import cz.metacentrum.perun.wui.client.utils.Utils;
import cz.metacentrum.perun.wui.json.ErrorTranslator;
import cz.metacentrum.perun.wui.json.JsonEvents;
import cz.metacentrum.perun.wui.json.managers.MembersManager;
import cz.metacentrum.perun.wui.json.managers.RegistrarManager;
import cz.metacentrum.perun.wui.json.managers.UsersManager;
import cz.metacentrum.perun.wui.model.BasicOverlayObject;
import cz.metacentrum.perun.wui.model.GeneralObject;
import cz.metacentrum.perun.wui.model.PerunException;
Expand All @@ -32,6 +34,8 @@
import cz.metacentrum.perun.wui.model.beans.ExtSource;
import cz.metacentrum.perun.wui.model.beans.Group;
import cz.metacentrum.perun.wui.model.beans.Identity;
import cz.metacentrum.perun.wui.model.beans.Member;
import cz.metacentrum.perun.wui.model.beans.RichMember;
import cz.metacentrum.perun.wui.model.beans.Vo;
import cz.metacentrum.perun.wui.model.common.PerunPrincipal;
import cz.metacentrum.perun.wui.registrar.client.ExceptionResolver;
Expand Down Expand Up @@ -76,6 +80,7 @@
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Objects;
import java.util.Set;

/**
Expand All @@ -92,10 +97,14 @@ interface FormViewUiBinder extends UiBinder<Widget, FormView> {

private static PerunRegistrarTranslation translation = GWT.create(PerunRegistrarTranslation.class);

private static final String EXPIRATION_ATTRIBUTE_URN = "urn:perun:member:attribute-def:def:membershipExpiration";

private Vo vo;
private Group group;
private ExceptionResolver exceptionResolver;

private boolean neverExp = false;

@UiField
PerunForm form;

Expand Down Expand Up @@ -192,7 +201,6 @@ public void draw() {

final PerunLoader loader = new PerunLoader();
form.add(loader);

RegistrarManager.initializeRegistrar(voName, groupName, new JsonEvents() {

JsonEvents retry = this;
Expand All @@ -205,6 +213,8 @@ public void onFinished(JavaScriptObject jso) {
// recreate VO and group
vo = registrar.getVo();



if (groupName != null && !groupName.isEmpty()) {
group = registrar.getGroup();
}
Expand Down Expand Up @@ -241,26 +251,95 @@ public void onClick(ClickEvent event) {
});

} else {
// get member and his attributes to decide whether he is valid with no expiration date to know whether to display extension dialog or not
MembersManager.getMemberByUser(PerunSession.getInstance().getUserId(), vo.getId(), new JsonEvents() {
@Override
public void onFinished(JavaScriptObject result) {
Member member = (Member) result;
MembersManager.getRichMemberWithAttributes(member.getId(), new JsonEvents() {
@Override
public void onFinished(JavaScriptObject result) {
RichMember richMember = (RichMember) result;
if (Objects.equals(richMember.getMembershipStatus(), "VALID") &&
richMember.getAttribute(EXPIRATION_ATTRIBUTE_URN) == null) {
neverExp = true;
}
loader.onFinished();
loader.removeFromParent();

// CHECK SIMILAR USERS
// Make sure we load form only after user decide to skip identity joining

if (!registrar.getSimilarUsers().isEmpty() &&
!isApplicationPending(registrar) &&
!PerunConfiguration.findSimilarUsersDisabled()) {
showSimilarUsersDialog(registrar.getSimilarUsers(), new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
loadSteps(pp, registrar);
}
});
} else {
loadSteps(pp, registrar);
}
}

loader.onFinished();
loader.removeFromParent();
@Override
public void onError(PerunException error) {
loader.onFinished();
loader.removeFromParent();

// CHECK SIMILAR USERS
// Make sure we load form only after user decide to skip identity joining

if (!registrar.getSimilarUsers().isEmpty() &&
!isApplicationPending(registrar) &&
!PerunConfiguration.findSimilarUsersDisabled()) {
showSimilarUsersDialog(registrar.getSimilarUsers(), new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
loadSteps(pp, registrar);
}
});
} else {
loadSteps(pp, registrar);
}
}

// CHECK SIMILAR USERS
// Make sure we load form only after user decide to skip identity joining
@Override
public void onLoadingStart() {

if (!registrar.getSimilarUsers().isEmpty() &&
!isApplicationPending(registrar) &&
!PerunConfiguration.findSimilarUsersDisabled()) {
showSimilarUsersDialog(registrar.getSimilarUsers(), new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
}
});
}

@Override
public void onError(PerunException error) {
loader.onFinished();
loader.removeFromParent();

// CHECK SIMILAR USERS
// Make sure we load form only after user decide to skip identity joining

if (!registrar.getSimilarUsers().isEmpty() &&
!isApplicationPending(registrar) &&
!PerunConfiguration.findSimilarUsersDisabled()) {
showSimilarUsersDialog(registrar.getSimilarUsers(), new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
loadSteps(pp, registrar);
}
});
} else {
loadSteps(pp, registrar);
}
});
} else {
loadSteps(pp, registrar);
}
}

@Override
public void onLoadingStart() {

}
});
}

}
Expand Down Expand Up @@ -315,13 +394,14 @@ private void loadSteps(PerunPrincipal pp, RegistrarObject registrar) {
} else if (voExtensionFormExists(registrar)) {

if (isMemberOfGroup(registrar) && groupExtensionFormExists(registrar)) {

for (ApplicationFormItemData item : registrar.getVoFormExtension()) {
if (!item.getFormItem().getType().equals(ApplicationFormItem.ApplicationFormItemType.HTML_COMMENT) &&
if (!neverExp) {
for (ApplicationFormItemData item : registrar.getVoFormExtension()) {
if (!item.getFormItem().getType().equals(ApplicationFormItem.ApplicationFormItemType.HTML_COMMENT) &&
!item.getFormItem().getType().equals(ApplicationFormItem.ApplicationFormItemType.HEADING)) {
// offer only when VO doesn't have empty or "You are registered" form.
stepManager.addStep(new VoExtOfferStep(registrar, form)); // will offer only if form is valid
break;
// offer only when VO doesn't have empty or "You are registered" form.
stepManager.addStep(new VoExtOfferStep(registrar, form)); // will offer only if form is valid
break;
}
}
}

Expand All @@ -331,13 +411,14 @@ private void loadSteps(PerunPrincipal pp, RegistrarObject registrar) {
} else {

stepManager.addStep(new GroupInitStep(registrar, form));

for (ApplicationFormItemData item : registrar.getVoFormExtension()) {
if (!item.getFormItem().getType().equals(ApplicationFormItem.ApplicationFormItemType.HTML_COMMENT) &&
if (!neverExp) {
for (ApplicationFormItemData item : registrar.getVoFormExtension()) {
if (!item.getFormItem().getType().equals(ApplicationFormItem.ApplicationFormItemType.HTML_COMMENT) &&
!item.getFormItem().getType().equals(ApplicationFormItem.ApplicationFormItemType.HEADING)) {
// offer only when VO doesn't have empty or "You are registered" form.
stepManager.addStep(new VoExtOfferStep(registrar, form)); // will offer only if form is valid
break;
// offer only when VO doesn't have empty or "You are registered" form.
stepManager.addStep(new VoExtOfferStep(registrar, form)); // will offer only if form is valid
break;
}
}
}
}
Expand Down

0 comments on commit bd81af6

Please sign in to comment.