Exemplo n.º 1
0
  /** {@inheritDoc} */
  @Override
  public ImmutableSetMultimap<String, String> getPermissions(
      List<Authorizable> authorizables, List<String> groups) {
    Roles roles = rolesReference.get();
    String database = null;
    Boolean isURI = false;
    for (Authorizable authorizable : authorizables) {
      if (authorizable instanceof Database) {
        database = authorizable.getName();
      }
      if (authorizable instanceof AccessURI) {
        isURI = true;
      }
    }

    if (LOGGER.isDebugEnabled()) {
      LOGGER.debug("Getting permissions for {} via {}", groups, database);
    }
    ImmutableSetMultimap.Builder<String, String> resultBuilder = ImmutableSetMultimap.builder();
    for (String group : groups) {
      resultBuilder.putAll(group, roles.getRoles(database, group, isURI));
    }
    ImmutableSetMultimap<String, String> result = resultBuilder.build();
    if (LOGGER.isDebugEnabled()) {
      LOGGER.debug("result = " + result);
    }
    return result;
  }
Exemplo n.º 2
0
 @Test
 public void testGetId() {
   // System.out.println("getId");
   Roles r = new Roles();
   int expected = 0;
   int result = r.getIdRoleUtilizador();
   assertEquals(expected, result);
 }
Exemplo n.º 3
0
 public String getPrimaryDisplay() {
   StringBuilder sb = new StringBuilder();
   sb.append("");
   sb.append(
       (roles.getPrimaryDisplay().toString() == null ? " " : roles.getPrimaryDisplay().toString())
           + ",");
   sb.append((menuId.toString() == null ? " " : menuId.toString()) + ",");
   sb.append((isRead == null ? " " : isRead) + ",");
   sb.append((isWrite == null ? " " : isWrite) + ",");
   sb.append((isExecute == null ? " " : isExecute));
   return sb.toString();
 }
Exemplo n.º 4
0
  /** @throws AuthenticationException */
  @SuppressWarnings("unused")
  @Override
  public void authenticate() throws AuthenticationException {
    Usuario user;
    Map<Integer, Integer> recursosOperacoes = new HashMap<Integer, Integer>();

    try {
      user = usuarioDAO.findById(Long.getLong(identity.getId()));

      if (user != null) {

        List<UsuarioRecurso> recursosUsuario = usuarioRecursoDAO.findByUsuario(user.getId());

        if (recursosUsuario != null) {

          Iterator<UsuarioRecurso> it = recursosUsuario.iterator();

          while (it.hasNext()) {
            UsuarioRecurso usuarioRecurso = it.next();
            recursosOperacoes.put(
                usuarioRecurso.getUsuarioRecursosPK().getRecursos(), usuarioRecurso.getOperacao());
          }
        } else {
          throw new AuthenticationException(
              rb.getString("login.usuario.nao.existe"), new Exception());
        }
      } else {
        throw new AuthenticationException(
            rb.getString("login.usuario.nao.existe"), new Exception());
      }

    } catch (Exception ex) {
      throw new AuthenticationException(rb.getString("login.usuario.nao.existe"), ex);
    }

    if (!user.getAminesia().isEmpty()
        && user.getSenha().equals(user.getAminesia().substring(21, 27))) {
      throw new AuthenticationException(rb.getString("login.alteracao.por.email"));
    }

    this.identity.setAttribute("Nome", user.getNome());
    this.identity.setAttribute("Papel", Roles.getRole(user.getPapel()).get(0));
    this.identity.setAttribute("Recurso", recursosOperacoes);
  }
Exemplo n.º 5
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());
            }
          }
        }
      }
    }
  }