Search in sources :

Example 1 with Member

use of cz.metacentrum.perun.webgui.model.Member in project perun by CESNET.

the class PerunStatusWidget method build.

/**
	 * Builds the widget
	 */
private void build() {
    statusWidget.clear(true);
    statusWidget.setStyleName("member-status");
    statusWidget.setCellSpacing(0);
    statusWidget.setCellPadding(0);
    // image
    statusWidget.setWidget(0, 0, getImage());
    statusWidget.getFlexCellFormatter().setVerticalAlignment(0, 0, HasVerticalAlignment.ALIGN_MIDDLE);
    // text
    HTML stat = new HTML(object.getStatus());
    statusWidget.setWidget(0, 1, stat);
    statusWidget.getFlexCellFormatter().setVerticalAlignment(0, 1, HasVerticalAlignment.ALIGN_MIDDLE);
    // if a callback set
    if (events != null) {
        // FIXME better usage
        if (object.getObjectType().equals("Member") || object.getObjectType().equals("RichMember")) {
            Member m = object.cast();
            if (PerunWebSession.getInstance().isVoAdmin(m.getVoId())) {
                // 	change button
                statusWidget.setWidget(0, 2, getChangeStatusButton());
                statusWidget.getFlexCellFormatter().setVerticalAlignment(0, 2, HasVerticalAlignment.ALIGN_MIDDLE);
            }
        } else {
            // 	change button
            statusWidget.setWidget(0, 2, getChangeStatusButton());
            statusWidget.getFlexCellFormatter().setVerticalAlignment(0, 2, HasVerticalAlignment.ALIGN_MIDDLE);
        }
    }
}
Also used : Member(cz.metacentrum.perun.webgui.model.Member) RichMember(cz.metacentrum.perun.webgui.model.RichMember)

Example 2 with Member

use of cz.metacentrum.perun.webgui.model.Member in project perun by CESNET.

the class CreateSpecificMember method createMember.

/**
	 * Attempts to create service member in VO
	 *
	 * @param voId vo where member should be created
	 * @param name name of service member
	 * @param email email of service member
	 * @param users list of real users
	 * @param namespace namespace to create login in
	 * @param login users login in namespace
	 * @param certDN users cert DN
	 * @param caCertDN users CA cert DN
	 */
public void createMember(final int voId, final String name, final String email, ArrayList<User> users, String namespace, String login, String certDN, String caCertDN, String specificUserType) {
    this.voId = voId;
    this.name = name;
    this.email = email;
    this.users = users;
    this.login = login;
    this.namespace = namespace;
    this.certDN = certDN;
    this.caCertDN = caCertDN;
    this.specificUserType = specificUserType;
    // test arguments
    if (!this.testAdding()) {
        return;
    }
    // new events
    JsonCallbackEvents newEvents = new JsonCallbackEvents() {

        public void onError(PerunError error) {
            session.getUiElements().setLogErrorText("Creating member: " + name + " failed.");
            events.onError(error);
        }

        ;

        public void onFinished(JavaScriptObject jso) {
            session.getUiElements().setLogSuccessText("Member " + name + " created !");
            // call validation asynchronously
            Member mem = jso.cast();
            ValidateMemberAsync request = new ValidateMemberAsync();
            request.setHidden(true);
            request.validateMemberAsync(mem);
            events.onFinished(jso);
        }

        ;

        public void onLoadingStart() {
            events.onLoadingStart();
        }

        ;
    };
    // sending data
    JsonPostClient jspc = new JsonPostClient(newEvents);
    jspc.sendData(JSON_URL, prepareJSONObject());
}
Also used : JsonCallbackEvents(cz.metacentrum.perun.webgui.json.JsonCallbackEvents) JavaScriptObject(com.google.gwt.core.client.JavaScriptObject) JsonPostClient(cz.metacentrum.perun.webgui.json.JsonPostClient) PerunError(cz.metacentrum.perun.webgui.model.PerunError) Member(cz.metacentrum.perun.webgui.model.Member)

Example 3 with Member

use of cz.metacentrum.perun.webgui.model.Member in project perun by CESNET.

the class PerunStatusWidget method getChangeStatusButton.

/**
	 * Changing status button
	 * @return the widget
	 */
private Widget getChangeStatusButton() {
    Anchor button = new Anchor("change");
    button.setTitle("Change status for " + objectName + ".");
    button.addClickHandler(new ClickHandler() {

        public void onClick(ClickEvent event) {
            RichMember member = object.cast();
            JsonCallbackEvents newEvent = JsonCallbackEvents.mergeEvents(events, new JsonCallbackEvents() {

                @Override
                public void onFinished(JavaScriptObject jso) {
                    Member m = jso.cast();
                    object.setStatus(m.getStatus());
                    build();
                }
            });
            PerunWebSession.getInstance().getTabManager().addTabToCurrentTab(new ChangeStatusTabItem(member, newEvent));
        }
    });
    return button;
}
Also used : JsonCallbackEvents(cz.metacentrum.perun.webgui.json.JsonCallbackEvents) ClickHandler(com.google.gwt.event.dom.client.ClickHandler) JavaScriptObject(com.google.gwt.core.client.JavaScriptObject) ClickEvent(com.google.gwt.event.dom.client.ClickEvent) ChangeStatusTabItem(cz.metacentrum.perun.webgui.tabs.memberstabs.ChangeStatusTabItem) RichMember(cz.metacentrum.perun.webgui.model.RichMember) Member(cz.metacentrum.perun.webgui.model.Member) RichMember(cz.metacentrum.perun.webgui.model.RichMember)

Example 4 with Member

use of cz.metacentrum.perun.webgui.model.Member in project perun by CESNET.

the class MemberColumnProvider method addStatusColumn.

public void addStatusColumn(IsClickableCell authz, int width) {
    // Status column
    final Column<RichMember, String> statusColumn = new Column<RichMember, String>(new PerunStatusCell()) {

        @Override
        public String getValue(RichMember object) {
            return object.getStatus();
        }
    };
    // own onClick tab for changing member's status
    statusColumn.setFieldUpdater(new FieldUpdater<RichMember, String>() {

        @Override
        public void update(final int index, final RichMember object, final String value) {
            PerunWebSession.getInstance().getTabManager().addTabToCurrentTab(new ChangeStatusTabItem(object, new JsonCallbackEvents() {

                @Override
                public void onFinished(JavaScriptObject jso) {
                    Member m = jso.cast();
                    // set status to object in cell to change rendered value
                    object.setStatus(m.getStatus());
                    // because they are not updated during .update() on cell
                    for (RichMember rm : dataProvider.getList()) {
                        if (rm.getId() == m.getId()) {
                            rm.setStatus(m.getStatus());
                        }
                    }
                    if (backupList != null) {
                        for (RichMember rm : backupList) {
                            if (rm.getId() == m.getId()) {
                                rm.setStatus(m.getStatus());
                            }
                        }
                    }
                    dataProvider.refresh();
                    dataProvider.flush();
                }
            }));
        }
    });
    // add column
    table.addColumn(statusColumn, "Status");
    if (width != 0) {
        table.setColumnWidth(statusColumn, width, Style.Unit.PX);
    }
    // status column sortable
    statusColumn.setSortable(true);
    table.getColumnSortHandler().setComparator(statusColumn, new GeneralComparator<RichMember>(GeneralComparator.Column.STATUS));
}
Also used : JsonCallbackEvents(cz.metacentrum.perun.webgui.json.JsonCallbackEvents) RichMember(cz.metacentrum.perun.webgui.model.RichMember) Column(com.google.gwt.user.cellview.client.Column) JavaScriptObject(com.google.gwt.core.client.JavaScriptObject) PerunStatusCell(cz.metacentrum.perun.webgui.widgets.cells.PerunStatusCell) ChangeStatusTabItem(cz.metacentrum.perun.webgui.tabs.memberstabs.ChangeStatusTabItem) Member(cz.metacentrum.perun.webgui.model.Member) RichMember(cz.metacentrum.perun.webgui.model.RichMember)

Example 5 with Member

use of cz.metacentrum.perun.webgui.model.Member in project perun by CESNET.

the class MemberOverviewTabItem method draw.

public Widget draw() {
    this.titleWidget.setText(Utils.getStrippedStringWithEllipsis(member.getUser().getFullNameWithTitles().trim()));
    // main widget panel
    ScrollPanel vp = new ScrollPanel();
    vp.setSize("100%", "100%");
    VerticalPanel innerVp = new VerticalPanel();
    innerVp.setSize("100%", "100%");
    vp.add(innerVp);
    TabMenu menu = new TabMenu();
    innerVp.add(menu);
    innerVp.setCellHeight(menu, "30px");
    menu.addWidget(UiElements.getRefreshButton(this));
    session.getUiElements().resizeSmallTabPanel(vp, 400);
    FlexTable layout = new FlexTable();
    layout.setSize("100%", "100%");
    innerVp.add(layout);
    layout.setHTML(0, 0, "<p>Personal:");
    layout.setHTML(0, 1, "<p>Membership:");
    layout.getFlexCellFormatter().setWidth(0, 0, "50%");
    layout.getFlexCellFormatter().setWidth(0, 1, "50%");
    layout.getFlexCellFormatter().setStyleName(0, 0, "subsection-heading");
    layout.getFlexCellFormatter().setStyleName(0, 1, "subsection-heading");
    // if attribute not set
    final String notSet = "<i>N/A</i>";
    final FlexTable personalLayout = new FlexTable();
    layout.setWidget(1, 0, personalLayout);
    personalLayout.setStyleName("inputFormFlexTableDark");
    personalLayout.setHTML(0, 0, "Organization:");
    personalLayout.setHTML(1, 0, "Workplace:");
    personalLayout.setHTML(2, 0, "Research group:");
    personalLayout.setHTML(3, 0, "Preferred mail:");
    personalLayout.setHTML(4, 0, "Mail:");
    personalLayout.setHTML(5, 0, "Phone:");
    personalLayout.setHTML(6, 0, "Address:");
    personalLayout.setHTML(7, 0, "Preferred language:");
    personalLayout.setHTML(8, 0, "LoA:");
    personalLayout.setHTML(9, 0, "EDU person affiliation:");
    // one empty cell to create empty column
    personalLayout.setHTML(0, 1, "&nbsp;");
    personalLayout.getFlexCellFormatter().setWidth(0, 1, "70%");
    // style personal table
    for (int i = 0; i < personalLayout.getRowCount(); i++) {
        personalLayout.getFlexCellFormatter().addStyleName(i, 0, "itemName");
    }
    // Membership table
    final FlexTable memberLayout = new FlexTable();
    layout.setWidget(1, 1, memberLayout);
    layout.getFlexCellFormatter().setVerticalAlignment(1, 1, HasVerticalAlignment.ALIGN_TOP);
    memberLayout.setStyleName("inputFormFlexTableDark");
    memberLayout.setHTML(0, 0, "Status:");
    final PerunStatusWidget<RichMember> statusWidget;
    if (session.isVoAdmin(member.getVoId())) {
        JsonCallbackEvents event = new JsonCallbackEvents() {

            @Override
            public void onFinished(JavaScriptObject jso) {
                // UPDATE OBJECT
                Member m = jso.cast();
                member.setStatus(m.getStatus());
            }
        };
        statusWidget = new PerunStatusWidget<RichMember>(member, member.getUser().getFullName(), event);
    } else {
        statusWidget = new PerunStatusWidget<RichMember>(member, member.getUser().getFullName(), null);
    }
    memberLayout.setWidget(0, 1, statusWidget);
    memberLayout.getFlexCellFormatter().setRowSpan(0, 0, 2);
    if (member.getStatus().equalsIgnoreCase("VALID")) {
        memberLayout.setHTML(1, 0, "Member is properly configured and have access on provided resources.");
    } else if (member.getStatus().equalsIgnoreCase("INVALID")) {
        memberLayout.setHTML(1, 0, "Member have configuration error and DON'T have access on provided resources. You can check what is wrong by changing member's status to VALID. If possible, procedure will configure all necessary settings by itself.");
    } else if (member.getStatus().equalsIgnoreCase("SUSPENDED")) {
        memberLayout.setHTML(1, 0, "Member violated some rules and DON'T have access on provided resources.");
    } else if (member.getStatus().equalsIgnoreCase("EXPIRED")) {
        memberLayout.setHTML(1, 0, "Member didn't extend membership and DON'T have access on provided resources.");
    } else if (member.getStatus().equalsIgnoreCase("DISABLED")) {
        memberLayout.setHTML(1, 0, "Member didn't extend membership long time ago or was manually disabled and DON'T have access on provided resources.");
    }
    memberLayout.getFlexCellFormatter().setStyleName(1, 0, "inputFormInlineComment");
    memberLayout.setHTML(2, 0, "Expiration:");
    memberLayout.setHTML(3, 0, "Member type:");
    if (member.getUser().isServiceUser()) {
        memberLayout.setHTML(3, 1, "Service");
    } else if (member.getUser().isSponsoredUser()) {
        memberLayout.setHTML(3, 1, "Sponsored");
    } else {
        memberLayout.setHTML(3, 1, "Person");
    }
    memberLayout.setHTML(4, 0, "Sponsored by:");
    memberLayout.setHTML(5, 0, "Member ID:");
    memberLayout.setHTML(5, 1, member.getId() + "");
    memberLayout.setHTML(6, 0, "User ID:");
    memberLayout.setHTML(6, 1, member.getUser().getId() + "");
    if (session.isVoAdmin(member.getVoId())) {
        CustomButton resetButton = new CustomButton("Send password reset request…", "", SmallIcons.INSTANCE.keyIcon(), new ClickHandler() {

            @Override
            public void onClick(ClickEvent event) {
                session.getTabManager().addTabToCurrentTab(new SendPasswordResetRequestTabItem(member));
            }
        });
        memberLayout.setHTML(7, 0, "Password reset");
        memberLayout.setWidget(7, 1, resetButton);
    }
    // style member table
    for (int i = 0; i < memberLayout.getRowCount(); i++) {
        if (i != 1) {
            memberLayout.getFlexCellFormatter().addStyleName(i, 0, "itemName");
        }
    }
    // attributes to load
    ArrayList<String> attrs = new ArrayList<String>();
    // TODO - switch all personal to member attrs
    attrs.add("urn:perun:user:attribute-def:def:organization");
    attrs.add("urn:perun:user:attribute-def:def:workplace");
    attrs.add("urn:perun:user:attribute-def:opt:researchGroup");
    attrs.add("urn:perun:member:attribute-def:def:mail");
    attrs.add("urn:perun:user:attribute-def:def:preferredMail");
    attrs.add("urn:perun:user:attribute-def:def:phone");
    attrs.add("urn:perun:user:attribute-def:def:address");
    attrs.add("urn:perun:user:attribute-def:def:preferredLanguage");
    attrs.add("urn:perun:member:attribute-def:virt:loa");
    attrs.add("urn:perun:member:attribute-def:def:membershipExpiration");
    attrs.add("urn:perun:member:attribute-def:opt:eduPersonAffiliation");
    attrs.add("urn:perun:member:attribute-def:def:sponzoredMember");
    HashMap<String, Integer> ids = new HashMap<String, Integer>();
    ids.put("member", memberId);
    ids.put("workWithUserAttributes", 1);
    GetListOfAttributes attrsCall = new GetListOfAttributes();
    attrsCall.setEvents(new JsonCallbackEvents() {

        @Override
        public void onFinished(JavaScriptObject jso) {
            ArrayList<Attribute> list = JsonUtils.jsoAsList(jso);
            if (list != null && !list.isEmpty()) {
                for (Attribute a : list) {
                    String value = a.getValue();
                    if (a.getName().equalsIgnoreCase("urn:perun:user:attribute-def:def:organization")) {
                        if (!"null".equals(value)) {
                            personalLayout.setHTML(0, 1, value);
                        } else {
                            personalLayout.setHTML(0, 1, notSet);
                        }
                    // set default value width
                    } else if (a.getName().equalsIgnoreCase("urn:perun:user:attribute-def:def:workplace")) {
                        if (!"null".equals(value)) {
                            personalLayout.setHTML(1, 1, value);
                        } else {
                            personalLayout.setHTML(1, 1, notSet);
                        }
                    } else if (a.getName().equalsIgnoreCase("urn:perun:user:attribute-def:opt:researchGroup")) {
                        if (!"null".equals(value)) {
                            personalLayout.setHTML(2, 1, value);
                        } else {
                            personalLayout.setHTML(2, 1, notSet);
                        }
                    } else if (a.getName().equalsIgnoreCase("urn:perun:user:attribute-def:def:preferredMail")) {
                        if (!"null".equals(value)) {
                            personalLayout.setHTML(3, 1, value);
                        } else {
                            personalLayout.setHTML(3, 1, notSet);
                        }
                    } else if (a.getName().equalsIgnoreCase("urn:perun:member:attribute-def:def:mail")) {
                        if (!"null".equals(value)) {
                            personalLayout.setHTML(4, 1, value);
                        } else {
                            personalLayout.setHTML(4, 1, notSet);
                        }
                    } else if (a.getName().equalsIgnoreCase("urn:perun:user:attribute-def:def:phone")) {
                        if (!"null".equals(value)) {
                            personalLayout.setHTML(5, 1, value);
                        } else {
                            personalLayout.setHTML(5, 1, notSet);
                        }
                    } else if (a.getName().equalsIgnoreCase("urn:perun:user:attribute-def:def:address")) {
                        if (!"null".equals(value)) {
                            personalLayout.setHTML(6, 1, value);
                        } else {
                            personalLayout.setHTML(6, 1, notSet);
                        }
                    } else if (a.getName().equalsIgnoreCase("urn:perun:user:attribute-def:def:preferredLanguage")) {
                        if (!"null".equals(value)) {
                            personalLayout.setHTML(7, 1, value);
                        } else {
                            personalLayout.setHTML(7, 1, notSet);
                        }
                    } else if (a.getName().equalsIgnoreCase("urn:perun:member:attribute-def:virt:loa")) {
                        if (!"null".equals(value)) {
                            String text = "";
                            if (value.equals("0")) {
                                text = " (not verified = default)";
                            } else if (value.equals("1")) {
                                text = " (verified email)";
                            } else if (value.equals("2")) {
                                text = " (verified identity)";
                            } else if (value.equals("3")) {
                                text = " (verified identity, strict password strength)";
                            }
                            personalLayout.setHTML(8, 1, value + text);
                        } else {
                            personalLayout.setHTML(8, 1, notSet);
                        }
                    } else if (a.getName().equalsIgnoreCase("urn:perun:member:attribute-def:opt:eduPersonAffiliation")) {
                        if (!"null".equals(value)) {
                            personalLayout.setHTML(9, 1, value);
                        } else {
                            personalLayout.setHTML(9, 1, notSet);
                        }
                    } else if (a.getName().equalsIgnoreCase("urn:perun:member:attribute-def:def:membershipExpiration")) {
                        // set attribute inside member
                        member.setAttribute(a);
                        memberLayout.setWidget(2, 1, new MembershipExpirationWidget(member));
                    } else if (a.getName().equalsIgnoreCase("urn:perun:member:attribute-def:def:sponzoredMember")) {
                        if (!"null".equals(value)) {
                            memberLayout.setHTML(4, 1, value + " (ID of RT ticket with explanation)");
                        } else {
                            memberLayout.setHTML(4, 1, "<i>N/A</i>");
                        }
                    }
                }
            }
        }

        @Override
        public void onError(PerunError error) {
            String text = "<span style=\"color: red\">Error while loading";
            for (int i = 0; i < personalLayout.getRowCount(); i++) {
                personalLayout.setHTML(i, 1, text);
            }
            memberLayout.setHTML(2, 1, text);
            memberLayout.setHTML(4, 1, text);
        }

        @Override
        public void onLoadingStart() {
            for (int i = 0; i < personalLayout.getRowCount(); i++) {
                personalLayout.setWidget(i, 1, new Image(AjaxLoaderImage.SMALL_IMAGE_URL));
            }
            memberLayout.setWidget(2, 1, new Image(AjaxLoaderImage.SMALL_IMAGE_URL));
            memberLayout.setWidget(4, 1, new Image(AjaxLoaderImage.SMALL_IMAGE_URL));
        }
    });
    attrsCall.getListOfAttributes(ids, attrs);
    this.contentWidget.setWidget(vp);
    return getWidget();
}
Also used : JsonCallbackEvents(cz.metacentrum.perun.webgui.json.JsonCallbackEvents) HashMap(java.util.HashMap) Attribute(cz.metacentrum.perun.webgui.model.Attribute) ClickEvent(com.google.gwt.event.dom.client.ClickEvent) ArrayList(java.util.ArrayList) AjaxLoaderImage(cz.metacentrum.perun.webgui.widgets.AjaxLoaderImage) CustomButton(cz.metacentrum.perun.webgui.widgets.CustomButton) Member(cz.metacentrum.perun.webgui.model.Member) RichMember(cz.metacentrum.perun.webgui.model.RichMember) MembershipExpirationWidget(cz.metacentrum.perun.webgui.widgets.MembershipExpirationWidget) GetListOfAttributes(cz.metacentrum.perun.webgui.json.attributesManager.GetListOfAttributes) RichMember(cz.metacentrum.perun.webgui.model.RichMember) TabMenu(cz.metacentrum.perun.webgui.widgets.TabMenu) ClickHandler(com.google.gwt.event.dom.client.ClickHandler) JavaScriptObject(com.google.gwt.core.client.JavaScriptObject) PerunError(cz.metacentrum.perun.webgui.model.PerunError)

Aggregations

Member (cz.metacentrum.perun.webgui.model.Member)5 JavaScriptObject (com.google.gwt.core.client.JavaScriptObject)4 JsonCallbackEvents (cz.metacentrum.perun.webgui.json.JsonCallbackEvents)4 RichMember (cz.metacentrum.perun.webgui.model.RichMember)4 ClickEvent (com.google.gwt.event.dom.client.ClickEvent)2 ClickHandler (com.google.gwt.event.dom.client.ClickHandler)2 PerunError (cz.metacentrum.perun.webgui.model.PerunError)2 ChangeStatusTabItem (cz.metacentrum.perun.webgui.tabs.memberstabs.ChangeStatusTabItem)2 Column (com.google.gwt.user.cellview.client.Column)1 JsonPostClient (cz.metacentrum.perun.webgui.json.JsonPostClient)1 GetListOfAttributes (cz.metacentrum.perun.webgui.json.attributesManager.GetListOfAttributes)1 Attribute (cz.metacentrum.perun.webgui.model.Attribute)1 AjaxLoaderImage (cz.metacentrum.perun.webgui.widgets.AjaxLoaderImage)1 CustomButton (cz.metacentrum.perun.webgui.widgets.CustomButton)1 MembershipExpirationWidget (cz.metacentrum.perun.webgui.widgets.MembershipExpirationWidget)1 TabMenu (cz.metacentrum.perun.webgui.widgets.TabMenu)1 PerunStatusCell (cz.metacentrum.perun.webgui.widgets.cells.PerunStatusCell)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1