diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/authentication/QAuthenticationModuleInterface.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/authentication/QAuthenticationModuleInterface.java index 28db59d6..f7715556 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/authentication/QAuthenticationModuleInterface.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/authentication/QAuthenticationModuleInterface.java @@ -87,7 +87,17 @@ public interface QAuthenticationModuleInterface *******************************************************************************/ default String createAccessToken(QAuthenticationMetaData metaData, String clientId, String clientSecret) throws AccessTokenException { - throw (new NotImplementedException("The method createAccessToken() is not implemented in the class: " + this.getClass().getSimpleName())); + throw (new NotImplementedException("The method createAccessToken() is not implemented in the authentication module: " + this.getClass().getSimpleName())); + } + + + + /*************************************************************************** + ** + ***************************************************************************/ + default String getLoginRedirectUrl(String originalUrl) + { + throw (new NotImplementedException("The method getLoginRedirectUrl() is not implemented in the authentication module: " + this.getClass().getSimpleName())); } } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/authentication/implementations/MockAuthenticationModule.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/authentication/implementations/MockAuthenticationModule.java index c3459e72..4f0d5da1 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/authentication/implementations/MockAuthenticationModule.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/authentication/implementations/MockAuthenticationModule.java @@ -24,6 +24,7 @@ package com.kingsrook.qqq.backend.core.modules.authentication.implementations; import java.util.Map; import java.util.UUID; +import com.kingsrook.qqq.backend.core.exceptions.QAuthenticationException; import com.kingsrook.qqq.backend.core.logging.QLogger; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.session.QSession; @@ -45,8 +46,13 @@ public class MockAuthenticationModule implements QAuthenticationModuleInterface ** *******************************************************************************/ @Override - public QSession createSession(QInstance qInstance, Map context) + public QSession createSession(QInstance qInstance, Map context) throws QAuthenticationException { + if("Deny".equalsIgnoreCase(context.get("accessToken"))) + { + throw (new QAuthenticationException("Access denied (per accessToken requesting as such)")); + } + QUser qUser = new QUser(); qUser.setIdReference("User:" + (System.currentTimeMillis() % USER_ID_MODULO)); qUser.setFullName("John Smith"); @@ -80,4 +86,16 @@ public class MockAuthenticationModule implements QAuthenticationModuleInterface return (true); } + + + + /*************************************************************************** + ** + ***************************************************************************/ + @Override + public String getLoginRedirectUrl(String originalUrl) + { + return originalUrl + "?createMockSession=true"; + } + } diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/TestUtils.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/TestUtils.java index 54502074..731b7235 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/TestUtils.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/TestUtils.java @@ -40,6 +40,7 @@ import com.kingsrook.qqq.backend.core.actions.tables.QueryAction; import com.kingsrook.qqq.backend.core.actions.tables.UpdateAction; import com.kingsrook.qqq.backend.core.actions.values.QCustomPossibleValueProvider; import com.kingsrook.qqq.backend.core.context.QContext; +import com.kingsrook.qqq.backend.core.exceptions.QAuthenticationException; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.instances.QMetaDataVariableInterpreter; import com.kingsrook.qqq.backend.core.logging.QLogger; @@ -1289,7 +1290,7 @@ public class TestUtils /******************************************************************************* ** *******************************************************************************/ - public static QSession getMockSession() + public static QSession getMockSession() throws QAuthenticationException { MockAuthenticationModule mockAuthenticationModule = new MockAuthenticationModule(); return (mockAuthenticationModule.createSession(null, null));