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);
}
}
}
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());
}
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;
}
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));
}
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, " ");
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();
}
Aggregations