/** {@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; }
@Test public void testGetId() { // System.out.println("getId"); Roles r = new Roles(); int expected = 0; int result = r.getIdRoleUtilizador(); assertEquals(expected, result); }
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(); }
/** @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); }
/** * 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()); } } } } } }