From 1345f04c927a319d1f541d420250e94bb949fbdd Mon Sep 17 00:00:00 2001
From: ulrich <not disclosed>
Date: Sat, 11 Feb 2017 13:30:21 +0000
Subject: [PATCH] An-/Abmelden eingebaut

---
 src/java/de/uhilger/um/pub/SessionManager.java |   13 +++
 web/ui/index.html                              |   17 +----
 web/logout.html                                |   17 +++++
 src/java/de/uhilger/um/web/Initialiser.java    |    4 +
 src/java/de/uhilger/um/api/UserMgr.java        |   74 ------------------------
 web/ui/ui.js                                   |   51 ++++++++++++++++
 6 files changed, 87 insertions(+), 89 deletions(-)

diff --git a/src/java/de/uhilger/um/api/UserMgr.java b/src/java/de/uhilger/um/api/UserMgr.java
index 3f06be7..84a8f3e 100644
--- a/src/java/de/uhilger/um/api/UserMgr.java
+++ b/src/java/de/uhilger/um/api/UserMgr.java
@@ -18,21 +18,13 @@
 
 package de.uhilger.um.api;
 
-import de.uhilger.baselink.GenericRecord;
 import de.uhilger.baselink.PersistenceManager;
-import de.uhilger.baselink.Record;
-import de.uhilger.transit.web.RequestKontext;
-import de.uhilger.transit.web.WebKontext;
 import de.uhilger.um.Digester;
 import de.uhilger.um.daten.User;
-import de.uhilger.um.daten.UserData;
 import de.uhilger.um.daten.UserRole;
 import java.sql.Connection;
 import java.util.List;
-import java.util.Properties;
 import java.util.logging.Logger;
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpServletRequest;
 
 /**
  * <p>Die Methoden der Klasse UserMgr sind  
@@ -63,11 +55,6 @@
   
   private static final Logger logger = Logger.getLogger(UserMgr.class.getName());
   
-  /** Zeiger zum Servlet-Kontext dieser Anwendung */
-  //private ServletContext ctx;
-  
-  //private HttpServletRequest request;
-  
   /** Name, unter dem das Properties-Objekt mit den SQL-Befehlen im ServletContext hinterlegt ist */
   public static final String UM_SQL_PROPERTIES = "umSqlProperties";
 
@@ -95,13 +82,6 @@
   public static final String MP_USER = "userMapper";
   public static final String MP_USER_DATA = "userDataMapper";
   public static final String MP_USER_ROLE = "userRoleMapper";
-  
-  /** Mapper-Objekt fuer Benutzer */
-  //private static final Record UserMapper = new GenericRecord(User.class);
-  /** Mapper-Objekt fuer Benutzerdaten */
-  //private static final Record UserDataMapper = new GenericRecord(UserData.class);
-  /** Mapper-Objekt fuer Benutzerrollen */
-  //private static final Record UserRoleMapper = new GenericRecord(UserRole.class);
   
   /* ----------- Benutzer -------------- */
   
@@ -167,56 +147,4 @@
     return list;
   }
   
-  /**
-   * Ein benanntes SQL-Kommando ermitteln 
-   * @param id Name des gewuenschten SQL-Kommandos
-   * @return das SQL-Kommando mit der in id angegebenen Bezeichnung 
-   */
-  /*
-  private String getSql(String id) {
-    Properties sql = (Properties) ctx.getAttribute(UserMgr.UM_SQL_PROPERTIES);
-    return sql.getProperty(id);
-  }
-  
-  private PersistenceManager getDb() {
-    return (PersistenceManager) ctx.getAttribute(UM_DB);
-  }
-  
-  private Record getMapper(String mapperName) {
-    Record record = null;
-    Object o = getServletContext().getAttribute(mapperName);
-    if(o instanceof Record) {
-      record = (Record) o;
-    }
-    return record;
-  }
-  */
-  /* ------------- Implementierung WebKontext ------------- */
-
-  /*
-  @Override
-  public ServletContext getServletContext() {
-    return ctx;
-  }
-
-  @Override
-  public void setServletContext(ServletContext servletContext) {
-    this.ctx = servletContext;
-  }
-  */
-  
-  /* ------------- Implementierung RequestKontext ------------- */
-
-  /*
-  @Override
-  public HttpServletRequest getRequest() {
-    return request;
-  }
-
-  @Override
-  public void setRequest(HttpServletRequest r) {
-    this.request = r;
-  }
-  */
-  
-}
+}
\ No newline at end of file
diff --git a/src/java/de/uhilger/um/pub/SessionManager.java b/src/java/de/uhilger/um/pub/SessionManager.java
index a1a3af6..a8efb51 100644
--- a/src/java/de/uhilger/um/pub/SessionManager.java
+++ b/src/java/de/uhilger/um/pub/SessionManager.java
@@ -1,6 +1,5 @@
 package de.uhilger.um.pub;
 
-import de.uhilger.baselink.PersistenceManager;
 import de.uhilger.um.api.Api;
 import static de.uhilger.um.api.UserMgr.MP_USER_DATA;
 import static de.uhilger.um.api.UserMgr.SQL_GET_USER_DATA;
@@ -8,11 +7,14 @@
 import de.uhilger.um.daten.UserData;
 import java.security.Principal;
 import java.util.List;
+import java.util.logging.Logger;
 
 /**
  *
  */
 public class SessionManager extends Api {
+  
+  private static final Logger logger = Logger.getLogger(SessionManager.class.getName());
   
   // /um/pub?c=de.uhilger.um.pub.SessionManager&m=getSessionUser
   public UserData getSessionUser() {
@@ -24,7 +26,7 @@
     Object p = getRequest().getUserPrincipal();
     if(p instanceof Principal) {
       String id = ((Principal) p).getName();
-      PersistenceManager pm = getDb();
+      logger.info("User-ID: " + id);
       List userDataList = getDb().select(getSql(SQL_GET_USER_DATA), getMapper(MP_USER_DATA), WITHOUT_BLOBS, id);
       if(userDataList != null && userDataList.size() > 0) {
         Object o = userDataList.get(0);
@@ -32,9 +34,16 @@
           userData = (UserData) o;
         }
       }
+    } else {
+      logger.info("getUserPrincipal returned null or no Principal");
     }
     return userData;
   }
   
+  public String expireSession() {
+    getRequest().getSession().invalidate();
+    return "Die aktuelle Sitzung ist nicht mehr gueltig.";
+  }
+  
   
 }
diff --git a/src/java/de/uhilger/um/web/Initialiser.java b/src/java/de/uhilger/um/web/Initialiser.java
index 21b4420..3fa226a 100644
--- a/src/java/de/uhilger/um/web/Initialiser.java
+++ b/src/java/de/uhilger/um/web/Initialiser.java
@@ -62,6 +62,10 @@
   /** Name des SQL-Befehls zum Pruefen, ob die Datenbank vorhanden ist */
   public static final String SQL_DB_VORHANDEN = "dbVorhanden";  
   
+  public static final String MP_USER = "userMapper";
+  public static final String MP_USER_DATA = "userDataMapper";
+  public static final String MP_USER_ROLE = "userRoleMapper";
+  
   /**
    * Diese Webanwendung initialisieren, also z.B. Elemente instantiieren, die
    * &uuml;ber den Deployment Descritpor ver&auml;nderlich gehalten sind.
diff --git a/web/logout.html b/web/logout.html
new file mode 100644
index 0000000..7564bd8
--- /dev/null
+++ b/web/logout.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <link rel="stylesheet" type="text/css" href="/jslib/bootstrap/css/bootstrap.min.css">
+    <link rel="stylesheet" type="text/css" href="stile.css">
+    <title>Abgemeldet</title>
+  </head>
+  <body>
+      <div style="margin: 20px;">
+            <h3>Abmeldung</h3>
+            <p>Sie haben sich erfolgreich abgemeldet.</p>
+            <p>zur&uuml;ck zur <a href="ui/">Anmeldung</a> &bull; <a href="/">Hauptseite</a></p>
+        </div>
+  </body>
+</html>
diff --git a/web/ui/index.html b/web/ui/index.html
index eb4b61c..c50eca5 100644
--- a/web/ui/index.html
+++ b/web/ui/index.html
@@ -16,13 +16,6 @@
   </head>
   <body>
     <div id="inhalt">
-      <!--
-      <div class="breadcrumb">
-        <a class="breadcrumb-item" href="/">WebBox</a>
-        <a class="breadcrumb-item" href="/wbx/">Verwaltung</a>
-        <span class="breadcrumb-item active">Benutzer</span>
-      </div>
-      -->
       <ul class="nav">
         <li class="nav-item">
           <a class="nav-link active" href="/">WebBox</a>
@@ -35,13 +28,9 @@
           </div>
         </li>
         <li class="nav-item dropdown">
-          <a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">Dropdown</a>
+          <a id="userMenu" class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">Dropdown</a>
           <div class="dropdown-menu">
-            <a class="dropdown-item" href="#">Action</a>
-            <a class="dropdown-item" href="#">Another action</a>
-            <a class="dropdown-item" href="#">Something else here</a>
-            <div class="dropdown-divider"></div>
-            <a class="dropdown-item" href="#">Separated link</a>
+            <a id="logout" class="dropdown-item" href="#">Abmelden</a>
           </div>
         </li>
       </ul>
@@ -57,6 +46,8 @@
         <input class="form-control eingabe" type="text" size="20" maxlength="30" placeholder="Anmeldename" name="anmeldename" id="anmeldename">
         <input class="form-control eingabe" type="password" size="20" maxlength="30" placeholder="Kennwort" name="kennwort" id="kennwort">
         <input class="form-control eingabe" type="password" size="20" maxlength="30" placeholder="Wiederholung" name="kennwortw" id="kennwortw">
+        <input class="form-control eingabe" type="text" size="20" maxlength="250" placeholder="Vorname" name="vorname" id="vorname">
+        <input class="form-control eingabe" type="text" size="20" maxlength="250" placeholder="Name" name="nachname" id="nachname">
         <!--<button class="user-cancel-btn">Abbrechen</button>-->
         <button class="user-save-btn btn btn-primary eingabe">Speichern</button>
       </div>
diff --git a/web/ui/ui.js b/web/ui/ui.js
index b2efd06..db78d60 100644
--- a/web/ui/ui.js
+++ b/web/ui/ui.js
@@ -17,9 +17,12 @@
   $('#neueRolle').click(um_new_role);
   $('#rollen').click(um_role_list_click);
   $('#nutzerrollen').click(um_user_role_list_click);
+  $('#userMenu').text('?');
+  $('#logout').click(logout);
   um_clear_user_form();
   um_apicall_get_user_list();
   um_apicall_get_granted_roles();
+  um_apicall_get_login();
 }
 
 /* ----- user functions ------ */
@@ -43,6 +46,10 @@
       um_apicall_del_user(self.serialisieren(user));
     }  
   }
+}
+
+function logout() {
+  um_apicall_logout();
 }
 
 /* ----------- role functions ------------ */
@@ -130,7 +137,9 @@
 function um_user_form_lesen() {
   var userId = $('#anmeldename').val();
   var kw = $('#kennwort').val();
-  var user = new User(userId, kw, '-', '-', '-');
+  var firstName = $('#vorname').val();
+  var lastName = $('#nachname');
+  var user = new User(userId, kw, firstName, lastName, '-');
   return user;
 }
 
@@ -373,6 +382,46 @@
   });      
 }
 
+function um_apicall_get_login() {
+  var m = '?c=de.uhilger.um.pub.SessionManager&m=getSessionUser';
+  var u = '../pub' + m;
+  $.ajax({
+    url: u,
+    type: "GET",
+    dataType : "json",
+    success: function( resp ) {
+      $('#userMenu').text(resp.UserData.firstName);
+    },
+    error: function( xhr, status, errorThrown ) {
+      $('#fehler').html("Error: " + errorThrown + " Status: " + status);
+    },
+    complete: function( xhr, status ) {
+      //alert( "The request is complete!" );
+    }
+  });      
+  
+}
+
+function um_apicall_logout() {
+  var m = '?c=de.uhilger.um.pub.SessionManager&m=expireSession';
+  var u = '../pub' + m;
+  $.ajax({
+    url: u,
+    type: "GET",
+    dataType : "text",
+    success: function( resp ) {
+      $('#userMenu').text('nicht angemeldet');
+      window.location.href = '../logout.html';
+    },
+    error: function( xhr, status, errorThrown ) {
+      $('#fehler').html("Error: " + errorThrown + " Status: " + status);
+    },
+    complete: function( xhr, status ) {
+      //alert( "The request is complete!" );
+    }
+  });      
+}
+
 /* ----- Hilfsfunktionen ----- */
 
 function serialisieren(obj) {

--
Gitblit v1.9.3