Author: tveronezi
Date: Mon Oct 15 22:12:23 2012
New Revision: 1398535
URL: http://svn.apache.org/viewvc?rev=1398535&view=rev
Log:
https://issues.apache.org/jira/browse/TOMEE-448
Added:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/util/
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/util/User.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/util/UserEjb.java
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/UserNotAuthenticated.java
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-toolbar-logout-btn.handlebars
- copied, changed from r1398486,
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-toolbar.handlebars
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/SystemApps.java
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/TomeeException.java
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/CommandSession.java
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/GetLog.java
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/Login.java
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/RunScript.java
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/ApplicationSocketConnection.java
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/ApplicationController.js
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/ApplicationTemplates.js
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-tab-console-sample.handlebars
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-toolbar.handlebars
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/util/I18N.js
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/view/ApplicationToolbarView.js
openejb/trunk/openejb/tomee/tomee-webapp/src/test/java/org/apache/tomee/webapp/test/RunScriptTest.java
Added:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/util/User.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/util/User.java?rev=1398535&view=auto
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/util/User.java
(added)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/util/User.java
Mon Oct 15 22:12:23 2012
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.openejb.assembler.util;
+
+public interface User {
+ void adminOnly();
+ String getUserName();
+}
Added:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/util/UserEjb.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/util/UserEjb.java?rev=1398535&view=auto
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/util/UserEjb.java
(added)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/util/UserEjb.java
Mon Oct 15 22:12:23 2012
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.openejb.assembler.util;
+
+import javax.annotation.Resource;
+import javax.annotation.security.RolesAllowed;
+import javax.ejb.Remote;
+import javax.ejb.SessionContext;
+import javax.ejb.Stateless;
+import java.security.Principal;
+
+@Stateless(name = "openejb/User")
+@Remote(User.class)
+public class UserEjb implements User {
+ @Resource
+ private SessionContext ctx;
+
+ @RolesAllowed({"tomee-admin"})
+ @Override
+ public void adminOnly() {
+ //no-op
+ }
+
+ @Override
+ public String getUserName() {
+ final Principal principal = this.ctx.getCallerPrincipal();
+ if (principal == null) {
+ return null;
+ }
+ return principal.getName();
+ }
+}
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/SystemApps.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/SystemApps.java?rev=1398535&r1=1398534&r2=1398535&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/SystemApps.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/SystemApps.java
Mon Oct 15 22:12:23 2012
@@ -19,6 +19,7 @@ package org.apache.openejb.config;
import org.apache.openejb.assembler.DeployerEjb;
import org.apache.openejb.assembler.classic.cmd.ConfigurationInfoEjb;
import org.apache.openejb.assembler.monitoring.JMXDeployer;
+import org.apache.openejb.assembler.util.UserEjb;
import org.apache.openejb.jee.EjbJar;
import org.apache.openejb.jee.EnterpriseBean;
import org.apache.openejb.jee.Interceptor;
@@ -42,6 +43,7 @@ public class SystemApps {
final OpenejbJar openejbJar = module.getOpenejbJar();
final EjbJar ejbJar = module.getEjbJar();
+ ejbJar.addEnterpriseBean(new StatelessBean(null, UserEjb.class));
ejbJar.addEnterpriseBean(new StatelessBean(null, DeployerEjb.class));
ejbJar.addEnterpriseBean(new StatelessBean(null,
ConfigurationInfoEjb.class));
ejbJar.addEnterpriseBean(new StatelessBean(null, MEJBBean.class));
Modified:
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/TomeeException.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/TomeeException.java?rev=1398535&r1=1398534&r2=1398535&view=diff
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/TomeeException.java
(original)
+++
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/TomeeException.java
Mon Oct 15 22:12:23 2012
@@ -19,7 +19,15 @@ package org.apache.tomee.webapp;
public class TomeeException extends RuntimeException {
+ public TomeeException(String message) {
+ super(message);
+ }
+
public TomeeException(Throwable cause) {
super(cause);
}
+
+ public TomeeException(String message, Throwable cause) {
+ super(message, cause);
+ }
}
Modified:
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/CommandSession.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/CommandSession.java?rev=1398535&r1=1398534&r2=1398535&view=diff
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/CommandSession.java
(original)
+++
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/CommandSession.java
Mon Oct 15 22:12:23 2012
@@ -17,9 +17,12 @@
package org.apache.tomee.webapp.command;
+import javax.naming.Context;
+
public interface CommandSession {
- boolean login(String user, String password);
+ Context login(String user, String password);
+ void assertAuthenticated() throws UserNotAuthenticated;
Object get(String key);
void set(String key, Object value);
Added:
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/UserNotAuthenticated.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/UserNotAuthenticated.java?rev=1398535&view=auto
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/UserNotAuthenticated.java
(added)
+++
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/UserNotAuthenticated.java
Mon Oct 15 22:12:23 2012
@@ -0,0 +1,15 @@
+package org.apache.tomee.webapp.command;
+
+import org.apache.tomee.webapp.TomeeException;
+
+public class UserNotAuthenticated extends TomeeException {
+ private static final String MESSAGE = "User not authenticated";
+
+ public UserNotAuthenticated(Throwable cause) {
+ super(MESSAGE, cause);
+ }
+
+ public UserNotAuthenticated() {
+ super(MESSAGE);
+ }
+}
Modified:
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/GetLog.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/GetLog.java?rev=1398535&r1=1398534&r2=1398535&view=diff
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/GetLog.java
(original)
+++
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/GetLog.java
Mon Oct 15 22:12:23 2012
@@ -31,6 +31,9 @@ public class GetLog implements Command {
@Override
public Object execute(final CommandSession session, final Map<String,
Object> params) throws Exception {
+ // Is this user authenticated?
+ session.assertAuthenticated();
+
final Map<String, Object> json = new HashMap<String, Object>();
final File logFolder = new File(System.getProperty("catalina.base"),
Modified:
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/Login.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/Login.java?rev=1398535&r1=1398534&r2=1398535&view=diff
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/Login.java
(original)
+++
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/Login.java
Mon Oct 15 22:12:23 2012
@@ -20,6 +20,7 @@ package org.apache.tomee.webapp.command.
import org.apache.tomee.webapp.command.Command;
import org.apache.tomee.webapp.command.CommandSession;
+import java.util.HashMap;
import java.util.Map;
public class Login implements Command {
@@ -28,16 +29,13 @@ public class Login implements Command {
public Object execute(CommandSession session, Map<String, Object> params)
throws Exception {
final String user = (String) params.get("user");
final String pass = (String) params.get("pass");
- final boolean result = session.login(user, pass);
+ final Map<String, Object> result = new HashMap<String, Object>();
- if (result) {
- session.set("user", user);
- session.set("pass", pass);
+ if (session.login(user, pass) == null) {
+ result.put("loginSuccess", Boolean.FALSE);
} else {
- session.set("user", null);
- session.set("pass", null);
+ result.put("loginSuccess", Boolean.TRUE);
}
-
return result;
}
}
Modified:
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/RunScript.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/RunScript.java?rev=1398535&r1=1398534&r2=1398535&view=diff
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/RunScript.java
(original)
+++
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/RunScript.java
Mon Oct 15 22:12:23 2012
@@ -32,6 +32,9 @@ public class RunScript implements Comman
@Override
public Object execute(final CommandSession session, final Map<String,
Object> params) throws Exception {
+ // Is this user authenticated?
+ session.assertAuthenticated();
+
final String scriptCode = (String) params.get("scriptCode");
if (scriptCode == null) {
return null; //nothing to do
@@ -61,7 +64,7 @@ public class RunScript implements Comman
//just throw it
throw new TomeeException(execution.getException());
}
- return execution.getResult();
+ return String.valueOf(execution.getResult());
}
private ClassLoader getClassLoader(final String appName) {
Modified:
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/ApplicationSocketConnection.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/ApplicationSocketConnection.java?rev=1398535&r1=1398534&r2=1398535&view=diff
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/ApplicationSocketConnection.java
(original)
+++
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/ApplicationSocketConnection.java
Mon Oct 15 22:12:23 2012
@@ -20,8 +20,10 @@ package org.apache.tomee.webapp.servlet;
import com.google.gson.Gson;
import org.apache.catalina.websocket.StreamInbound;
import org.apache.catalina.websocket.WsOutbound;
+import org.apache.openejb.assembler.util.User;
import org.apache.tomee.webapp.command.CommandExecutor;
import org.apache.tomee.webapp.command.CommandSession;
+import org.apache.tomee.webapp.command.UserNotAuthenticated;
import javax.naming.Context;
import javax.naming.InitialContext;
@@ -38,6 +40,9 @@ public class ApplicationSocketConnection
private Gson gson = new Gson();
private Map<String, Object> attributes = new HashMap<String, Object>();
+ private String user;
+ private String pass;
+
private String readParam(Reader in) throws IOException {
try {
@@ -75,17 +80,42 @@ public class ApplicationSocketConnection
}
@Override
- public boolean login(String user, String password) {
+ public Context login(String user, String pass) {
Properties props = new Properties();
props.setProperty(Context.INITIAL_CONTEXT_FACTORY,
"org.apache.openejb.client.RemoteInitialContextFactory");
- props.put("java.naming.provider.url",
"http://127.0.0.1:8080/openejb/ejb");
+ props.put("java.naming.provider.url",
"http://127.0.0.1:8080/tomee/ejb");
props.setProperty(Context.SECURITY_PRINCIPAL, user);
- props.setProperty(Context.SECURITY_CREDENTIALS, password);
+ props.setProperty(Context.SECURITY_CREDENTIALS, pass);
+ try {
+ final Context context = new InitialContext(props);
+ this.user = user;
+ this.pass = pass;
+ return context;
+ } catch (NamingException e) {
+ this.user = null;
+ this.pass = null;
+ return null;
+ }
+ }
+
+ @Override
+ public void assertAuthenticated() throws UserNotAuthenticated {
+ final Context context = this.login(this.user, this.pass);
+ if (context == null) {
+ throw new UserNotAuthenticated();
+ }
+
+ final User user;
try {
- new InitialContext(props);
- return true;
+ user = (User) context.lookup("openejb/UserBusinessRemote");
} catch (NamingException e) {
- return false;
+ throw new UserNotAuthenticated();
+ }
+
+ try {
+ user.adminOnly();
+ } catch (Exception e) {
+ throw new UserNotAuthenticated(e);
}
}
Modified:
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/ApplicationController.js
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/ApplicationController.js?rev=1398535&r1=1398534&r2=1398535&view=diff
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/ApplicationController.js
(original)
+++
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/ApplicationController.js
Mon Oct 15 22:12:23 2012
@@ -28,10 +28,6 @@ TOMEE.ApplicationController = function (
view = TOMEE.ApplicationView();
view.render();
- model.sendMessage({
- cmdName:'GetLog',
- aNumber:1
- });
channel.bind('ui-actions', 'execute-script', function (data) {
model.sendMessage({
@@ -40,6 +36,10 @@ TOMEE.ApplicationController = function (
});
});
+ channel.bind('ui-actions', 'logout-btn-click', function () {
+ window.location.reload();
+ });
+
channel.bind('ui-actions', 'login-btn-click', function (data) {
model.sendMessage({
cmdName:'Login',
@@ -61,6 +61,13 @@ TOMEE.ApplicationController = function (
});
});
+ channel.bind('server-command-callback-success', 'Login', function (data) {
+ model.sendMessage({
+ cmdName:'GetLog',
+ aNumber:1
+ });
+ });
+
return {
};
Modified:
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/ApplicationTemplates.js
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/ApplicationTemplates.js?rev=1398535&r1=1398534&r2=1398535&view=diff
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/ApplicationTemplates.js
(original)
+++
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/ApplicationTemplates.js
Mon Oct 15 22:12:23 2012
@@ -46,6 +46,7 @@ TOMEE.ApplicationTemplates = (function (
})([
'application',
'application-toolbar',
+ 'application-toolbar-logout-btn',
'application-tab-console',
'application-tab-console-sample',
'application-tab-console-output-line',
Modified:
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-tab-console-sample.handlebars
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-tab-console-sample.handlebars?rev=1398535&r1=1398534&r2=1398535&view=diff
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-tab-console-sample.handlebars
(original)
+++
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-tab-console-sample.handlebars
Mon Oct 15 22:12:23 2012
@@ -6,9 +6,12 @@ var myImports = new JavaImporter(
with (myImports) {
var p = new Properties();
- p.put("java.naming.factory.initial",
"org.apache.openejb.client.LocalInitialContextFactory");
+ p.put("java.naming.factory.initial",
"org.apache.openejb.client.RemoteInitialContextFactory");
+ p.put("java.naming.provider.url", "http://localhost:8080/tomee/ejb");
+ p.put("java.naming.security.principal", "tomee");
+ p.put("java.naming.security.credentials", "tomee");
var ctx = new InitialContext(p);
- var myBean = ctx.lookup("openejb/DeployerBusinessRemote");
- myBean.getUniqueFile();
-}
\ No newline at end of file
+ var myBean = ctx.lookup("openejb/UserBusinessRemote");
+ myBean.getUserName();
+}
Copied:
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-toolbar-logout-btn.handlebars
(from r1398486,
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-toolbar.handlebars)
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-toolbar-logout-btn.handlebars?p2=openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-toolbar-logout-btn.handlebars&p1=openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-toolbar.handlebars&r1=1398486&r2=1398535&rev=1398535&view=diff
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-toolbar.handlebars
(original)
+++
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-toolbar-logout-btn.handlebars
Mon Oct 15 22:12:23 2012
@@ -1,25 +1,3 @@
-<div class="navbar navbar-fixed-top">
- <div class="navbar-inner">
- <div class="container" style="width: auto; padding: 0 20px;">
- <a class="brand" href="#">{{i18n "application.name"}}</a>
- <ul class="nav">
- <li class="toolbar-item active console"><a href="#">{{i18n
"application.console"}}</a></li>
- <li class="toolbar-item log"><a href="#">{{i18n
"application.log"}}</a></li>
- </ul>
- <ul class="nav pull-right">
- <li class="dropdown">
- <a class="dropdown-toggle tomee-user-name" href="#"
data-toggle="dropdown">{{i18n "application.sign.in"}}</a>
- <div class="dropdown-menu" style="padding: 15px;
padding-bottom: 0px;">
- <form>
- <input type="text" class="span3 tomee-login"
placeholder="{{i18n 'application.log.in'}}">
- <input type="password" class="span3
tomee-password" placeholder="{{i18n 'application.password'}}">
- <button type="button" class="btn btn-primary
pull-right tomee-login-btn">
- {{i18n "application.sign.in"}}
- </button>
- </form>
- </div>
- </li>
- </ul>
- </div>
- </div>
-</div>
+<button type="button" class="btn btn-primary pull-right tomee-logout-btn">
+ {{i18n "application.sign.out"}}
+</button>
\ No newline at end of file
Modified:
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-toolbar.handlebars
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-toolbar.handlebars?rev=1398535&r1=1398534&r2=1398535&view=diff
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-toolbar.handlebars
(original)
+++
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-toolbar.handlebars
Mon Oct 15 22:12:23 2012
@@ -7,15 +7,17 @@
<li class="toolbar-item log"><a href="#">{{i18n
"application.log"}}</a></li>
</ul>
<ul class="nav pull-right">
- <li class="dropdown">
+ <li class="dropdown user-login-dropdown">
<a class="dropdown-toggle tomee-user-name" href="#"
data-toggle="dropdown">{{i18n "application.sign.in"}}</a>
<div class="dropdown-menu" style="padding: 15px;
padding-bottom: 0px;">
<form>
<input type="text" class="span3 tomee-login"
placeholder="{{i18n 'application.log.in'}}">
<input type="password" class="span3
tomee-password" placeholder="{{i18n 'application.password'}}">
- <button type="button" class="btn btn-primary
pull-right tomee-login-btn">
- {{i18n "application.sign.in"}}
- </button>
+ <div class="login-buttons">
+ <button type="button" class="btn btn-primary
pull-right tomee-login-btn">
+ {{i18n "application.sign.in"}}
+ </button>
+ </div>
</form>
</div>
</li>
Modified:
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/util/I18N.js
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/util/I18N.js?rev=1398535&r1=1398534&r2=1398535&view=diff
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/util/I18N.js
(original)
+++
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/util/I18N.js
Mon Oct 15 22:12:23 2012
@@ -35,6 +35,7 @@ TOMEE.I18N = (function () {
'application.log.select.a.file':'Select a file',
'application.sign.in':'Sign In',
+ 'application.sign.out':'Sign Out',
'application.log.in':'Login',
'application.password':'Password',
Modified:
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/view/ApplicationToolbarView.js
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/view/ApplicationToolbarView.js?rev=1398535&r1=1398534&r2=1398535&view=diff
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/view/ApplicationToolbarView.js
(original)
+++
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/app/js/view/ApplicationToolbarView.js
Mon Oct 15 22:12:23 2012
@@ -20,7 +20,8 @@ TOMEE.ApplicationToolbarView = function
"use strict";
var channel = TOMEE.ApplicationChannel,
- el = $(TOMEE.ApplicationTemplates.getValue('application-toolbar', {}));
+ el = $(TOMEE.ApplicationTemplates.getValue('application-toolbar', {})),
+ logoutBtn =
$(TOMEE.ApplicationTemplates.getValue('application-toolbar-logout-btn', {}));
(function (keys) {
TOMEE.utils.forEach(keys, function (key) {
@@ -43,19 +44,46 @@ TOMEE.ApplicationToolbarView = function
btn.prop('disabled', true);
});
- channel.bind('server-command-callback', 'Login', function (params) {
+ logoutBtn.on('click', function () {
+ channel.send('ui-actions', 'logout-btn-click', {});
+ });
+
+ channel.bind('server-command-callback-success', 'Login', function (params)
{
+ var btn = el.find('.tomee-login-btn'),
+ btnsArea = el.find('.login-buttons'),
+ menu = el.find('.user-login-dropdown'),
+ userNameMenu = el.find('.tomee-user-name'),
+ user = el.find('.tomee-login'),
+ pass = el.find('.tomee-password');
+
+ if(!params.output.loginSuccess) {
+ btn.prop('disabled', false);
+ return;
+ }
+
+ btn.remove();
+ btnsArea.append(logoutBtn);
+
+ menu.removeClass('open');
+ userNameMenu.html(user.val());
+ pass.html('123456');
+ user.prop('disabled', true);
+ pass.prop('disabled', true);
+ });
+
+ channel.bind('server-command-callback-error', 'Login', function (params) {
var btn = el.find('.tomee-login-btn');
btn.prop('disabled', false);
});
- var updateSelected = function (key) {
+ function updateSelected(key) {
el.find('.toolbar-item').removeClass('active');
el.find('.' + key).addClass('active');
channel.send('ui-actions', 'toolbar-click', {
key:key
});
- };
+ }
return {
getEl:function () {
Modified:
openejb/trunk/openejb/tomee/tomee-webapp/src/test/java/org/apache/tomee/webapp/test/RunScriptTest.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/test/java/org/apache/tomee/webapp/test/RunScriptTest.java?rev=1398535&r1=1398534&r2=1398535&view=diff
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-webapp/src/test/java/org/apache/tomee/webapp/test/RunScriptTest.java
(original)
+++
openejb/trunk/openejb/tomee/tomee-webapp/src/test/java/org/apache/tomee/webapp/test/RunScriptTest.java
Mon Oct 15 22:12:23 2012
@@ -18,13 +18,11 @@
package org.apache.tomee.webapp.test;
import org.apache.tomee.webapp.command.CommandSession;
+import org.apache.tomee.webapp.command.UserNotAuthenticated;
import org.apache.tomee.webapp.command.impl.RunScript;
import org.junit.Test;
-import java.io.BufferedReader;
-import java.io.DataInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
+import javax.naming.Context;
import java.util.HashMap;
import java.util.Map;
@@ -41,8 +39,13 @@ public class RunScriptTest {
final RunScript shell = new RunScript();
final Object result = shell.execute(new CommandSession() {
@Override
- public boolean login(String user, String password) {
- return false;
+ public Context login(String user, String password) {
+ return null;
+ }
+
+ @Override
+ public void assertAuthenticated() throws UserNotAuthenticated {
+
}
@Override