示例#1
0
 /**
  * Liste aller Lehrer abfragen
  *
  * @return List der Lehrer
  */
 @GET
 public List<Lehrer> getAllLehrer() {
   Log.d("Webservice Lehrer Get:");
   Query query = em.createNamedQuery("findAllTeachers");
   List<Lehrer> lehrer = query.getResultList();
   return lehrer;
 }
示例#2
0
 /**
  * Einen neuen Lehrer anlegen
  *
  * @param l Lehrerobjekt
  * @return Lehrerobjekt mit vergebener ID
  */
 @POST
 @Produces({"application/json; charset=iso-8859-1"})
 @Path("admin")
 public Lehrer createLehrer(Lehrer l) {
   Log.d("Neuen Lehrer anlegen " + l);
   em.persist(l);
   em.flush();
   return l;
 }
示例#3
0
 /**
  * Details zu einem Lehrer abfragen
  *
  * @param idLehrer ID des Lehrers
  * @return Lehrer Objekt
  */
 @GET
 @Path("/{idLehrer}")
 @Produces({"application/json; charset=iso-8859-1"})
 public Lehrer getLehrer(@PathParam("idLehrer") String idLehrer) {
   Log.d("Webservice Lehrer Get:" + idLehrer);
   Lehrer lehrer = em.find(Lehrer.class, idLehrer);
   if (lehrer != null) {
     lehrer.setStdPlan(
         StundenplanUtil.getInstance()
             .getPlanObject(lehrer.getNNAME(), PlanType.STDPlanLehrer)
             .getUrl());
   }
   if (lehrer != null) {
     lehrer.setvPlan(
         StundenplanUtil.getInstance()
             .getPlanObject(lehrer.getNNAME(), PlanType.VERTRPlanLehrer)
             .getUrl());
   }
   return lehrer;
 }
示例#4
0
  /**
   * Request Filter, URLs mit noauth können von unangemeldeten Benutzer (also jedem) abgefragt
   * werdn, URLS mit sauth können von Nutzern mit der Schüler Rolle abngefragt wreden, alle anderen
   * Dienste nur von Nutzen mit Lehrer Rolle, bei URLs mit admin im Namen sind zudem Admin Rechte
   * nötig!
   *
   * @param requestCtx Request Context
   * @throws IOException Wenn etwas schief geht
   */
  @Override
  public void filter(ContainerRequestContext requestCtx) throws IOException {

    String path = requestCtx.getUriInfo().getPath();
    log.info("Filtering request path: " + path);

    // IMPORTANT!!! First, Acknowledge any pre-flight test from browsers for this case before
    // validating the headers (CORS stuff)
    if (requestCtx.getRequest().getMethod().equals("OPTIONS")) {
      requestCtx.abortWith(Response.status(Response.Status.OK).build());

      return;
    }

    // Then check is the service key exists and is valid.
    Authenticator demoAuthenticator = Authenticator.getInstance();
    String serviceKey = requestCtx.getHeaderString(HTTPHeaderNames.SERVICE_KEY);
    Log.d("path=(" + path + ")");
    if (path.startsWith("/noauth") || !Config.getInstance().auth) {
      Log.d("path start with noauth auth State=" + Config.getInstance().auth);
    } else {
      /*
      if (!demoAuthenticator.isServiceKeyValid(serviceKey)) {
      log.info("no Service Key found");
      // Kick anyone without a valid service key
      requestCtx.abortWith(Response.status(Response.Status.UNAUTHORIZED).build());

      return;
      }
      log.info("found Valid Key");
      */
      // For any pther methods besides login, the authToken must be verified
      if (!path.startsWith("/auth/login") && !path.startsWith("/auth/logout")) {
        String authToken = requestCtx.getHeaderString(HTTPHeaderNames.AUTH_TOKEN);
        Log.d("auth Token=" + authToken);
        // if it isn't valid, just kick them out.
        if (!demoAuthenticator.isAuthTokenValid(authToken)) {
          requestCtx.abortWith(Response.status(Response.Status.UNAUTHORIZED).build());
        } // Schauen ob der Zugriff auf den Service mit der Rolle erlaubt ist
        else {
          String userRole = demoAuthenticator.getRole(authToken);
          Log.d("User hat die Rolle " + userRole + " auth_toke=" + authToken);
          if (userRole.equals(Roles.toString(Roles.ADMIN))) {
            // Admin darf alles
          } else if (userRole.equals(Roles.toString(Roles.VERWALTUNG))) {
            // Verwaltung dürfen die Services Nutzen, die das Wort verwaltung im Namen haben
            if (path.contains("admin")) {
              Log.d("Nicht genügend Rechte");
              requestCtx.abortWith(Response.status(Response.Status.UNAUTHORIZED).build());
            }
          } else if (userRole.equals(Roles.toString(Roles.LEHRER))) {
            // Lehrer dürfen keine Services Nutzen, die das Wort Admin oder Verwaltung im Namen
            // haben
            if (path.contains("admin") || path.contains("verwaltung")) {
              Log.d("Nicht genügend Rechte");
              requestCtx.abortWith(Response.status(Response.Status.UNAUTHORIZED).build());
            }
          } else if (userRole.equals(Roles.toString(Roles.SCHUELER))) {
            // Schüler dürfen Nur auf Dienste zugreifen, die 'sauth' im Namen haben
            if (path.contains("sauth")) {

            } else {
              Log.d("Nicht genügend Rechte");
              requestCtx.abortWith(Response.status(Response.Status.UNAUTHORIZED).build());
            }
          }
        }
      }
    }
  }