Author: ilgrosso
Date: Thu Jan 9 15:57:14 2014
New Revision: 1556848
URL: http://svn.apache.org/r1556848
Log:
[SYNCOPE-474] Allowing self-read via username (even with roles)
Modified:
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/pages/UserRequestModalPage.java
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/pages/panels/UserDetailsPanel.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/UserDataBinder.java
Modified:
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/pages/UserRequestModalPage.java
URL:
http://svn.apache.org/viewvc/syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/pages/UserRequestModalPage.java?rev=1556848&r1=1556847&r2=1556848&view=diff
==============================================================================
---
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/pages/UserRequestModalPage.java
(original)
+++
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/pages/UserRequestModalPage.java
Thu Jan 9 15:57:14 2014
@@ -47,7 +47,7 @@ public class UserRequestModalPage extend
public UserRequestModalPage(final PageReference callerPageRef, final
ModalWindow window, final UserTO userTO,
final Mode mode) {
- super(callerPageRef, window, userTO, mode, false);
+ super(callerPageRef, window, userTO, mode, true);
setupEditPanel();
}
Modified:
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/pages/panels/UserDetailsPanel.java
URL:
http://svn.apache.org/viewvc/syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/pages/panels/UserDetailsPanel.java?rev=1556848&r1=1556847&r2=1556848&view=diff
==============================================================================
---
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/pages/panels/UserDetailsPanel.java
(original)
+++
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/pages/panels/UserDetailsPanel.java
Thu Jan 9 15:57:14 2014
@@ -113,7 +113,6 @@ public class UserDetailsPanel extends Pa
@Override
public void onComponentTag(final Component component, final
ComponentTag tag) {
-
if (userTO.getId() > 0) {
tag.put("style", "display:none;");
}
Modified:
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/UserDataBinder.java
URL:
http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/UserDataBinder.java?rev=1556848&r1=1556847&r2=1556848&view=diff
==============================================================================
---
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/UserDataBinder.java
(original)
+++
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/UserDataBinder.java
Thu Jan 9 15:57:14 2014
@@ -75,6 +75,15 @@ public class UserDataBinder extends Abst
@Resource(name = "adminUser")
private String adminUser;
+ private void checkPermissions(final SyncopeUser user) {
+ Set<Long> roleIds = user.getRoleIds();
+ Set<Long> adminRoleIds =
EntitlementUtil.getRoleIds(EntitlementUtil.getOwnedEntitlementNames());
+ roleIds.removeAll(adminRoleIds);
+ if (!roleIds.isEmpty()) {
+ throw new UnauthorizedRoleException(roleIds);
+ }
+ }
+
@Transactional(readOnly = true)
public SyncopeUser getUserFromId(final Long userId) {
if (userId == null) {
@@ -87,12 +96,25 @@ public class UserDataBinder extends Abst
}
if
(!user.getUsername().equals(EntitlementUtil.getAuthenticatedUsername())) {
- Set<Long> roleIds = user.getRoleIds();
- Set<Long> adminRoleIds =
EntitlementUtil.getRoleIds(EntitlementUtil.getOwnedEntitlementNames());
- roleIds.removeAll(adminRoleIds);
- if (!roleIds.isEmpty()) {
- throw new UnauthorizedRoleException(roleIds);
- }
+ checkPermissions(user);
+ }
+
+ return user;
+ }
+
+ @Transactional(readOnly = true)
+ public SyncopeUser getUserFromUsername(final String username) {
+ if (username == null) {
+ throw new NotFoundException("Null username");
+ }
+
+ SyncopeUser user = userDAO.find(username);
+ if (user == null) {
+ throw new NotFoundException("User " + username);
+ }
+
+ if (!username.equals(EntitlementUtil.getAuthenticatedUsername())) {
+ checkPermissions(user);
}
return user;
@@ -125,28 +147,6 @@ public class UserDataBinder extends Abst
return PasswordEncoder.verify(password, user.getCipherAlgorithm(),
user.getPassword());
}
- @Transactional(readOnly = true)
- public SyncopeUser getUserFromUsername(final String username) {
- if (username == null) {
- throw new NotFoundException("Null username");
- }
-
- SyncopeUser user = userDAO.find(username);
- if (user == null) {
- throw new NotFoundException("User " + username);
- }
-
- Set<Long> roleIds = user.getRoleIds();
- Set<Long> adminRoleIds =
EntitlementUtil.getRoleIds(EntitlementUtil.getOwnedEntitlementNames());
- roleIds.removeAll(adminRoleIds);
-
- if (!roleIds.isEmpty()) {
- throw new UnauthorizedRoleException(roleIds);
- }
-
- return user;
- }
-
/**
* Get predefined password cipher algorithm from SyncopeConf.
*