You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2020/12/04 16:03:55 UTC
[isis] branch master updated: ISIS-2464: further simplify
AuthenticationSession
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new 77e9574 ISIS-2464: further simplify AuthenticationSession
77e9574 is described below
commit 77e95742ac7ab292976ba82fd6784269c06463b5
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Dec 4 17:03:42 2020 +0100
ISIS-2464: further simplify AuthenticationSession
---
.../isis/applib/services/user/UserMemento.java | 5 ++++-
.../authentication/AuthenticationSession.java | 18 ++++++----------
.../AuthenticationSessionAbstract.java | 24 ++++------------------
.../manager/AuthenticationManager.java | 2 +-
.../manager/AuthorizationManager.java | 16 +++++++--------
5 files changed, 23 insertions(+), 42 deletions(-)
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/user/UserMemento.java b/api/applib/src/main/java/org/apache/isis/applib/services/user/UserMemento.java
index 9157973..9cf0bd8 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/user/UserMemento.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/user/UserMemento.java
@@ -140,6 +140,10 @@ public final class UserMemento implements Serializable {
return roles.stream()
.map(RoleMemento::getName);
}
+
+ public boolean hasRoleName(final @NonNull String roleName) {
+ return streamRoleNames().anyMatch(myRoleName->myRoleName.equals(roleName));
+ }
// -- TO STRING, EQUALS, HASHCODE
@@ -180,7 +184,6 @@ public final class UserMemento implements Serializable {
public int hashCode() {
return getName().hashCode(); // its good enough to hash on just the user's name
}
-
// tag::refguide[]
diff --git a/core/security/src/main/java/org/apache/isis/core/security/authentication/AuthenticationSession.java b/core/security/src/main/java/org/apache/isis/core/security/authentication/AuthenticationSession.java
index daa7787..92d2f37 100644
--- a/core/security/src/main/java/org/apache/isis/core/security/authentication/AuthenticationSession.java
+++ b/core/security/src/main/java/org/apache/isis/core/security/authentication/AuthenticationSession.java
@@ -24,24 +24,18 @@ import java.io.Serializable;
import org.apache.isis.applib.services.iactn.ExecutionContext;
import org.apache.isis.applib.services.iactn.Interaction;
import org.apache.isis.applib.services.user.UserMemento;
-import org.apache.isis.commons.collections.Can;
/**
* The representation within the system of an authenticated user.
*/
public interface AuthenticationSession extends Serializable {
- /**
- * The name of the authenticated user; for display purposes only.
- */
- String getUserName();
-
- boolean hasUserNameOf(String userName);
-
- /**
- * The roles this user belongs to
- */
- Can<String> getRoles();
+// /**
+// * The name of the authenticated user; for display purposes only.
+// */
+ default String getUserName() {
+ return getUser().getName();
+ }
/**
* A unique code given to this session during authentication.
diff --git a/core/security/src/main/java/org/apache/isis/core/security/authentication/AuthenticationSessionAbstract.java b/core/security/src/main/java/org/apache/isis/core/security/authentication/AuthenticationSessionAbstract.java
index feb5d49..254fb91 100644
--- a/core/security/src/main/java/org/apache/isis/core/security/authentication/AuthenticationSessionAbstract.java
+++ b/core/security/src/main/java/org/apache/isis/core/security/authentication/AuthenticationSessionAbstract.java
@@ -22,9 +22,7 @@ import java.io.Serializable;
import java.util.Objects;
import org.apache.isis.applib.services.iactn.ExecutionContext;
-import org.apache.isis.applib.services.user.RoleMemento;
import org.apache.isis.applib.util.ToString;
-import org.apache.isis.commons.collections.Can;
import lombok.Getter;
import lombok.NonNull;
@@ -41,12 +39,6 @@ implements AuthenticationSession, Serializable {
@Getter(onMethod_ = {@Override})
private final @NonNull ExecutionContext executionContext;
- @Getter(onMethod_ = {@Override})
- private final @NonNull String userName;
-
- @Getter(onMethod_ = {@Override})
- private final @NonNull Can<String> roles;
-
@Getter(onMethod_ = {@Override})
private final @NonNull String validationCode;
@@ -58,22 +50,11 @@ implements AuthenticationSession, Serializable {
@NonNull final String validationCode) {
this.executionContext = executionEnvironment;
- this.userName = getUser().getName();
- this.roles = Can.ofCollection(getUser().getRoles())
- .map(RoleMemento::getName);
-
this.validationCode = validationCode;
this.messageBroker = new MessageBroker();
// nothing to do
}
- // -- User Name
-
- @Override
- public boolean hasUserNameOf(final String userName) {
- return Objects.equals(userName, getUserName());
- }
-
// -- TO STRING, EQUALS, HASHCODE
private static final ToString<AuthenticationSessionAbstract> toString = ToString
@@ -100,7 +81,10 @@ implements AuthenticationSession, Serializable {
}
private boolean isEqualsTo(final AuthenticationSessionAbstract other) {
- if(!getExecutionContext().equals(other.getExecutionContext())) {
+ if(!Objects.equals(this.getValidationCode(), other.getValidationCode())) {
+ return false;
+ }
+ if(!Objects.equals(this.getExecutionContext(), other.getExecutionContext())) {
return false;
}
return true;
diff --git a/core/security/src/main/java/org/apache/isis/core/security/authentication/manager/AuthenticationManager.java b/core/security/src/main/java/org/apache/isis/core/security/authentication/manager/AuthenticationManager.java
index ad025d2..9eb28fa 100644
--- a/core/security/src/main/java/org/apache/isis/core/security/authentication/manager/AuthenticationManager.java
+++ b/core/security/src/main/java/org/apache/isis/core/security/authentication/manager/AuthenticationManager.java
@@ -125,7 +125,7 @@ public class AuthenticationManager {
}
}
final String userName = userByValidationCode.get(session.getValidationCode());
- return session.hasUserNameOf(userName);
+ return session.getUser().isCurrentUser(userName);
}
diff --git a/core/security/src/main/java/org/apache/isis/core/security/authorization/manager/AuthorizationManager.java b/core/security/src/main/java/org/apache/isis/core/security/authorization/manager/AuthorizationManager.java
index 89e8f71..429b790 100644
--- a/core/security/src/main/java/org/apache/isis/core/security/authorization/manager/AuthorizationManager.java
+++ b/core/security/src/main/java/org/apache/isis/core/security/authorization/manager/AuthorizationManager.java
@@ -103,21 +103,21 @@ public class AuthorizationManager {
// -- HELPER
- private static boolean containsSudoSuperuserRole(@Nullable final AuthenticationSession session) {
- if(session==null) {
+ private static boolean containsSudoSuperuserRole(
+ final @Nullable AuthenticationSession session) {
+ if(session==null || session.getUser()==null) {
return false;
}
- return session.getRoles().contains(SudoService.ACCESS_ALL_ROLE.getName());
+ return session.getUser().hasRoleName(SudoService.ACCESS_ALL_ROLE.getName());
}
private boolean anyMatchOnRoles(
- @Nullable final AuthenticationSession session,
- @NonNull final Predicate<String> predicate) {
- if(session==null) {
+ final @Nullable AuthenticationSession session,
+ final @NonNull Predicate<String> predicate) {
+ if(session==null || session.getUser()==null) {
return false;
}
- return session.getRoles()
- .stream()
+ return session.getUser().streamRoleNames()
.anyMatch(predicate);
}