You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2014/09/22 15:23:54 UTC
svn commit: r1626768 [1/2] - in /syncope/branches/1_2_X:
client/src/main/java/org/apache/syncope/client/
common/src/main/java/org/apache/syncope/common/util/
console/src/main/java/org/apache/syncope/console/
console/src/main/java/org/apache/syncope/con...
Author: ilgrosso
Date: Mon Sep 22 13:23:53 2014
New Revision: 1626768
URL: http://svn.apache.org/r1626768
Log:
[SYNCOPE-135] Security question / answer management implemented in admin console + link for password reset request (null ATM)
Added:
syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/SecurityQuestionModalPage.java (with props)
syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/panels/SecurityQuestionPanel.java (with props)
syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/rest/SecurityQuestionRestClient.java (with props)
syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/SecurityQuestionModalPage.html
- copied, changed from r1626162, syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/NotificationModalPage.html
syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/SecurityQuestionModalPage.properties (with props)
syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/SecurityQuestionModalPage_it.properties (with props)
syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/SecurityQuestionModalPage_pt_BR.properties (with props)
syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/panels/SecurityQuestionPanel.html (with props)
syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/panels/SecurityQuestionPanel.properties (with props)
syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/panels/SecurityQuestionPanel_it.properties (with props)
syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/panels/SecurityQuestionPanel_pt_BR.properties (with props)
Modified:
syncope/branches/1_2_X/client/src/main/java/org/apache/syncope/client/SyncopeClient.java
syncope/branches/1_2_X/common/src/main/java/org/apache/syncope/common/util/AttributableOperations.java
syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/SyncopeSession.java
syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/Configuration.java
syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/EditUserModalPage.java
syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/Login.java
syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/NotificationModalPage.java
syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/UserModalPage.java
syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/rest/ConfigurationRestClient.java
syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/rest/NotificationRestClient.java
syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/rest/UserSelfRestClient.java
syncope/branches/1_2_X/console/src/main/resources/authorizations.xml
syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Configuration.html
syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Configuration.properties
syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Configuration_it.properties
syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Configuration_pt_BR.properties
syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Login.html
syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Login.properties
syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Login_it.properties
syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Login_pt_BR.properties
syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/UserModalPage.html
syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/panels/AccountInformationPanel.html
syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/panels/UserDetailsPanel.html
syncope/branches/1_2_X/core/src/main/java/org/apache/syncope/core/services/UserSelfServiceImpl.java
Modified: syncope/branches/1_2_X/client/src/main/java/org/apache/syncope/client/SyncopeClient.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_2_X/client/src/main/java/org/apache/syncope/client/SyncopeClient.java?rev=1626768&r1=1626767&r2=1626768&view=diff
==============================================================================
--- syncope/branches/1_2_X/client/src/main/java/org/apache/syncope/client/SyncopeClient.java (original)
+++ syncope/branches/1_2_X/client/src/main/java/org/apache/syncope/client/SyncopeClient.java Mon Sep 22 13:23:53 2014
@@ -220,6 +220,17 @@ public class SyncopeClient {
}
/**
+ * Checks whether password reset is allowed by calling <tt>UserSelfService</tt>'s options.
+ *
+ * @return whether password reset is allowed
+ * @see UserSelfService#getOptions()
+ */
+ public boolean isPasswordResetAllowed() {
+ return Boolean.valueOf(restClientFactory.createServiceInstance(UserSelfService.class, mediaType, null, null).
+ getOptions().getHeaderString(RESTHeaders.PASSWORDRESET_ALLOWED));
+ }
+
+ /**
* Checks whether Activiti workflow is enabled for users / roles, by calling <tt>WorkflowService</tt>'s options.
*
* @param subjectType user / role
Modified: syncope/branches/1_2_X/common/src/main/java/org/apache/syncope/common/util/AttributableOperations.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_2_X/common/src/main/java/org/apache/syncope/common/util/AttributableOperations.java?rev=1626768&r1=1626767&r2=1626768&view=diff
==============================================================================
--- syncope/branches/1_2_X/common/src/main/java/org/apache/syncope/common/util/AttributableOperations.java (original)
+++ syncope/branches/1_2_X/common/src/main/java/org/apache/syncope/common/util/AttributableOperations.java Mon Sep 22 13:23:53 2014
@@ -224,8 +224,9 @@ public final class AttributableOperation
diff(updated, original, result, incremental);
// 1. password
- if (updated.getPassword() != null && (original.getPassword() == null || !original.getPassword().
- equals(updated.getPassword()))) {
+ if (updated.getPassword() != null && (original.getPassword() == null
+ || !original.getPassword().equals(updated.getPassword()))) {
+
result.setPassword(updated.getPassword());
}
@@ -234,7 +235,11 @@ public final class AttributableOperation
result.setUsername(updated.getUsername());
}
- // 3. memberships
+ // 3. security question / answer
+ result.setSecurityQuestion(updated.getSecurityQuestion());
+ result.setSecurityAnswer(updated.getSecurityAnswer());
+
+ // 4. memberships
Map<Long, MembershipTO> updatedMembs = updated.getMembershipMap();
Map<Long, MembershipTO> originalMembs = original.getMembershipMap();
Modified: syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/SyncopeSession.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/SyncopeSession.java?rev=1626768&r1=1626767&r2=1626768&view=diff
==============================================================================
--- syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/SyncopeSession.java (original)
+++ syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/SyncopeSession.java Mon Sep 22 13:23:53 2014
@@ -94,6 +94,13 @@ public class SyncopeSession extends WebS
return client.isSelfRegistrationAllowed();
}
+ public boolean isPasswordResetAllowed() {
+ SyncopeClient client = clients.isEmpty()
+ ? clientFactory.createAnonymous()
+ : clients.values().iterator().next();
+ return client.isPasswordResetAllowed();
+ }
+
public boolean isActivitiEnabledFor(final SubjectType type) {
SyncopeClient client = clients.isEmpty()
? clientFactory.createAnonymous()
Modified: syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/Configuration.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/Configuration.java?rev=1626768&r1=1626767&r2=1626768&view=diff
==============================================================================
--- syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/Configuration.java (original)
+++ syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/Configuration.java Mon Sep 22 13:23:53 2014
@@ -37,6 +37,7 @@ import org.apache.syncope.common.types.L
import org.apache.syncope.common.SyncopeClientException;
import org.apache.syncope.common.to.AttributeTO;
import org.apache.syncope.common.to.ConfTO;
+import org.apache.syncope.common.to.SecurityQuestionTO;
import org.apache.syncope.console.commons.Constants;
import org.apache.syncope.console.commons.HttpResourceStream;
import org.apache.syncope.console.commons.PreferenceManager;
@@ -46,6 +47,7 @@ import org.apache.syncope.console.pages.
import org.apache.syncope.console.rest.ConfigurationRestClient;
import org.apache.syncope.console.rest.LoggerRestClient;
import org.apache.syncope.console.rest.NotificationRestClient;
+import org.apache.syncope.console.rest.SecurityQuestionRestClient;
import org.apache.syncope.console.rest.WorkflowRestClient;
import org.apache.syncope.console.wicket.extensions.markup.html.repeater.data.table.CollectionPropertyColumn;
import org.apache.syncope.console.wicket.markup.html.form.ActionLink;
@@ -96,6 +98,14 @@ public class Configuration extends BaseP
private static final long serialVersionUID = -2838270869037702214L;
+ private static final int NOTIFICATION_WIN_HEIGHT = 500;
+
+ private static final int NOTIFICATION_WIN_WIDTH = 1100;
+
+ private static final int SECURITY_QUESTION_WIN_HEIGHT = 300;
+
+ private static final int SECURITY_QUESTION_WIN_WIDTH = 900;
+
@SpringBean
private ConfigurationRestClient confRestClient;
@@ -106,6 +116,9 @@ public class Configuration extends BaseP
private NotificationRestClient notificationRestClient;
@SpringBean
+ private SecurityQuestionRestClient securityQuestionRestClient;
+
+ @SpringBean
private WorkflowRestClient wfRestClient;
@SpringBean
@@ -115,12 +128,14 @@ public class Configuration extends BaseP
private final ModalWindow editNotificationWin;
- private static final int NOTIFICATION_WIN_HEIGHT = 500;
+ private final ModalWindow createSecurityQuestionWin;
- private static final int NOTIFICATION_WIN_WIDTH = 1100;
+ private final ModalWindow editSecurityQuestionWin;
private WebMarkupContainer notificationContainer;
+ private WebMarkupContainer securityQuestionContainer;
+
private int notificationPaginatorRows;
public Configuration() {
@@ -136,6 +151,10 @@ public class Configuration extends BaseP
add(editNotificationWin = new ModalWindow("editNotificationWin"));
setupNotification();
+ add(createSecurityQuestionWin = new ModalWindow("createSecurityQuestionWin"));
+ add(editSecurityQuestionWin = new ModalWindow("editSecurityQuestionWin"));
+ setupSecurityQuestion();
+
// Workflow definition stuff
WebMarkupContainer noActivitiEnabledForUsers = new WebMarkupContainer("noActivitiEnabledForUsers");
noActivitiEnabledForUsers.setOutputMarkupPlaceholderTag(true);
@@ -335,7 +354,6 @@ public class Configuration extends BaseP
@Override
public void onClick(final AjaxRequestTarget target) {
-
editNotificationWin.setPageCreator(new ModalWindow.PageCreator() {
private static final long serialVersionUID = -7834632442532690940L;
@@ -358,7 +376,7 @@ public class Configuration extends BaseP
@Override
public void onClick(final AjaxRequestTarget target) {
try {
- notificationRestClient.deleteNotification(notificationTO.getId());
+ notificationRestClient.delete(notificationTO.getId());
} catch (SyncopeClientException e) {
LOG.error("While deleting a notification", e);
error(e.getMessage());
@@ -398,13 +416,12 @@ public class Configuration extends BaseP
setWindowClosedCallback(createNotificationWin, notificationContainer);
setWindowClosedCallback(editNotificationWin, notificationContainer);
- AjaxLink createNotificationLink = new AjaxLink("createNotificationLink") {
+ AjaxLink<Void> createNotificationLink = new AjaxLink<Void>("createNotificationLink") {
private static final long serialVersionUID = -7978723352517770644L;
@Override
public void onClick(final AjaxRequestTarget target) {
-
createNotificationWin.setPageCreator(new ModalWindow.PageCreator() {
private static final long serialVersionUID = -7834632442532690940L;
@@ -449,11 +466,131 @@ public class Configuration extends BaseP
add(notificationPaginatorForm);
}
+ private void setupSecurityQuestion() {
+ final List<IColumn<SecurityQuestionTO, String>> securityQuestionCols =
+ new ArrayList<IColumn<SecurityQuestionTO, String>>();
+ securityQuestionCols.add(new PropertyColumn<SecurityQuestionTO, String>(
+ new ResourceModel("id"), "id", "id"));
+ securityQuestionCols.add(new PropertyColumn<SecurityQuestionTO, String>(
+ new ResourceModel("content"), "content", "content"));
+
+ securityQuestionCols.add(new AbstractColumn<SecurityQuestionTO, String>(new ResourceModel("actions", "")) {
+
+ private static final long serialVersionUID = 2054811145491901166L;
+
+ @Override
+ public String getCssClass() {
+ return "action";
+ }
+
+ @Override
+ public void populateItem(final Item<ICellPopulator<SecurityQuestionTO>> cellItem, final String componentId,
+ final IModel<SecurityQuestionTO> model) {
+
+ final SecurityQuestionTO securityQuestionTO = model.getObject();
+
+ final ActionLinksPanel panel = new ActionLinksPanel(componentId, model, getPageReference());
+
+ panel.add(new ActionLink() {
+
+ private static final long serialVersionUID = -3722207913631435501L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target) {
+ editSecurityQuestionWin.setPageCreator(new ModalWindow.PageCreator() {
+
+ private static final long serialVersionUID = -7834632442532690940L;
+
+ @Override
+ public Page createPage() {
+ return new SecurityQuestionModalPage(Configuration.this.getPageReference(),
+ editSecurityQuestionWin, securityQuestionTO, false);
+ }
+ });
+
+ editSecurityQuestionWin.show(target);
+ }
+ }, ActionLink.ActionType.EDIT, "SecurityQuestion");
+
+ panel.add(new ActionLink() {
+
+ private static final long serialVersionUID = -3722207913631435501L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target) {
+ try {
+ securityQuestionRestClient.delete(securityQuestionTO.getId());
+ } catch (SyncopeClientException e) {
+ LOG.error("While deleting a security question", e);
+ error(e.getMessage());
+ return;
+ }
+
+ info(getString(Constants.OPERATION_SUCCEEDED));
+ feedbackPanel.refresh(target);
+ target.add(securityQuestionContainer);
+ }
+ }, ActionLink.ActionType.DELETE, "SecurityQuestion");
+
+ cellItem.add(panel);
+ }
+ });
+
+ final AjaxFallbackDefaultDataTable<SecurityQuestionTO, String> securityQuestionTable =
+ new AjaxFallbackDefaultDataTable<SecurityQuestionTO, String>("securityQuestionTable",
+ securityQuestionCols, new SecurityQuestionProvider(), 50);
+
+ securityQuestionContainer = new WebMarkupContainer("securityQuestionContainer");
+ securityQuestionContainer.add(securityQuestionTable);
+ securityQuestionContainer.setOutputMarkupId(true);
+
+ add(securityQuestionContainer);
+
+ createSecurityQuestionWin.setCssClassName(ModalWindow.CSS_CLASS_GRAY);
+ createSecurityQuestionWin.setInitialHeight(SECURITY_QUESTION_WIN_HEIGHT);
+ createSecurityQuestionWin.setInitialWidth(SECURITY_QUESTION_WIN_WIDTH);
+ createSecurityQuestionWin.setCookieName("create-security-question-modal");
+
+ editSecurityQuestionWin.setCssClassName(ModalWindow.CSS_CLASS_GRAY);
+ editSecurityQuestionWin.setInitialHeight(SECURITY_QUESTION_WIN_HEIGHT);
+ editSecurityQuestionWin.setInitialWidth(SECURITY_QUESTION_WIN_WIDTH);
+ editSecurityQuestionWin.setCookieName("edit-security-question-modal");
+
+ setWindowClosedCallback(createSecurityQuestionWin, securityQuestionContainer);
+ setWindowClosedCallback(editSecurityQuestionWin, securityQuestionContainer);
+
+ AjaxLink<Void> createSecurityQuestionLink = new AjaxLink<Void>("createSecurityQuestionLink") {
+
+ private static final long serialVersionUID = -7978723352517770644L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target) {
+
+ createSecurityQuestionWin.setPageCreator(new ModalWindow.PageCreator() {
+
+ private static final long serialVersionUID = -7834632442532690940L;
+
+ @Override
+ public Page createPage() {
+ return new SecurityQuestionModalPage(Configuration.this.getPageReference(),
+ createSecurityQuestionWin, new SecurityQuestionTO(), true);
+ }
+ });
+
+ createSecurityQuestionWin.show(target);
+ }
+ };
+
+ MetaDataRoleAuthorizationStrategy.authorize(createSecurityQuestionLink, ENABLE, xmlRolesReader.
+ getAllAllowedRoles("SecurityQuestion", "create"));
+ add(createSecurityQuestionLink);
+ }
+
private class NotificationProvider extends SortableDataProvider<NotificationTO, String> {
private static final long serialVersionUID = -276043813563988590L;
- private SortableDataProviderComparator<NotificationTO> comparator;
+ private final SortableDataProviderComparator<NotificationTO> comparator;
public NotificationProvider() {
//Default sorting
@@ -477,7 +614,6 @@ public class Configuration extends BaseP
@Override
public IModel<NotificationTO> model(final NotificationTO notification) {
-
return new AbstractReadOnlyModel<NotificationTO>() {
private static final long serialVersionUID = 774694801558497248L;
@@ -490,6 +626,46 @@ public class Configuration extends BaseP
}
}
+ private class SecurityQuestionProvider extends SortableDataProvider<SecurityQuestionTO, String> {
+
+ private static final long serialVersionUID = -1458398823626281188L;
+
+ private final SortableDataProviderComparator<SecurityQuestionTO> comparator;
+
+ public SecurityQuestionProvider() {
+ //Default sorting
+ setSort("id", SortOrder.ASCENDING);
+ comparator = new SortableDataProviderComparator<SecurityQuestionTO>(this);
+ }
+
+ @Override
+ public Iterator<SecurityQuestionTO> iterator(final long first, final long count) {
+ List<SecurityQuestionTO> list = securityQuestionRestClient.list();
+
+ Collections.sort(list, comparator);
+
+ return list.subList((int) first, (int) first + (int) count).iterator();
+ }
+
+ @Override
+ public long size() {
+ return securityQuestionRestClient.list().size();
+ }
+
+ @Override
+ public IModel<SecurityQuestionTO> model(final SecurityQuestionTO securityQuestionTO) {
+ return new AbstractReadOnlyModel<SecurityQuestionTO>() {
+
+ private static final long serialVersionUID = 5079291243768775704L;
+
+ @Override
+ public SecurityQuestionTO getObject() {
+ return securityQuestionTO;
+ }
+ };
+ }
+ }
+
private class LoggerPropertyList extends PropertyListView<LoggerTO> {
private static final long serialVersionUID = 5911412425994616111L;
Modified: syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/EditUserModalPage.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/EditUserModalPage.java?rev=1626768&r1=1626767&r2=1626768&view=diff
==============================================================================
--- syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/EditUserModalPage.java (original)
+++ syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/EditUserModalPage.java Mon Sep 22 13:23:53 2014
@@ -27,11 +27,13 @@ import org.apache.syncope.console.common
import org.apache.syncope.console.pages.panels.AccountInformationPanel;
import org.apache.syncope.console.pages.panels.MembershipsPanel;
import org.apache.syncope.console.pages.panels.ResourcesPanel;
+import org.apache.syncope.console.pages.panels.SecurityQuestionPanel;
import org.apache.syncope.console.pages.panels.StatusPanel;
import org.apache.wicket.PageReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
+import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.model.ResourceModel;
@@ -68,11 +70,14 @@ public class EditUserModalPage extends U
form.addOrReplace(new AccountInformationPanel("accountinformation", userTO));
- form.addOrReplace(new ResourcesPanel.Builder("resources").attributableTO(userTO).statusPanel(
- statusPanel).build());
+ form.addOrReplace(new ResourcesPanel.Builder("resources").attributableTO(userTO).
+ statusPanel(statusPanel).build());
form.addOrReplace(new MembershipsPanel("memberships", userTO, false, statusPanel, getPageReference()));
}
+
+ // Security question / answer
+ form.addOrReplace(new SecurityQuestionPanel("securityQuestion", userTO));
}
@SuppressWarnings("rawtypes")
Modified: syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/Login.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/Login.java?rev=1626768&r1=1626767&r2=1626768&view=diff
==============================================================================
--- syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/Login.java (original)
+++ syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/Login.java Mon Sep 22 13:23:53 2014
@@ -62,6 +62,10 @@ public class Login extends WebPage {
private final static int SELF_REG_WIN_WIDTH = 800;
+ private final static int PWD_RESET_WIN_HEIGHT = 300;
+
+ private final static int PWD_RESET_WIN_WIDTH = 800;
+
@SpringBean(name = "version")
private String version;
@@ -74,13 +78,13 @@ public class Login extends WebPage {
@SpringBean
private UserSelfRestClient userSelfRestClient;
- private Form<Void> form;
+ private final Form<Void> form;
- private TextField<String> userIdField;
+ private final TextField<String> userIdField;
- private TextField<String> passwordField;
+ private final TextField<String> passwordField;
- private DropDownChoice<Locale> languageSelect;
+ private final DropDownChoice<Locale> languageSelect;
private final NotificationPanel feedbackPanel;
@@ -132,12 +136,12 @@ public class Login extends WebPage {
add(form);
// Modal window for self registration
- final ModalWindow editProfileModalWin = new ModalWindow("selfRegModal");
- editProfileModalWin.setCssClassName(ModalWindow.CSS_CLASS_GRAY);
- editProfileModalWin.setInitialHeight(SELF_REG_WIN_HEIGHT);
- editProfileModalWin.setInitialWidth(SELF_REG_WIN_WIDTH);
- editProfileModalWin.setCookieName("self-reg-modal");
- add(editProfileModalWin);
+ final ModalWindow selfRegModalWin = new ModalWindow("selfRegModal");
+ selfRegModalWin.setCssClassName(ModalWindow.CSS_CLASS_GRAY);
+ selfRegModalWin.setInitialHeight(SELF_REG_WIN_HEIGHT);
+ selfRegModalWin.setInitialWidth(SELF_REG_WIN_WIDTH);
+ selfRegModalWin.setCookieName("self-reg-modal");
+ add(selfRegModalWin);
Fragment selfRegFrag;
if (userSelfRestClient.isSelfRegistrationAllowed()) {
@@ -149,7 +153,7 @@ public class Login extends WebPage {
@Override
protected void onClickInternal(final AjaxRequestTarget target) {
- editProfileModalWin.setPageCreator(new ModalWindow.PageCreator() {
+ selfRegModalWin.setPageCreator(new ModalWindow.PageCreator() {
private static final long serialVersionUID = -7834632442532690940L;
@@ -159,11 +163,11 @@ public class Login extends WebPage {
authenticate(anonymousUser, anonymousKey);
return new UserSelfModalPage(
- Login.this.getPageReference(), editProfileModalWin, new UserTO());
+ Login.this.getPageReference(), selfRegModalWin, new UserTO());
}
});
- editProfileModalWin.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
+ selfRegModalWin.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
private static final long serialVersionUID = 251794406325329768L;
@@ -173,7 +177,7 @@ public class Login extends WebPage {
}
});
- editProfileModalWin.show(target);
+ selfRegModalWin.show(target);
}
};
selfRegLink.add(new Label("linkTitle", getString("selfRegistration")));
@@ -185,6 +189,60 @@ public class Login extends WebPage {
selfRegFrag = new Fragment("selfRegistration", "selfRegNotAllowed", this);
}
add(selfRegFrag);
+
+ // Modal window for password reset
+ final ModalWindow pwdResetModalWin = new ModalWindow("pwdResetModal");
+ pwdResetModalWin.setCssClassName(ModalWindow.CSS_CLASS_GRAY);
+ pwdResetModalWin.setInitialHeight(PWD_RESET_WIN_HEIGHT);
+ pwdResetModalWin.setInitialWidth(PWD_RESET_WIN_WIDTH);
+ pwdResetModalWin.setCookieName("pwd-reset-modal");
+ add(pwdResetModalWin);
+
+ Fragment pwdResetFrag;
+ if (userSelfRestClient.isPasswordResetAllowed()) {
+ pwdResetFrag = new Fragment("passwordReset", "pwdResetAllowed", this);
+
+ final AjaxLink<Void> pwdResetLink = new ClearIndicatingAjaxLink<Void>("link", getPageReference()) {
+
+ private static final long serialVersionUID = -6957616042924610290L;
+
+ @Override
+ protected void onClickInternal(final AjaxRequestTarget target) {
+ pwdResetModalWin.setPageCreator(new ModalWindow.PageCreator() {
+
+ private static final long serialVersionUID = -7834632442532690940L;
+
+ @Override
+ public Page createPage() {
+ // anonymous authentication needed for password reset request
+ authenticate(anonymousUser, anonymousKey);
+
+ return null;
+ }
+ });
+
+ pwdResetModalWin.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
+
+ private static final long serialVersionUID = 8804221891699487139L;
+
+ @Override
+ public void onClose(final AjaxRequestTarget target) {
+ SyncopeSession.get().invalidate();
+ }
+ });
+
+ pwdResetModalWin.show(target);
+ }
+ };
+ pwdResetLink.add(new Label("linkTitle", getString("passwordReset")));
+
+ Panel panel = new LinkPanel("passwordReset", new ResourceModel("passwordReset"));
+ panel.add(pwdResetLink);
+ pwdResetFrag.add(panel);
+ } else {
+ pwdResetFrag = new Fragment("passwordReset", "pwdResetNotAllowed", this);
+ }
+ add(pwdResetFrag);
}
private void authenticate(final String username, final String password) {
Modified: syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/NotificationModalPage.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/NotificationModalPage.java?rev=1626768&r1=1626767&r2=1626768&view=diff
==============================================================================
--- syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/NotificationModalPage.java (original)
+++ syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/NotificationModalPage.java Mon Sep 22 13:23:53 2014
@@ -32,6 +32,7 @@ import org.apache.syncope.console.common
import org.apache.syncope.console.pages.panels.LoggerCategoryPanel;
import org.apache.syncope.console.pages.panels.RoleSearchPanel;
import org.apache.syncope.console.pages.panels.UserSearchPanel;
+import org.apache.syncope.console.rest.ConfigurationRestClient;
import org.apache.syncope.console.rest.LoggerRestClient;
import org.apache.syncope.console.rest.NotificationRestClient;
import org.apache.syncope.console.wicket.markup.html.form.AjaxCheckBoxPanel;
@@ -62,6 +63,9 @@ class NotificationModalPage extends Base
private NotificationRestClient restClient;
@SpringBean
+ private ConfigurationRestClient confRestClient;
+
+ @SpringBean
private LoggerRestClient loggerRestClient;
public NotificationModalPage(final PageReference pageRef, final ModalWindow window,
@@ -84,7 +88,7 @@ class NotificationModalPage extends Base
final AjaxDropDownChoicePanel<String> template = new AjaxDropDownChoicePanel<String>(
"template", getString("template"),
new PropertyModel<String>(notificationTO, "template"));
- template.setChoices(restClient.getMailTemplates());
+ template.setChoices(confRestClient.getMailTemplates());
template.addRequiredLabel();
form.add(template);
@@ -289,6 +293,7 @@ class NotificationModalPage extends Base
if (!selfAsRecipient.getModelObject()
&& !checkRecipients.getModelObject()
&& !checkStaticRecipients.getModelObject()) {
+
checkRecipients.getField().setDefaultModelObject(Boolean.TRUE);
target.add(checkRecipients);
recipients.setEnabled(checkRecipients.getModelObject());
@@ -307,6 +312,7 @@ class NotificationModalPage extends Base
if (!checkRecipients.getModelObject()
&& !selfAsRecipient.getModelObject()
&& !checkStaticRecipients.getModelObject()) {
+
checkStaticRecipients.getField().setDefaultModelObject(Boolean.TRUE);
target.add(checkStaticRecipients);
staticRecipients.setEnabled(Boolean.TRUE);
@@ -359,9 +365,9 @@ class NotificationModalPage extends Base
try {
if (createFlag) {
- restClient.createNotification(notificationTO);
+ restClient.create(notificationTO);
} else {
- restClient.updateNotification(notificationTO);
+ restClient.update(notificationTO);
}
info(getString(Constants.OPERATION_SUCCEEDED));
Added: syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/SecurityQuestionModalPage.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/SecurityQuestionModalPage.java?rev=1626768&view=auto
==============================================================================
--- syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/SecurityQuestionModalPage.java (added)
+++ syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/SecurityQuestionModalPage.java Mon Sep 22 13:23:53 2014
@@ -0,0 +1,113 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.console.pages;
+
+import static org.apache.syncope.console.pages.AbstractBasePage.FORM;
+
+import org.apache.syncope.common.SyncopeClientException;
+import org.apache.syncope.common.to.SecurityQuestionTO;
+import org.apache.syncope.console.commons.Constants;
+import org.apache.syncope.console.rest.SecurityQuestionRestClient;
+import org.apache.syncope.console.wicket.markup.html.form.AjaxTextFieldPanel;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
+import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton;
+import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.PropertyModel;
+import org.apache.wicket.model.ResourceModel;
+import org.apache.wicket.spring.injection.annot.SpringBean;
+
+class SecurityQuestionModalPage extends BaseModalPage {
+
+ private static final long serialVersionUID = -6709838862698327502L;
+
+ @SpringBean
+ private SecurityQuestionRestClient restClient;
+
+ public SecurityQuestionModalPage(final PageReference pageRef, final ModalWindow window,
+ final SecurityQuestionTO securityQuestionTO, final boolean createFlag) {
+
+ final Form<SecurityQuestionTO> form =
+ new Form<SecurityQuestionTO>(FORM, new CompoundPropertyModel<SecurityQuestionTO>(securityQuestionTO));
+
+ final AjaxTextFieldPanel contentFieldPanel =
+ new AjaxTextFieldPanel("content", "content", new PropertyModel<String>(securityQuestionTO, "content"));
+ contentFieldPanel.setRequired(true);
+ form.add(contentFieldPanel);
+
+ AjaxButton submit = new IndicatingAjaxButton(APPLY, new Model<String>(getString(SUBMIT))) {
+
+ private static final long serialVersionUID = -958724007591692537L;
+
+ @Override
+ protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
+ try {
+ if (createFlag) {
+ restClient.create(securityQuestionTO);
+ } else {
+ restClient.update(securityQuestionTO);
+ }
+ info(getString(Constants.OPERATION_SUCCEEDED));
+
+ Configuration callerPage = (Configuration) pageRef.getPage();
+ callerPage.setModalResult(true);
+
+ window.close(target);
+ } catch (SyncopeClientException scee) {
+ error(getString(Constants.ERROR) + ": " + scee.getMessage());
+ feedbackPanel.refresh(target);
+ }
+ }
+
+ @Override
+ protected void onError(final AjaxRequestTarget target, final Form<?> form) {
+ feedbackPanel.refresh(target);
+ }
+ };
+
+ final AjaxButton cancel = new IndicatingAjaxButton(CANCEL, new ResourceModel(CANCEL)) {
+
+ private static final long serialVersionUID = -958724007591692537L;
+
+ @Override
+ protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
+ window.close(target);
+ }
+ };
+
+ cancel.setDefaultFormProcessing(false);
+
+ String allowedRoles = createFlag
+ ? xmlRolesReader.getAllAllowedRoles("SecurityQuestion", "create")
+ : xmlRolesReader.getAllAllowedRoles("SecurityQuestion", "update");
+ MetaDataRoleAuthorizationStrategy.authorize(submit, ENABLE, allowedRoles);
+
+ form.add(submit);
+ form.setDefaultButton(submit);
+
+ form.add(cancel);
+
+ add(form);
+ }
+}
Propchange: syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/SecurityQuestionModalPage.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/SecurityQuestionModalPage.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/SecurityQuestionModalPage.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/UserModalPage.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/UserModalPage.java?rev=1626768&r1=1626767&r2=1626768&view=diff
==============================================================================
--- syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/UserModalPage.java (original)
+++ syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/UserModalPage.java Mon Sep 22 13:23:53 2014
@@ -117,6 +117,8 @@ public abstract class UserModalPage exte
form.add(new Label("statuspanel", ""));
form.add(new Label("pwdChangeInfo", ""));
+
+ form.add(new Label("securityQuestion", ""));
form.add(new Label("accountinformation", ""));
//--------------------------------
@@ -154,7 +156,7 @@ public abstract class UserModalPage exte
//--------------------------------
// Resources panel
//--------------------------------
- form.add(new ResourcesPanel.Builder("resources").attributableTO(userTO).statusPanel(null).build());
+ form.add(new ResourcesPanel.Builder("resources").attributableTO(userTO).build());
//--------------------------------
//--------------------------------
Added: syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/panels/SecurityQuestionPanel.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/panels/SecurityQuestionPanel.java?rev=1626768&view=auto
==============================================================================
--- syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/panels/SecurityQuestionPanel.java (added)
+++ syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/panels/SecurityQuestionPanel.java Mon Sep 22 13:23:53 2014
@@ -0,0 +1,96 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.console.pages.panels;
+
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.TreeMap;
+import org.apache.syncope.common.to.SecurityQuestionTO;
+import org.apache.syncope.common.to.UserTO;
+import org.apache.syncope.console.commons.Constants;
+import org.apache.syncope.console.rest.SecurityQuestionRestClient;
+import org.apache.syncope.console.wicket.markup.html.form.AjaxDropDownChoicePanel;
+import org.apache.syncope.console.wicket.markup.html.form.AjaxTextFieldPanel;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
+import org.apache.wicket.markup.html.form.DropDownChoice;
+import org.apache.wicket.markup.html.form.IChoiceRenderer;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.PropertyModel;
+import org.apache.wicket.spring.injection.annot.SpringBean;
+
+public class SecurityQuestionPanel extends Panel {
+
+ private static final long serialVersionUID = -790642213865180146L;
+
+ private final Map<Long, String> questions = new TreeMap<Long, String>();
+
+ @SpringBean
+ private SecurityQuestionRestClient restClient;
+
+ public SecurityQuestionPanel(final String id, final UserTO userTO) {
+ super(id);
+ setOutputMarkupId(true);
+
+ for (SecurityQuestionTO secQues : restClient.list()) {
+ questions.put(secQues.getId(), secQues.getContent());
+ }
+
+ final AjaxTextFieldPanel securityAnswer = new AjaxTextFieldPanel("securityAnswer", "securityAnswer",
+ new PropertyModel<String>(userTO, "securityAnswer"));
+ securityAnswer.getField().setOutputMarkupId(true);
+ add(securityAnswer);
+
+ final AjaxDropDownChoicePanel<Long> securityQuestion =
+ new AjaxDropDownChoicePanel<Long>("securityQuestion", "securityQuestion",
+ new PropertyModel<Long>(userTO, "securityQuestion"));
+ ((DropDownChoice) securityQuestion.getField()).setNullValid(true);
+ securityQuestion.setChoices(new ArrayList<Long>(questions.keySet()));
+ securityQuestion.setStyleSheet("ui-widget-content ui-corner-all long_dynamicsize");
+ securityQuestion.getField().setOutputMarkupId(true);
+ securityQuestion.setChoiceRenderer(new IChoiceRenderer<Long>() {
+
+ private static final long serialVersionUID = 2693996850376268294L;
+
+ @Override
+ public Object getDisplayValue(final Long object) {
+ return questions.get(object);
+ }
+
+ @Override
+ public String getIdValue(final Long object, final int index) {
+ return questions.get(object);
+ }
+ });
+ securityQuestion.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
+
+ private static final long serialVersionUID = -1107858522700306810L;
+
+ @Override
+ protected void onUpdate(final AjaxRequestTarget target) {
+ if (securityQuestion.getModelObject() == null) {
+ securityAnswer.setModelObject(null);
+ target.add(SecurityQuestionPanel.this);
+ }
+ }
+ });
+ add(securityQuestion);
+ }
+
+}
Propchange: syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/panels/SecurityQuestionPanel.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/panels/SecurityQuestionPanel.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/pages/panels/SecurityQuestionPanel.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/rest/ConfigurationRestClient.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/rest/ConfigurationRestClient.java?rev=1626768&r1=1626767&r2=1626768&view=diff
==============================================================================
--- syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/rest/ConfigurationRestClient.java (original)
+++ syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/rest/ConfigurationRestClient.java Mon Sep 22 13:23:53 2014
@@ -18,10 +18,14 @@
*/
package org.apache.syncope.console.rest;
+import java.util.ArrayList;
+import java.util.List;
import javax.ws.rs.core.Response;
import org.apache.syncope.common.services.ConfigurationService;
import org.apache.syncope.common.to.AttributeTO;
import org.apache.syncope.common.to.ConfTO;
+import org.apache.syncope.common.util.CollectionWrapper;
+import org.apache.syncope.common.wrap.MailTemplate;
import org.springframework.stereotype.Component;
@Component
@@ -45,6 +49,11 @@ public class ConfigurationRestClient ext
getService(ConfigurationService.class).delete(key);
}
+ public List<String> getMailTemplates() {
+ return CollectionWrapper.unwrap(
+ new ArrayList<MailTemplate>(getService(ConfigurationService.class).getMailTemplates()));
+ }
+
public Response dbExport() {
return getService(ConfigurationService.class).export();
}
Modified: syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/rest/NotificationRestClient.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/rest/NotificationRestClient.java?rev=1626768&r1=1626767&r2=1626768&view=diff
==============================================================================
--- syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/rest/NotificationRestClient.java (original)
+++ syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/rest/NotificationRestClient.java Mon Sep 22 13:23:53 2014
@@ -18,14 +18,10 @@
*/
package org.apache.syncope.console.rest;
-import java.util.ArrayList;
import java.util.List;
-import org.apache.syncope.common.services.ConfigurationService;
import org.apache.syncope.common.services.NotificationService;
-import org.apache.syncope.common.wrap.MailTemplate;
import org.apache.syncope.common.to.NotificationTO;
-import org.apache.syncope.common.util.CollectionWrapper;
import org.springframework.stereotype.Component;
@Component
@@ -37,24 +33,19 @@ public class NotificationRestClient exte
return getService(NotificationService.class).list();
}
- public NotificationTO readNotification(final Long id) {
+ public NotificationTO read(final Long id) {
return getService(NotificationService.class).read(id);
}
- public void createNotification(final NotificationTO notificationTO) {
+ public void create(final NotificationTO notificationTO) {
getService(NotificationService.class).create(notificationTO);
}
- public void updateNotification(final NotificationTO notificationTO) {
+ public void update(final NotificationTO notificationTO) {
getService(NotificationService.class).update(notificationTO.getId(), notificationTO);
}
- public void deleteNotification(final Long id) {
+ public void delete(final Long id) {
getService(NotificationService.class).delete(id);
}
-
- public List<String> getMailTemplates() {
- return CollectionWrapper.unwrap(
- new ArrayList<MailTemplate>(getService(ConfigurationService.class).getMailTemplates()));
- }
}
Added: syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/rest/SecurityQuestionRestClient.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/rest/SecurityQuestionRestClient.java?rev=1626768&view=auto
==============================================================================
--- syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/rest/SecurityQuestionRestClient.java (added)
+++ syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/rest/SecurityQuestionRestClient.java Mon Sep 22 13:23:53 2014
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.console.rest;
+
+import java.util.List;
+import org.apache.syncope.common.services.SecurityQuestionService;
+import org.apache.syncope.common.to.SecurityQuestionTO;
+import org.springframework.stereotype.Component;
+
+@Component
+public class SecurityQuestionRestClient extends BaseRestClient {
+
+ private static final long serialVersionUID = -3167730221361895176L;
+
+ public List<SecurityQuestionTO> list() {
+ return getService(SecurityQuestionService.class).list();
+ }
+
+ public void create(final SecurityQuestionTO securityQuestionTO) {
+ getService(SecurityQuestionService.class).create(securityQuestionTO);
+ }
+
+ public void update(final SecurityQuestionTO securityQuestionTO) {
+ getService(SecurityQuestionService.class).update(securityQuestionTO.getId(), securityQuestionTO);
+ }
+
+ public void delete(final Long securityQuestionId) {
+ getService(SecurityQuestionService.class).delete(securityQuestionId);
+ }
+
+ public SecurityQuestionTO readByUser(final String username) {
+ return getService(SecurityQuestionService.class).readByUser(username);
+ }
+
+}
Propchange: syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/rest/SecurityQuestionRestClient.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/rest/SecurityQuestionRestClient.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/rest/SecurityQuestionRestClient.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/rest/UserSelfRestClient.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/rest/UserSelfRestClient.java?rev=1626768&r1=1626767&r2=1626768&view=diff
==============================================================================
--- syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/rest/UserSelfRestClient.java (original)
+++ syncope/branches/1_2_X/console/src/main/java/org/apache/syncope/console/rest/UserSelfRestClient.java Mon Sep 22 13:23:53 2014
@@ -58,4 +58,26 @@ public class UserSelfRestClient extends
public void delete() {
getService(UserSelfService.class).delete();
}
+
+ public boolean isPasswordResetAllowed() {
+ Boolean result = null;
+ try {
+ result = SyncopeSession.get().isPasswordResetAllowed();
+ } catch (SyncopeClientException e) {
+ LOG.error("While seeking if password reset is allowed", e);
+ }
+
+ return result == null
+ ? false
+ : result.booleanValue();
+ }
+
+ public void requestPasswordReset(final String username, final String securityAnswer) {
+ getService(UserSelfService.class).requestPasswordReset(username, securityAnswer);
+ }
+
+ public void confirmPasswordReset(final String token, final String password) {
+ getService(UserSelfService.class).confirmPasswordReset(token, password);
+ }
+
}
Modified: syncope/branches/1_2_X/console/src/main/resources/authorizations.xml
URL: http://svn.apache.org/viewvc/syncope/branches/1_2_X/console/src/main/resources/authorizations.xml?rev=1626768&r1=1626767&r2=1626768&view=diff
==============================================================================
--- syncope/branches/1_2_X/console/src/main/resources/authorizations.xml (original)
+++ syncope/branches/1_2_X/console/src/main/resources/authorizations.xml Mon Sep 22 13:23:53 2014
@@ -260,6 +260,28 @@ under the License.
</action>
</page>
+ <page id="SecurityQuestion">
+ <action id="list">
+ <entitlement>SECURITY_QUESTION_LIST</entitlement>
+ </action>
+
+ <action id="create">
+ <entitlement>SECURITY_QUESTION_CREATE</entitlement>
+ </action>
+
+ <action id="read">
+ <entitlement>SECURITY_QUESTION_READ</entitlement>
+ </action>
+
+ <action id="update">
+ <entitlement>SECURITY_QUESTION_UPDATE</entitlement>
+ </action>
+
+ <action id="delete">
+ <entitlement>SECURITY_QUESTION_DELETE</entitlement>
+ </action>
+ </page>
+
<page id="Tasks">
<action id="list">
<entitlement>TASK_LIST</entitlement>
Modified: syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Configuration.html
URL: http://svn.apache.org/viewvc/syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Configuration.html?rev=1626768&r1=1626767&r2=1626768&view=diff
==============================================================================
--- syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Configuration.html (original)
+++ syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Configuration.html Mon Sep 22 13:23:53 2014
@@ -35,6 +35,7 @@ under the License.
</li>
<li><a href="#policies"><span><wicket:message key="policies"/></span></a></li>
<li><a href="#notifications"><span><wicket:message key="notifications"/></span></a></li>
+ <li><a href="#securityQuestions"><span><wicket:message key="securityQuestions"/></span></a></li>
<li><a href="#workflow"><span><wicket:message key="workflow"/></span></a></li>
<li><a href="#logs"><span><wicket:message key="logs"/></span></a></li>
</ul>
@@ -91,6 +92,22 @@ under the License.
<wicket:message key="create"/>
</a>
</div>
+ <div id="securityQuestions">
+ <div id="users-contain" class="ui-widget" style="width:inherit">
+ <span wicket:id="securityQuestionContainer">
+ <table class="ui-widget ui-widget-content table-hover"
+ wicket:id="securityQuestionTable"/>
+ </span>
+ </div>
+
+ <div wicket:id="createSecurityQuestionWin">[Show modal window for creating security questions]</div>
+ <div wicket:id="editSecurityQuestionWin">[Show modal window for editing security questions]</div>
+
+ <a class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
+ wicket:id="createSecurityQuestionLink">
+ <wicket:message key="create"/>
+ </a>
+ </div>
<div id="workflow">
<div id="users-contain" class="ui-widget" style="width:inherit">
<span wicket:id="noActivitiEnabledForUsers"><i><wicket:message key="noActivitiEnabledForUsers"/></i></span>
Modified: syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Configuration.properties
URL: http://svn.apache.org/viewvc/syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Configuration.properties?rev=1626768&r1=1626767&r2=1626768&view=diff
==============================================================================
--- syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Configuration.properties (original)
+++ syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Configuration.properties Mon Sep 22 13:23:53 2014
@@ -36,3 +36,5 @@ policies=Policies
logs=Logs
active=Enabled
apply=Save
+securityQuestions=Security Questions
+content=Text
Modified: syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Configuration_it.properties
URL: http://svn.apache.org/viewvc/syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Configuration_it.properties?rev=1626768&r1=1626767&r2=1626768&view=diff
==============================================================================
--- syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Configuration_it.properties (original)
+++ syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Configuration_it.properties Mon Sep 22 13:23:53 2014
@@ -36,3 +36,5 @@ policies=Politiche
logs=Logs
active=Abilitata
apply=Salva
+securityQuestions=Domande di sicurezza
+content=Testo
Modified: syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Configuration_pt_BR.properties
URL: http://svn.apache.org/viewvc/syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Configuration_pt_BR.properties?rev=1626768&r1=1626767&r2=1626768&view=diff
==============================================================================
--- syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Configuration_pt_BR.properties (original)
+++ syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Configuration_pt_BR.properties Mon Sep 22 13:23:53 2014
@@ -36,3 +36,5 @@ policies=Pol\u00edticas
logs=Logs
active=Ativada
apply=Salvar
+securityQuestions=Quest\u00f5es de seguran\u00e7a
+content=Texto
Modified: syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Login.html
URL: http://svn.apache.org/viewvc/syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Login.html?rev=1626768&r1=1626767&r2=1626768&view=diff
==============================================================================
--- syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Login.html (original)
+++ syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Login.html Mon Sep 22 13:23:53 2014
@@ -65,7 +65,10 @@ under the License.
<input type="submit" wicket:id="submit"/>
</form>
- <span style="display: inline-table; margin-bottom: 10px;" wicket:id="selfRegistration"/>
+ <div style="display: inline-table; margin: 10px; width:380px;">
+ <div style="display: inline-table-cell; text-align: left; float: left;" wicket:id="selfRegistration"/>
+ <div style="display: inline-table-cell; text-align: left; float: right;" wicket:id="passwordReset"/>
+ </div>
<wicket:fragment wicket:id="selfRegNotAllowed"/>
<wicket:fragment wicket:id="selfRegAllowed">
@@ -73,6 +76,13 @@ under the License.
</wicket:fragment>
<div wicket:id="selfRegModal"></div>
+
+ <wicket:fragment wicket:id="pwdResetNotAllowed"/>
+ <wicket:fragment wicket:id="pwdResetAllowed">
+ <span wicket:id="passwordReset"/>
+ </wicket:fragment>
+
+ <div wicket:id="pwdResetModal"></div>
</div>
</body>
</html>
Modified: syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Login.properties
URL: http://svn.apache.org/viewvc/syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Login.properties?rev=1626768&r1=1626767&r2=1626768&view=diff
==============================================================================
--- syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Login.properties (original)
+++ syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Login.properties Mon Sep 22 13:23:53 2014
@@ -19,3 +19,4 @@ password=Password
submit=Login
login-error=Wrong user id and/or password
selfRegistration=Self registration
+passwordReset=Password reset
Modified: syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Login_it.properties
URL: http://svn.apache.org/viewvc/syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Login_it.properties?rev=1626768&r1=1626767&r2=1626768&view=diff
==============================================================================
--- syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Login_it.properties (original)
+++ syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Login_it.properties Mon Sep 22 13:23:53 2014
@@ -19,3 +19,4 @@ password=Password
submit=Login
login-error=Id utente e/o password errate
selfRegistration=Registrati
+passwordReset=Password smarrita
Modified: syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Login_pt_BR.properties
URL: http://svn.apache.org/viewvc/syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Login_pt_BR.properties?rev=1626768&r1=1626767&r2=1626768&view=diff
==============================================================================
--- syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Login_pt_BR.properties (original)
+++ syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/Login_pt_BR.properties Mon Sep 22 13:23:53 2014
@@ -14,8 +14,9 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-userId=Usu\u00E1rio
+userId=Usu\u00e1rio
password=Senha
submit=Login
-login-error=Usu\u00E1rio ou senha incorretos
+login-error=Usu\u00e1rio ou senha incorretos
selfRegistration=Registrar-se
+passwordReset=Redefini\u00e7\u00e3o de senha
Copied: syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/SecurityQuestionModalPage.html (from r1626162, syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/NotificationModalPage.html)
URL: http://svn.apache.org/viewvc/syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/SecurityQuestionModalPage.html?p2=syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/SecurityQuestionModalPage.html&p1=syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/NotificationModalPage.html&r1=1626162&r2=1626768&rev=1626768&view=diff
==============================================================================
--- syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/NotificationModalPage.html (original)
+++ syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/SecurityQuestionModalPage.html Mon Sep 22 13:23:53 2014
@@ -17,209 +17,21 @@ specific language governing permissions
under the License.
-->
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
- <wicket:head>
- <style>
- div#tabs div#events{
- min-width: 970px;
- overflow: hidden;
- }
-
- div#userFilter {
- border: 1px solid #DDDDDD;
- }
-
- div#userFilter div#title {
- margin: 10px 0px 0px 8px;
- }
-
- div#userFilter div#warning {
- margin: 1px 0px 5px 8px;
- }
-
- div#userFilter div#title label {
- font-weight: bold;
- }
-
- div#userFilter div#warning label {
- color: #E00000;
- font-size: 8px;
- }
- </style>
- </wicket:head>
<wicket:extend>
- <div style="margin: 5px;">
+ <div>
<p class="ui-widget ui-corner-all ui-widget-header"><wicket:message key="title"/></p>
<form wicket:id="form">
- <div id="tabs">
- <ul>
- <li class="tabs-selected"><a href="#notification"><span><wicket:message key="notification"/></span></a></li>
- <li><a href="#events"><span><wicket:message key="events"/></span></a></li>
- <li><a href="#about"><span><wicket:message key="about"/></span></a></li>
- <li><a href="#recipients"><span><wicket:message key="recipients"/></span></a></li>
- </ul>
-
- <div id="notification">
- <div id="formtable">
- <div class="tablerow alt">
- <div class="tablecolumn_label medium_fixedsize">
- <label for="sender"><wicket:message key="sender"/></label>
- </div>
- <div class="tablecolumn_field medium_dynamicsize">
- <span wicket:id="sender">[sender]</span>
- </div>
- </div>
-
- <div class="tablerow">
- <div class="tablecolumn_label medium_fixedsize">
- <label for="subject"><wicket:message key="subject"/></label>
- </div>
- <div class="tablecolumn_field medium_dynamicsize">
- <span wicket:id="subject">[subject]</span>
- </div>
- </div>
-
- <div class="tablerow alt">
- <div class="tablecolumn_label medium_fixedsize">
- <label for="recipientAttrType"><wicket:message key="recipientAttrType"/></label>
- </div>
- <div class="tablecolumn_field medium_dynamicsize">
- <span wicket:id="recipientAttrType">[recipientAttrType]</span>
- </div>
- </div>
-
- <div class="tablerow">
- <div class="tablecolumn_label medium_fixedsize">
- <label for="recipientAttrName"><wicket:message key="recipientAttrName"/></label>
- </div>
- <div class="tablecolumn_field medium_dynamicsize">
- <span wicket:id="recipientAttrName">[recipientAttrName]</span>
- </div>
- </div>
-
- <div class="tablerow alt">
- <div class="tablecolumn_label medium_fixedsize">
- <label for="template"><wicket:message key="template"/></label>
- </div>
- <div class="tablecolumn_field medium_dynamicsize">
- <span wicket:id="template">[template]</span>
- </div>
- </div>
-
- <div class="tablerow">
- <div class="tablecolumn_label medium_fixedsize">
- <label for="traceLevel"><wicket:message key="traceLevel"/></label>
- </div>
- <div class="tablecolumn_field medium_dynamicsize">
- <span wicket:id="traceLevel">[traceLevel]</span>
- </div>
- </div>
- <div class="tablerow alt">
- <div class="tablecolumn_label medium_fixedsize">
- <label for="isActive"><wicket:message key="isActive"/></label>
- </div>
- <div class="tablecolumn_field medium_dynamicsize">
- <span wicket:id="isActive">[isActive]</span>
- </div>
- </div>
- </div>
- </div>
-
- <div id="events">
- <span wicket:id="eventSelection"/>
- </div>
-
- <div id="about">
- <span wicket:id="aboutContainer">
- <div class="tablerow" style="width: auto;">
- <div class="tablecolumn_field" style="width: auto; padding-right: 5px;">
- <span wicket:id="checkAbout">[checkAbout]</span>
- </div>
- <div class="tablecolumn_label" style="width: 100%">
- <label for="checkAbout"><wicket:message key="checkAbout"/></label>
- </div>
- </div>
- <div class="tablerow" style="width: auto;">
- <div class="tablecolumn_field" style="width: auto; padding-right: 5px;">
- <span wicket:id="checkUserAbout">[checkUserAbout]</span>
- </div>
- <div class="tablecolumn_label" style="width: auto;">
- <label for="checkUserAbout"><wicket:message key="checkUserAbout"/></label>
- </div>
- </div>
- <div id="userFilter">
- <div id="title">
- <label for="userFilter"><wicket:message key="userFilter"/></label>
- </div>
- <div id="warning">
- <label for="userFilter"><wicket:message key="userFilterWarning"/></label>
- </div>
- <div id="condition">
- <span wicket:id="userAbout"/>
- </div>
- </div>
- <div class="tablerow" style="width: auto;">
- <div class="tablecolumn_field" style="width: auto; padding-right: 5px;">
- <span wicket:id="checkRoleAbout">[checkRoleAbout]</span>
- </div>
- <div class="tablecolumn_label" style="width: auto;">
- <label for="checkRoleAbout"><wicket:message key="checkRoleAbout"/></label>
- </div>
- </div>
- <div id="userFilter">
- <div id="title">
- <label for="roleFilter"><wicket:message key="roleFilter"/></label>
- </div>
- <div id="warning">
- <label for="roleFilter"><wicket:message key="roleFilterWarning"/></label>
- </div>
- <div id="condition">
- <span wicket:id="roleAbout"/>
- </div>
- </div>
- </span>
- </div>
-
- <div id="recipients">
- <div class="tablerow alt">
- <div class="tablecolumn_label medium_dynamicsize">
- <span wicket:id="checkStaticRecipients">[checkStaticRecipients]</span>
- <label for="recipients"><wicket:message key="recipients"/></label>
- </div>
- <div class="tablecolumn_field medium_dynamicsize">
- <span wicket:id="staticRecipients">[staticRecipients]</span>
- </div>
+ <div id="formtable">
+ <div class="tablerow alt">
+ <div class="tablecolumn_label medium_fixedsize">
+ <label for="content"><wicket:message key="content"/></label>
</div>
-
- <span wicket:id="recipientsContainer">
- <div class="tablerow" style="width: auto;">
- <div class="tablecolumn_field" style="width: auto; padding-right: 5px;">
- <span wicket:id="checkRecipients">[checkRecipients]</span>
- </div>
- <div class="tablecolumn_label" style="width: auto;">
- <label for="checkRecipients"><wicket:message key="checkRecipients"/></label>
- </div>
- </div>
- <span wicket:id="recipients"/>
- </span>
- <div id="userFilter">
- <div id="title">
- <label for="userNotifications"><wicket:message key="userNotifications"/></label>
- </div>
- <div id="warning">
- <label for="userNotificationsWarning"><wicket:message key="userNotificationsWarning"/></label>
- </div>
- <div class="tablerow" style="width: auto;">
- <div class="tablecolumn_field" style="width: auto; padding-right: 5px;">
- <span wicket:id="selfAsRecipient">[selfAsRecipient]</span>
- </div>
- <div class="tablecolumn_label" style="width: auto;">
- <label for="selfAsRecipient"><wicket:message key="selfAsRecipient"/></label>
- </div>
- </div>
+ <div class="tablecolumn_field medium_dynamicsize">
+ <span wicket:id="content">[content]</span>
</div>
</div>
</div>
-
+
<div style="margin: 20px 10px 0">
<input type="submit"
class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
Added: syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/SecurityQuestionModalPage.properties
URL: http://svn.apache.org/viewvc/syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/SecurityQuestionModalPage.properties?rev=1626768&view=auto
==============================================================================
--- syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/SecurityQuestionModalPage.properties (added)
+++ syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/SecurityQuestionModalPage.properties Mon Sep 22 13:23:53 2014
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+title=Security question
+content=Text
Propchange: syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/SecurityQuestionModalPage.properties
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/SecurityQuestionModalPage.properties
------------------------------------------------------------------------------
svn:keywords = Date Revision Author HeadURL Id
Added: syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/SecurityQuestionModalPage_it.properties
URL: http://svn.apache.org/viewvc/syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/SecurityQuestionModalPage_it.properties?rev=1626768&view=auto
==============================================================================
--- syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/SecurityQuestionModalPage_it.properties (added)
+++ syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/SecurityQuestionModalPage_it.properties Mon Sep 22 13:23:53 2014
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+title=Domanda di sicurezza
+content=Testo
Propchange: syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/SecurityQuestionModalPage_it.properties
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/SecurityQuestionModalPage_it.properties
------------------------------------------------------------------------------
svn:keywords = Date Revision Author HeadURL Id
Added: syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/SecurityQuestionModalPage_pt_BR.properties
URL: http://svn.apache.org/viewvc/syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/SecurityQuestionModalPage_pt_BR.properties?rev=1626768&view=auto
==============================================================================
--- syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/SecurityQuestionModalPage_pt_BR.properties (added)
+++ syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/SecurityQuestionModalPage_pt_BR.properties Mon Sep 22 13:23:53 2014
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+title=Pergunta de seguran\u00e7a
+content=Texto
Propchange: syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/SecurityQuestionModalPage_pt_BR.properties
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/SecurityQuestionModalPage_pt_BR.properties
------------------------------------------------------------------------------
svn:keywords = Date Revision Author HeadURL Id
Modified: syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/UserModalPage.html
URL: http://svn.apache.org/viewvc/syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/UserModalPage.html?rev=1626768&r1=1626767&r2=1626768&view=diff
==============================================================================
--- syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/UserModalPage.html (original)
+++ syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/UserModalPage.html Mon Sep 22 13:23:53 2014
@@ -53,7 +53,8 @@ under the License.
</wicket:fragment>
<wicket:fragment wicket:id="emptyFragment">
</wicket:fragment>
- <div wicket:id="pwdChangeInfo" style="margin-top: 25px;">[pwdChangeInfo]</div>
+ <div wicket:id="securityQuestion">[Security Question]</div>
+ <div wicket:id="pwdChangeInfo" style="margin-top: 10px;">[pwdChangeInfo]</div>
<span wicket:id="statuspanel">[Status Panel]</span>
<span wicket:id="accountinformation">[Account Information]</span>
</div>
Modified: syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/panels/AccountInformationPanel.html
URL: http://svn.apache.org/viewvc/syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/panels/AccountInformationPanel.html?rev=1626768&r1=1626767&r2=1626768&view=diff
==============================================================================
--- syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/panels/AccountInformationPanel.html (original)
+++ syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/panels/AccountInformationPanel.html Mon Sep 22 13:23:53 2014
@@ -16,7 +16,7 @@ KIND, either express or implied. See th
specific language governing permissions and limitations
under the License.
-->
-<html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
<wicket:extend>
<div class="infoleft">
@@ -24,7 +24,7 @@ under the License.
<wicket:message key="lastLoginDate"/>:
</div>
<div>
- <span wicket:id="lastLoginDate" />
+ <span wicket:id="lastLoginDate"/>
</div>
</div>
@@ -33,7 +33,7 @@ under the License.
<wicket:message key="failedLogins"/>:
</div>
<div>
- <span wicket:id="failedLogins" />
+ <span wicket:id="failedLogins"/>
</div>
</div>
@@ -42,7 +42,7 @@ under the License.
<wicket:message key="changePwdDate"/>:
</div>
<div>
- <span wicket:id="changePwdDate" />
+ <span wicket:id="changePwdDate"/>
</div>
</div>
@@ -51,7 +51,7 @@ under the License.
<wicket:message key="tokenExpireTime"/>
</div>
<div>
- <span wicket:id="tokenExpireTime" />
+ <span wicket:id="tokenExpireTime"/>
</div>
</div>
@@ -59,8 +59,8 @@ under the License.
<div class="infolabel">
<wicket:message key="token"/>:
</div>
- <div>
- <span wicket:id="token" />
+ <div style="word-wrap: break-word; width: 550px; margin-left: 155px;">
+ <span wicket:id="token"/>
</div>
</div>
</wicket:extend>
Added: syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/panels/SecurityQuestionPanel.html
URL: http://svn.apache.org/viewvc/syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/panels/SecurityQuestionPanel.html?rev=1626768&view=auto
==============================================================================
--- syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/panels/SecurityQuestionPanel.html (added)
+++ syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/panels/SecurityQuestionPanel.html Mon Sep 22 13:23:53 2014
@@ -0,0 +1,41 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+ <wicket:panel>
+ <div id="formtable">
+ <div class="tablerow alt">
+ <div class="tablecolumn_label short_dynamicsize">
+ <wicket:message key="securityQuestion"/>
+ </div>
+ <div class="tablecolumn_field medium_dynamicsize">
+ <span wicket:id="securityQuestion"/>
+ </div>
+ </div>
+
+ <div class="tablerow">
+ <div class="tablecolumn_label short_dynamicsize">
+ <wicket:message key="securityAnswer"/>
+ </div>
+ <div class="tablecolumn_field medium_dynamicsize">
+ <span wicket:id="securityAnswer"/>
+ </div>
+ </div>
+ </div>
+ </wicket:panel>
+</html>
\ No newline at end of file
Propchange: syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/panels/SecurityQuestionPanel.html
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/panels/SecurityQuestionPanel.html
------------------------------------------------------------------------------
svn:keywords = Date Revision Author HeadURL Id
Propchange: syncope/branches/1_2_X/console/src/main/resources/org/apache/syncope/console/pages/panels/SecurityQuestionPanel.html
------------------------------------------------------------------------------
svn:mime-type = text/html