ulrich
2017-02-11 1345f04c927a319d1f541d420250e94bb949fbdd
An-/Abmelden eingebaut
5 files modified
1 files added
176 ■■■■ changed files
src/java/de/uhilger/um/api/UserMgr.java 74 ●●●●● patch | view | raw | blame | history
src/java/de/uhilger/um/pub/SessionManager.java 13 ●●●● patch | view | raw | blame | history
src/java/de/uhilger/um/web/Initialiser.java 4 ●●●● patch | view | raw | blame | history
web/logout.html 17 ●●●●● patch | view | raw | blame | history
web/ui/index.html 17 ●●●● patch | view | raw | blame | history
web/ui/ui.js 51 ●●●●● patch | view | raw | blame | history
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;
  }
  */
}
}
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.";
  }
  
}
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.
web/logout.html
New file
@@ -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>
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>
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) {