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 * über den Deployment Descritpor verä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ück zur <a href="ui/">Anmeldung</a> • <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