You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by rm...@apache.org on 2012/02/10 22:27:45 UTC
svn commit: r1242933 - in /incubator/isis/trunk/framework/viewer/scimpi:
scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/
scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/context/
scimpi-dispatcher/src/m...
Author: rmatthews
Date: Fri Feb 10 21:27:45 2012
New Revision: 1242933
URL: http://svn.apache.org/viewvc?rev=1242933&view=rev
Log:
Isis-162 combining Isis and Domain model authentication elements so pages are written the same irrespective of method.
Added:
incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/logon/RestrictAccess.java (with props)
Modified:
incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/Dispatcher.java
incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/Names.java
incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/context/RequestContext.java
incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/logon/LogonAction.java
incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/logon/LogoutAction.java
incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/processor/ProcessorLookup.java
incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Debug.java
incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/logon/Logon.java
incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/logon/User.java
incubator/isis/trunk/framework/viewer/scimpi/scimpi-servlet/src/main/java/org/apache/isis/viewer/scimpi/servlet/ServletRequestContext.java
Modified: incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/Dispatcher.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/Dispatcher.java?rev=1242933&r1=1242932&r2=1242933&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/Dispatcher.java (original)
+++ incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/Dispatcher.java Fri Feb 10 21:27:45 2012
@@ -509,7 +509,7 @@ public class Dispatcher {
}
public void debug(final DebugBuilder debug) {
- debug.appendTitle("Actions");
+ debug.startSection("Actions");
final Set<String> keySet = actions.keySet();
final ArrayList<String> list = new ArrayList<String>(keySet);
Collections.sort(list);
Modified: incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/Names.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/Names.java?rev=1242933&r1=1242932&r2=1242933&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/Names.java (original)
+++ incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/Names.java Fri Feb 10 21:27:45 2012
@@ -20,6 +20,8 @@
package org.apache.isis.viewer.scimpi.dispatcher;
public interface Names {
+ static final String PREFIX = "_logon-";
+
static final String BUTTON_TITLE = "button-title";
static final String CANCEL_TO = "cancel-to";
static final String COLLECTION = "collection";
@@ -69,7 +71,17 @@ public interface Names {
static final String VIEW = "view";
static final String VALUE = "value";
static final String VERSION = "version";
+ static final String USER = "user";
static final String VOID = "void";
static final String WHEN = "when";
- public static final String ENTRY_FIELDS = "entry-fields";
+ static final String ENTRY_FIELDS = "entry-fields";
+
+
+ static final String LOGON_OBJECT = PREFIX + OBJECT;
+ static final String LOGON_METHOD = PREFIX + METHOD;
+ static final String LOGON_SCOPE = PREFIX + SCOPE;
+ static final String LOGON_RESULT_NAME = PREFIX + RESULT_NAME;
+ static final String LOGON_FORM_ID = PREFIX + "form-id";
+
+
}
Modified: incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/context/RequestContext.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/context/RequestContext.java?rev=1242933&r1=1242932&r2=1242933&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/context/RequestContext.java (original)
+++ incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/context/RequestContext.java Fri Feb 10 21:27:45 2012
@@ -101,6 +101,7 @@ public abstract class RequestContext {
private String resourceFile;
private String resourceParentPath;
private ObjectAdapter collection;
+ private boolean isUserAuthenticated;
public RequestContext(final DebugUsers debugUsers) {
this.debugUsers = debugUsers;
@@ -256,7 +257,8 @@ public abstract class RequestContext {
// Debug
// ////////////////////////////
public void append(final DebugBuilder debug) {
- debug.startSection("Request");
+ debug.startSection("Scimpi Request");
+
debug.appendTitle("User");
final AuthenticationSession session = getSession();
debug.appendln("Authentication Session", session);
@@ -377,6 +379,9 @@ public abstract class RequestContext {
if (scope == Scope.SESSION && value != null && !(value instanceof Serializable)) {
throw new ScimpiException("SESSION scoped variable (" + name + ") must be serializable: " + value);
}
+ if (scope == Scope.SESSION) {
+ startHttpSession();
+ }
removeExistingVariable(name);
variables.get(scope).put(name, value);
}
@@ -755,6 +760,7 @@ public abstract class RequestContext {
public void setSession(final AuthenticationSession session) {
this.session = session;
+ addVariable("_auth_session", session, Scope.SESSION);
}
public AuthenticationSession getSession() {
@@ -771,7 +777,9 @@ public abstract class RequestContext {
public void setSessionData(final Map<String, Object> hashMap) {
variables.put(Scope.SESSION, hashMap);
- setSession((AuthenticationSession) getVariable("_auth_session"));
+ session = (AuthenticationSession) getVariable("_auth_session");
+ Boolean authenticated = (Boolean) getVariable("_authenticated");
+ isUserAuthenticated = authenticated != null && authenticated.booleanValue();
}
public Map<String, Object> getSessionData() {
@@ -809,4 +817,13 @@ public abstract class RequestContext {
public void reset() {
}
+
+ public boolean isUserAuthenticated() {
+ return isUserAuthenticated;
+ }
+
+ public void setUserAuthenticated(boolean isUserAuthenticated) {
+ this.isUserAuthenticated = isUserAuthenticated;
+ addVariable("_authenticated", isUserAuthenticated, Scope.SESSION);
+ }
}
Modified: incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/logon/LogonAction.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/logon/LogonAction.java?rev=1242933&r1=1242932&r2=1242933&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/logon/LogonAction.java (original)
+++ incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/logon/LogonAction.java Fri Feb 10 21:27:45 2012
@@ -20,17 +20,25 @@
package org.apache.isis.viewer.scimpi.dispatcher.logon;
import java.io.IOException;
+import java.util.List;
import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.commons.debug.DebugBuilder;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.facets.object.parseable.ParseableFacet;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
+import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
import org.apache.isis.core.runtime.authentication.AuthenticationRequestPassword;
import org.apache.isis.viewer.scimpi.dispatcher.Action;
import org.apache.isis.viewer.scimpi.dispatcher.Dispatcher;
+import org.apache.isis.viewer.scimpi.dispatcher.ScimpiException;
import org.apache.isis.viewer.scimpi.dispatcher.UserManager;
import org.apache.isis.viewer.scimpi.dispatcher.context.RequestContext;
import org.apache.isis.viewer.scimpi.dispatcher.context.RequestContext.Scope;
import org.apache.isis.viewer.scimpi.dispatcher.edit.FieldEditState;
import org.apache.isis.viewer.scimpi.dispatcher.edit.FormState;
+import org.apache.isis.viewer.scimpi.dispatcher.util.MethodsUtils;
+
// TODO this should work like EditAction so that logon page is repopulated
public class LogonAction implements Action {
@@ -39,11 +47,61 @@ public class LogonAction implements Acti
public void process(final RequestContext context) throws IOException {
final String username = context.getParameter("username");
final String password = context.getParameter("password");
- final AuthenticationSession session = UserManager.authenticate(new AuthenticationRequestPassword(username, password));
+ final String actualFormId = context.getParameter("_" + FORM_ID);
+ final String expectedFormId = context.getParameter(LOGON_FORM_ID);
+ boolean isDomainLogon = expectedFormId != null && expectedFormId.equals(actualFormId);
+ boolean isValid;
+
+ AuthenticationSession session = null;
+ if (username.length() == 0 || password.length() == 0) {
+ isValid = false;
+ } else {
+ if (isDomainLogon) {
+ final String objectId = context.getParameter(LOGON_OBJECT);
+ final String scope = context.getParameter(LOGON_SCOPE);
+ final String methodName = context.getParameter(LOGON_METHOD);
+ String resultName = context.getParameter(LOGON_RESULT_NAME);
+ resultName = resultName == null ? "_" + USER : resultName;
+
+ final ObjectAdapter object = MethodsUtils.findObject(context, objectId);
+ final ObjectAction action = MethodsUtils.findAction(object, methodName);
+ final int parameterCount = action.getParameterCount();
+ final ObjectAdapter[] parameters = new ObjectAdapter[parameterCount];
+ List<ObjectActionParameter> parameters2 = action.getParameters();
+ if (parameters.length != 2) {
+ throw new ScimpiException("Expected two parameters for the log-on method: " + methodName);
+ }
+
+ ParseableFacet facet = parameters2.get(0).getSpecification().getFacet(ParseableFacet.class);
+ parameters[0] = facet.parseTextEntry(null, username);
+ facet = parameters2.get(1).getSpecification().getFacet(ParseableFacet.class);
+ parameters[1] = facet.parseTextEntry(null, password);
+ final ObjectAdapter result = action.execute(object, parameters);
+ isValid = result != null;
+ if (isValid) {
+ Scope scope2 = scope == null ? Scope.SESSION : RequestContext.scope(scope);
+ final String resultId = context.mapObject(result, scope2);
+ context.addVariable(resultName, resultId, scope);
+ context.addVariable("_username", username, Scope.SESSION);
+
+ context.clearVariable(LOGON_OBJECT, Scope.SESSION);
+ context.clearVariable(LOGON_METHOD, Scope.SESSION);
+ context.clearVariable(LOGON_RESULT_NAME, Scope.SESSION);
+ context.clearVariable(LOGON_SCOPE, Scope.SESSION);
+ context.clearVariable(PREFIX + "isis-user", Scope.SESSION);
+ context.clearVariable(LOGON_FORM_ID, Scope.SESSION);
+ }
+ session = context.getSession();
+ } else {
+ session = UserManager.authenticate(new AuthenticationRequestPassword(username, password));
+ isValid = session != null;
+ }
+ }
String view;
- if (session == null) {
+ if (!isValid) {
final FormState formState = new FormState();
+ formState.setForm(actualFormId);
formState.setError("Failed to login. Check the username and ensure that your password was entered correctly");
FieldEditState fieldState = formState.createField("username", username);
if (username.length() == 0) {
@@ -58,12 +116,13 @@ public class LogonAction implements Acti
}
context.addVariable(ENTRY_FIELDS, formState, Scope.REQUEST);
- view = context.getParameter("error");
+ view = context.getParameter(ERROR);
context.setRequestPath("/" + view, Dispatcher.ACTION);
} else {
context.setSession(session);
context.startHttpSession();
- view = context.getParameter("view");
+ context.setUserAuthenticated(true);
+ view = context.getParameter(VIEW);
if (view == null) {
// REVIEW this is duplicated in Logon.java
view = "start." + Dispatcher.EXTENSION;
@@ -78,10 +137,8 @@ public class LogonAction implements Acti
}
@Override
- public void init() {
- }
+ public void init() {}
@Override
- public void debug(final DebugBuilder debug) {
- }
+ public void debug(final DebugBuilder debug) {}
}
Modified: incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/logon/LogoutAction.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/logon/LogoutAction.java?rev=1242933&r1=1242932&r2=1242933&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/logon/LogoutAction.java (original)
+++ incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/logon/LogoutAction.java Fri Feb 10 21:27:45 2012
@@ -41,13 +41,16 @@ public class LogoutAction implements Act
@Override
public void process(final RequestContext context) throws IOException {
- final AuthenticationSession session = context.getSession();
- if (session != null) {
- IsisContext.getUpdateNotifier().clear();
- UserManager.logoffUser(session);
+ if (context.isUserAuthenticated()) {
+ final AuthenticationSession session = context.getSession();
+ if (session != null) {
+ IsisContext.getUpdateNotifier().clear();
+ UserManager.logoffUser(session);
+ }
context.endHttpSession();
+ context.setUserAuthenticated(false);
}
-
+
String view = context.getParameter("view");
if (view == null) {
view = context.getContextPath();
Modified: incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/processor/ProcessorLookup.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/processor/ProcessorLookup.java?rev=1242933&r1=1242932&r2=1242933&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/processor/ProcessorLookup.java (original)
+++ incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/processor/ProcessorLookup.java Fri Feb 10 21:27:45 2012
@@ -78,6 +78,7 @@ import org.apache.isis.viewer.scimpi.dis
import org.apache.isis.viewer.scimpi.dispatcher.view.field.IncludeField;
import org.apache.isis.viewer.scimpi.dispatcher.view.field.LinkField;
import org.apache.isis.viewer.scimpi.dispatcher.view.logon.Logon;
+import org.apache.isis.viewer.scimpi.dispatcher.view.logon.RestrictAccess;
import org.apache.isis.viewer.scimpi.dispatcher.view.logon.Secure;
import org.apache.isis.viewer.scimpi.dispatcher.view.logon.User;
import org.apache.isis.viewer.scimpi.dispatcher.view.simple.BlockDefine;
@@ -178,6 +179,7 @@ public class ProcessorLookup {
addElementProcessor(new RemoveElement());
addElementProcessor(new VersionNumber());
addElementProcessor(new RunAction());
+ addElementProcessor(new RestrictAccess());
addElementProcessor(new ScopeTag());
addElementProcessor(new Secure());
addElementProcessor(new SelectedObject());
Modified: incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Debug.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Debug.java?rev=1242933&r1=1242932&r2=1242933&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Debug.java (original)
+++ incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Debug.java Fri Feb 10 21:27:45 2012
@@ -60,11 +60,7 @@ public class Debug extends AbstractEleme
if (request.getContext().isDebugDisabled()) {
return;
}
-
- // Application | System | Specifications | Dispatcher | Context |
- // Variables | Object | I18N File | Authorization
- // File | Hide Debug
-
+
final String type = request.getOptionalProperty(TYPE);
final boolean alwaysShow = request.isRequested("force", false);
Modified: incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/logon/Logon.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/logon/Logon.java?rev=1242933&r1=1242932&r2=1242933&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/logon/Logon.java (original)
+++ incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/logon/Logon.java Fri Feb 10 21:27:45 2012
@@ -25,6 +25,8 @@ import java.util.List;
import org.apache.isis.core.commons.authentication.AnonymousSession;
import org.apache.isis.runtimes.dflt.runtime.system.context.IsisContext;
import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
+import org.apache.isis.viewer.scimpi.dispatcher.context.RequestContext;
+import org.apache.isis.viewer.scimpi.dispatcher.context.RequestContext.Scope;
import org.apache.isis.viewer.scimpi.dispatcher.edit.FieldEditState;
import org.apache.isis.viewer.scimpi.dispatcher.edit.FormState;
import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
@@ -37,35 +39,56 @@ public class Logon extends AbstractEleme
@Override
public void process(final Request request) {
String view = request.getOptionalProperty(VIEW);
+ RequestContext context = request.getContext();
if (view == null) {
- view = (String) request.getContext().getVariable("login-path");
+ view = (String) context.getVariable("login-path");
}
final boolean isNotLoggedIn = IsisContext.getSession().getAuthenticationSession() instanceof AnonymousSession;
- if (isNotLoggedIn) {
+ if (isNotLoggedIn) {
loginForm(request, view);
}
}
public static void loginForm(final Request request, final String view) {
- // String message = (String)
- // request.getContext().examplegetVariable("login-failure");
-
+ String object = request.getOptionalProperty(OBJECT);
+ String method = request.getOptionalProperty(METHOD, "logon");
+ String result = request.getOptionalProperty(RESULT_NAME, "_user");
+ String resultScope = request.getOptionalProperty(SCOPE, Scope.SESSION.name());
+ String isisUser = request.getOptionalProperty("isis-user", "_web_default");
+ String formId = request.getOptionalProperty(FORM_ID, request.nextFormId());
+
+ // TODO error if all values are not set (not if use type is not set and all others are still defaults);
+
+ if (object != null) {
+ RequestContext context = request.getContext();
+ context.addVariable(LOGON_OBJECT, object, Scope.SESSION);
+ context.addVariable(LOGON_METHOD, method, Scope.SESSION);
+ context.addVariable(LOGON_RESULT_NAME, result, Scope.SESSION);
+ context.addVariable(LOGON_SCOPE, resultScope, Scope.SESSION);
+ context.addVariable(PREFIX + "isis-user", isisUser, Scope.SESSION);
+ context.addVariable(LOGON_FORM_ID, formId, Scope.SESSION);
+ }
+
final String error = request.getOptionalProperty(ERROR, request.getContext().getRequestedFile());
final List<HiddenInputField> hiddenFields = new ArrayList<HiddenInputField>();
hiddenFields.add(new HiddenInputField(ERROR, error));
if (view != null) {
hiddenFields.add(new HiddenInputField(VIEW, view));
}
+ hiddenFields.add(new HiddenInputField("_" + FORM_ID, formId));
final FormState entryState = (FormState) request.getContext().getVariable(ENTRY_FIELDS);
- final InputField nameField = createdField("username", "User Name", InputField.TEXT, entryState);
+ boolean isforThisForm = entryState != null && entryState.isForForm(formId);
+ if (entryState != null && entryState.isForForm(formId)) {
+ }
+ final InputField nameField = createdField("username", "User Name", InputField.TEXT, isforThisForm ? entryState : null);
final String width = request.getOptionalProperty("width");
if (width != null) {
final int w = Integer.valueOf(width).intValue();
nameField.setWidth(w);
}
- final InputField passwordField = createdField("password", "Password", InputField.PASSWORD, entryState);
+ final InputField passwordField = createdField("password", "Password", InputField.PASSWORD, isforThisForm ? entryState : null);
final InputField[] fields = new InputField[] { nameField, passwordField, };
final String formTitle = request.getOptionalProperty(FORM_TITLE);
@@ -73,7 +96,9 @@ public class Logon extends AbstractEleme
final String className = request.getOptionalProperty(CLASS, "login");
final String id = request.getOptionalProperty(ID);
- HtmlFormBuilder.createForm(request, "logon.app", hiddenFields.toArray(new HiddenInputField[hiddenFields.size()]), fields, className, id, formTitle, null, null, loginButtonTitle, entryState == null ? null : entryState.getError(), null);
+ HtmlFormBuilder.createForm(request, "logon.app", hiddenFields.toArray(new HiddenInputField[hiddenFields.size()]), fields,
+ className, id, formTitle, null, null, loginButtonTitle,
+ isforThisForm && entryState != null ? entryState.getError() : null , null);
}
protected static InputField createdField(final String fieldName, final String fieldLabel, final int type, final FormState entryState) {
Added: incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/logon/RestrictAccess.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/logon/RestrictAccess.java?rev=1242933&view=auto
==============================================================================
--- incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/logon/RestrictAccess.java (added)
+++ incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/logon/RestrictAccess.java Fri Feb 10 21:27:45 2012
@@ -0,0 +1,23 @@
+package org.apache.isis.viewer.scimpi.dispatcher.view.logon;
+
+import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
+import org.apache.isis.viewer.scimpi.dispatcher.Dispatcher;
+import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
+
+public class RestrictAccess extends AbstractElementProcessor {
+ private static final String LOGIN_VIEW = "login-view";
+ private static final String DEFAULT_LOGIN_VIEW = "login." + Dispatcher.EXTENSION;
+
+ public String getName() {
+ return "restrict-access";
+ }
+
+ public void process(Request request) {
+ if (!request.getContext().isUserAuthenticated()) {
+ final String view = request.getOptionalProperty(LOGIN_VIEW, DEFAULT_LOGIN_VIEW);
+ request.getContext().redirectTo(view);
+ }
+ }
+
+}
+
Propchange: incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/logon/RestrictAccess.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/logon/User.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/logon/User.java?rev=1242933&r1=1242932&r2=1242933&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/logon/User.java (original)
+++ incubator/isis/trunk/framework/viewer/scimpi/scimpi-dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/logon/User.java Fri Feb 10 21:27:45 2012
@@ -19,7 +19,6 @@
package org.apache.isis.viewer.scimpi.dispatcher.view.logon;
-import org.apache.isis.core.commons.authentication.AnonymousSession;
import org.apache.isis.runtimes.dflt.runtime.system.context.IsisContext;
import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
import org.apache.isis.viewer.scimpi.dispatcher.Dispatcher;
@@ -33,9 +32,9 @@ public class User extends AbstractElemen
@Override
public void process(final Request request) {
- final boolean isLoggedIn = !(IsisContext.getSession().getAuthenticationSession() instanceof AnonymousSession);
+ final boolean isAuthenticatedn = request.getContext().isUserAuthenticated();
request.appendHtml("<div class=\"user\">");
- if (isLoggedIn) {
+ if (isAuthenticatedn) {
displayUserAndLogoutLink(request);
} else {
displayLoginForm(request);
@@ -58,6 +57,9 @@ public class User extends AbstractElemen
public void displayUserAndLogoutLink(final Request request) {
String user = request.getOptionalProperty(NAME);
if (user == null) {
+ user = (String) request.getContext().getVariable("_username");
+ }
+ if (user == null) {
user = IsisContext.getAuthenticationSession().getUserName();
}
request.appendHtml("Welcome <span class=\"name\">");
Modified: incubator/isis/trunk/framework/viewer/scimpi/scimpi-servlet/src/main/java/org/apache/isis/viewer/scimpi/servlet/ServletRequestContext.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/scimpi/scimpi-servlet/src/main/java/org/apache/isis/viewer/scimpi/servlet/ServletRequestContext.java?rev=1242933&r1=1242932&r2=1242933&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/scimpi/scimpi-servlet/src/main/java/org/apache/isis/viewer/scimpi/servlet/ServletRequestContext.java (original)
+++ incubator/isis/trunk/framework/viewer/scimpi/scimpi-servlet/src/main/java/org/apache/isis/viewer/scimpi/servlet/ServletRequestContext.java Fri Feb 10 21:27:45 2012
@@ -53,10 +53,12 @@ public class ServletRequestContext exten
}
public void append(final DebugBuilder view) {
+ super.append(view);
+
/*
* view.divider("System"); Runtime.getRuntime().
*/
- view.appendTitle("Request");
+ view.startSection("HTTP Serviet Request");
view.appendln("Auth type", request.getAuthType());
view.appendln("Character encoding", request.getCharacterEncoding());
view.appendln("Class", request.getClass());
@@ -117,8 +119,6 @@ public class ServletRequestContext exten
view.appendln("Attributes", getAttributes(context));
view.appendln("Init parameters", getParameters(context));
view.appendln("Real path", context.getRealPath("/"));
-
- super.append(view);
}
private String getAttributes(final ServletContext context) {
@@ -206,13 +206,15 @@ public class ServletRequestContext exten
}
return in;
}
-
+
@Override
public void startHttpSession() {
- addVariable("_auth_session", getSession(), Scope.SESSION);
final HttpSession httpSession = request.getSession(true);
- final Map<String, Object> sessionData = getSessionData();
- httpSession.setAttribute("scimpi-context", sessionData);
+ if (!httpSession.getAttributeNames().hasMoreElements()) {
+ final Map<String, Object> sessionData = getSessionData();
+ httpSession.setAttribute("scimpi-context", sessionData);
+ addVariable("_authenticated", false, Scope.SESSION);
+ }
}
@Override