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


Reply via email to