List of usage examples for org.apache.shiro.subject Subject checkPermission
void checkPermission(Permission permission) throws AuthorizationException;
From source file:annis.service.internal.AdminService.java
License:Apache License
/** * Get the user configuration for the currentl logged in user. *//* w w w . j a v a 2s. c om*/ @GET @Path("userconfig") @Produces("application/xml") public AnnisUserConfig getUserConfig() { Subject user = SecurityUtils.getSubject(); user.checkPermission("admin:read:userconfig"); return adminDao.retrieveUserConfig((String) user.getPrincipal()); }
From source file:annis.service.internal.AdminService.java
License:Apache License
/** * Sets the user configuration for the currentl logged in user. *///from w w w . j a v a2s . co m @POST @Path("userconfig") @Consumes("application/xml") public Response setUserConfig(JAXBElement<AnnisUserConfig> config) { Subject user = SecurityUtils.getSubject(); user.checkPermission("admin:write:userconfig"); adminDao.storeUserConfig(config.getValue()); return Response.ok().build(); }
From source file:annis.service.internal.AdminServiceImpl.java
License:Apache License
/** * Get the user configuration for the currently logged in user. * * @return//from w w w . ja va 2 s . c om */ @GET @Path("userconfig") @Produces("application/xml") public UserConfig getUserConfig() { Subject user = SecurityUtils.getSubject(); user.checkPermission("admin:read:userconfig"); return adminDao.retrieveUserConfig((String) user.getPrincipal()); }
From source file:annis.service.internal.AdminServiceImpl.java
License:Apache License
/** * Sets the user configuration for the currently logged in user. *//*from ww w .j av a 2s. com*/ @POST @Path("userconfig") @Consumes("application/xml") public Response setUserConfig(JAXBElement<UserConfig> config) { Subject user = SecurityUtils.getSubject(); user.checkPermission("admin:write:userconfig"); String userName = (String) user.getPrincipal(); adminDao.storeUserConfig(userName, config.getValue()); return Response.ok().build(); }
From source file:annis.service.internal.AdminServiceImpl.java
License:Apache License
@GET @Path("users") @Produces("application/xml") public List<User> listUsers() { Subject requestingUser = SecurityUtils.getSubject(); requestingUser.checkPermission("admin:read:user"); if (SecurityUtils.getSecurityManager() instanceof ANNISSecurityManager) { ANNISUserConfigurationManager confManager = getConfManager(); if (confManager != null) { return confManager.listAllUsers(); }//w w w. ja va 2 s . c o m } return new LinkedList<>(); }
From source file:annis.service.internal.AdminServiceImpl.java
License:Apache License
@PUT @Path("users/{userName}") @Consumes("application/xml") @Override/*from www .j ava 2 s.c o m*/ public Response updateOrCreateUser(User user, @PathParam("userName") String userName) { Subject requestingUser = SecurityUtils.getSubject(); requestingUser.checkPermission("admin:write:user"); if (!userName.equals(user.getName())) { return Response.status(Response.Status.BAD_REQUEST) .entity("Username in object is not the same as in path").build(); } // if any permission is an adminstrative one the // requesting user needs more than just a "admin:write:user" permission" for (String permission : user.getPermissions()) { if (permission.startsWith("admin:")) { requestingUser.checkPermission("admin:write:adminuser"); break; } } ANNISUserRealm userRealm = getUserRealm(); if (userRealm != null) { if (userRealm.updateUser(user)) { return Response.ok().build(); } } return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("Could not update/create user") .build(); }
From source file:annis.service.internal.AdminServiceImpl.java
License:Apache License
@GET @Path("users/{userName}") @Produces("application/xml") @Override// w ww .java 2s. c o m public User getUser(@PathParam("userName") String userName) { Subject requestingUser = SecurityUtils.getSubject(); requestingUser.checkPermission("admin:read:user"); ANNISUserConfigurationManager conf = getConfManager(); if (conf != null) { User u = conf.getUser(userName); if (u == null) { throw new WebApplicationException(Response.Status.NOT_FOUND); } // remove the password hash from the result, we don't want someone with // lower adminstration rights to crack it u.setPasswordHash(""); return u; } throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR); }
From source file:annis.service.internal.AdminServiceImpl.java
License:Apache License
@DELETE @Path("users/{userName}") public Response deleteUser(@PathParam("userName") String userName) { Subject requestingUser = SecurityUtils.getSubject(); requestingUser.checkPermission("admin:write:user"); if (SecurityUtils.getSecurityManager() instanceof ANNISSecurityManager) { ANNISUserConfigurationManager confManager = getConfManager(); if (confManager != null) { if (confManager.deleteUser(userName)) { // also delete any possible user configs adminDao.deleteUserConfig(userName); // if no error until here everything went well return Response.ok().build(); }/*from www . j a va2s. c om*/ } } return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("Could not delete user").build(); }
From source file:annis.service.internal.AdminServiceImpl.java
License:Apache License
@POST @Path("users/{userName}/password") @Consumes("text/plain") @Produces("application/xml") public Response changePassword(String newPassword, @PathParam("userName") String userName) { Subject requestingUser = SecurityUtils.getSubject(); requestingUser.checkPermission("admin:write:user"); ANNISUserConfigurationManager confManager = getConfManager(); ANNISUserRealm userRealm = getUserRealm(); if (confManager != null && userRealm != null) { User user = confManager.getUser(userName); if (user == null) { return Response.status(Response.Status.NOT_FOUND).build(); }//from w w w. j a va 2 s . c o m Shiro1CryptFormat format = new Shiro1CryptFormat(); SecureRandomNumberGenerator generator = new SecureRandomNumberGenerator(); ByteSource salt = generator.nextBytes(128 / 8); // 128 bit Sha256Hash hash = new Sha256Hash(newPassword, salt, 1); user.setPasswordHash(format.format(hash)); if (userRealm.updateUser(user)) { return Response.ok().entity(user).build(); } } return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("Could not change password").build(); }
From source file:annis.service.internal.AdminServiceImpl.java
License:Apache License
@GET @Path("groups") @Produces("application/xml") public List<Group> listGroups() { Subject requestingUser = SecurityUtils.getSubject(); requestingUser.checkPermission("admin:read:group"); if (SecurityUtils.getSecurityManager() instanceof ANNISSecurityManager) { ANNISUserConfigurationManager confManager = getConfManager(); if (confManager != null) { return new LinkedList<>(confManager.getGroups().values()); }//from w ww . ja v a 2 s . c o m } return new LinkedList<>(); }