You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2021/06/09 12:43:25 UTC
[isis] 09/09: ISIS-2727: removes Authentication from
InteractionLayer
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch ISIS-2727
in repository https://gitbox.apache.org/repos/asf/isis.git
commit 2cd342c6d68b61de09bf55067384e46c434b408d
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Jun 9 13:42:54 2021 +0100
ISIS-2727: removes Authentication from InteractionLayer
---
.../apache/isis/core/interaction/session/InteractionLayer.java | 4 ----
.../isis/core/interaction/session/InteractionTracker.java | 4 +++-
.../{AnonymousSession.java => AnonymousAuthentication.java} | 4 ++--
.../runtimeservices/session/InteractionFactoryDefault.java | 6 +++---
.../isis/core/runtimeservices/sudo/SudoServiceDefault.java | 10 +++++++---
.../core/runtimeservices/wrapper/WrapperFactoryDefault.java | 7 ++++++-
.../security/authentication/standard/SimpleAuthentication.java | 5 +++++
7 files changed, 26 insertions(+), 14 deletions(-)
diff --git a/core/interaction/src/main/java/org/apache/isis/core/interaction/session/InteractionLayer.java b/core/interaction/src/main/java/org/apache/isis/core/interaction/session/InteractionLayer.java
index 835ac86..94443ae 100644
--- a/core/interaction/src/main/java/org/apache/isis/core/interaction/session/InteractionLayer.java
+++ b/core/interaction/src/main/java/org/apache/isis/core/interaction/session/InteractionLayer.java
@@ -37,10 +37,6 @@ public class InteractionLayer {
@Getter private final IsisInteraction interaction;
@Getter private final InteractionContext interactionContext;
- public Authentication getAuthentication() {
- return Authentication.authenticationFrom(interactionContext).orElse(null);
- }
-
public InteractionLayer(
final @NonNull IsisInteraction interaction,
final @NonNull InteractionContext interactionContext) {
diff --git a/core/interaction/src/main/java/org/apache/isis/core/interaction/session/InteractionTracker.java b/core/interaction/src/main/java/org/apache/isis/core/interaction/session/InteractionTracker.java
index c4f0fee..83d73ad 100644
--- a/core/interaction/src/main/java/org/apache/isis/core/interaction/session/InteractionTracker.java
+++ b/core/interaction/src/main/java/org/apache/isis/core/interaction/session/InteractionTracker.java
@@ -58,7 +58,9 @@ extends InteractionProvider, AuthenticationProvider {
*/
@Override
default Optional<Authentication> currentAuthentication() {
- return currentInteractionLayer().map(InteractionLayer::getAuthentication);
+ return currentInteractionLayer()
+ .map(InteractionLayer::getInteractionContext)
+ .flatMap(Authentication::authenticationFrom);
}
// -- INTERACTION CONTEXT
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/AnonymousSession.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/AnonymousAuthentication.java
similarity index 92%
rename from core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/AnonymousSession.java
rename to core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/AnonymousAuthentication.java
index 6216da1..ee55816 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/AnonymousSession.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/AnonymousAuthentication.java
@@ -22,14 +22,14 @@ import org.apache.isis.applib.services.iactnlayer.InteractionContext;
import org.apache.isis.applib.services.user.UserMemento;
import org.apache.isis.core.security.authentication.AuthenticationAbstract;
-final class AnonymousSession extends AuthenticationAbstract {
+public final class AnonymousAuthentication extends AuthenticationAbstract {
private static final long serialVersionUID = 1L;
private static final InteractionContext INITIALISATION_CONTEXT =
InteractionContext.ofUserWithSystemDefaults(UserMemento.system());
- public AnonymousSession() {
+ public AnonymousAuthentication() {
super(INITIALISATION_CONTEXT, AuthenticationAbstract.DEFAULT_AUTH_VALID_CODE);
}
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/InteractionFactoryDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/InteractionFactoryDefault.java
index 28a8fe3..3787072 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/InteractionFactoryDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/InteractionFactoryDefault.java
@@ -160,7 +160,7 @@ implements
return currentInteractionLayer()
// or else create an anonymous authentication layer
.orElseGet(()-> {
- final AnonymousSession authToUse = new AnonymousSession();
+ final AnonymousAuthentication authToUse = new AnonymousAuthentication();
return openInteraction(authToUse.getInteractionContext());
});
}
@@ -282,7 +282,7 @@ implements
serviceInjector.injectServicesInto(callable);
return callable.call(); // reuse existing session
}
- return callAuthenticated(new AnonymousSession(), callable);
+ return callAuthenticated(new AnonymousAuthentication(), callable);
}
/**
@@ -297,7 +297,7 @@ implements
runnable.run(); // reuse existing session
return;
}
- runAuthenticated(new AnonymousSession(), runnable);
+ runAuthenticated(new AnonymousAuthentication(), runnable);
}
// -- CONVERSATION ID
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/sudo/SudoServiceDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/sudo/SudoServiceDefault.java
index 8fe1a86..bf02c91 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/sudo/SudoServiceDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/sudo/SudoServiceDefault.java
@@ -19,6 +19,7 @@
package org.apache.isis.core.runtimeservices.sudo;
+import java.util.Optional;
import java.util.concurrent.Callable;
import java.util.function.UnaryOperator;
@@ -38,6 +39,9 @@ import org.apache.isis.applib.services.sudo.SudoServiceListener;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.core.interaction.session.InteractionTracker;
+import org.apache.isis.core.runtimeservices.session.AnonymousAuthentication;
+import org.apache.isis.core.security.authentication.Authentication;
+import org.apache.isis.core.security.authentication.standard.SimpleAuthentication;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
@@ -76,9 +80,9 @@ public class SudoServiceDefault implements SudoService {
val currentInteractionContext = currentInteractionLayer.getInteractionContext();
val sudoInteractionContext = sudoMapper.apply(currentInteractionContext);
- val sudoAuthentication = currentInteractionLayer
- .getAuthentication()
- .withInteractionContext(sudoInteractionContext);
+ val authentication = Authentication.authenticationFrom(currentInteractionContext)
+ .orElse(SimpleAuthentication.validOf(currentInteractionContext));
+ val sudoAuthentication = authentication.withInteractionContext(sudoInteractionContext);
try {
beforeCall(currentInteractionContext, sudoInteractionContext);
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/wrapper/WrapperFactoryDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/wrapper/WrapperFactoryDefault.java
index 1b8edc9..564ac22 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/wrapper/WrapperFactoryDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/wrapper/WrapperFactoryDefault.java
@@ -361,7 +361,12 @@ public class WrapperFactoryDefault implements WrapperFactory {
val interactionContext = interactionLayer.getInteractionContext();
val asyncInteractionContext = interactionContextFrom(asyncControl, interactionContext);
- val auth = interactionLayer.getAuthentication();
+ val authIfAny = Authentication.authenticationFrom(interactionLayer.getInteractionContext());
+ if(authIfAny.isEmpty()) {
+ return null;
+ }
+
+ val auth = authIfAny.get();
val asyncAuth = auth.withInteractionContext(asyncInteractionContext);
val command = interactionProviderProvider.get().currentInteractionElseFail().getCommand();
diff --git a/core/security/src/main/java/org/apache/isis/core/security/authentication/standard/SimpleAuthentication.java b/core/security/src/main/java/org/apache/isis/core/security/authentication/standard/SimpleAuthentication.java
index 505270f..887f9ad 100644
--- a/core/security/src/main/java/org/apache/isis/core/security/authentication/standard/SimpleAuthentication.java
+++ b/core/security/src/main/java/org/apache/isis/core/security/authentication/standard/SimpleAuthentication.java
@@ -45,6 +45,11 @@ extends AuthenticationAbstract {
return of(user, DEFAULT_AUTH_VALID_CODE);
}
+ public static SimpleAuthentication validOf(
+ final @NonNull InteractionContext interactionContext) {
+ return new SimpleAuthentication(interactionContext, DEFAULT_AUTH_VALID_CODE);
+ }
+
// -- CONSTRUCTOR
public SimpleAuthentication(