use of org.opennms.netmgt.model.OnmsUser in project opennms by OpenNMS.
the class UserRestServiceIT method testWriteUserWithEmail.
@Test
public void testWriteUserWithEmail() throws Exception {
setUser("doesntHavePermissions", new String[] { "ROLE_USER" });
createUser("test123", "test123@opennms.org", 400, null);
setUser("admin", new String[] { "ROLE_ADMIN" });
createUser("test123", "test123@opennms.org", 201, "/users/test123");
// validate creation
String xml = sendRequest(GET, "/users/test123", 200);
assertNotNull(xml);
OnmsUser testUser = JaxbUtils.unmarshal(OnmsUser.class, xml);
assertNotNull(testUser);
assertEquals("test123", testUser.getUsername());
assertEquals("test123@opennms.org", testUser.getEmail());
}
use of org.opennms.netmgt.model.OnmsUser in project opennms by OpenNMS.
the class UserRestServiceIT method testWriteUser.
@Test
public void testWriteUser() throws Exception {
createUser("test");
// validate creation
String xml = sendRequest(GET, "/users/test", 200);
assertTrue(xml.contains("<user><user-id>test</user-id>"));
// change password and email
setUser("doesntHavePermissions", new String[] { "ROLE_USER" });
sendPut("/users/test", "password=MONKEYS&email=test@opennms.org", 400);
setUser("admin", new String[] { "ROLE_ADMIN" });
sendPut("/users/test", "password=MONKEYS&email=test@opennms.org", 204);
// validate change of password
xml = sendRequest(GET, "/users/test", 200);
OnmsUser testUser = JaxbUtils.unmarshal(OnmsUser.class, xml);
// ... but in xml-file
User xmlUser = m_userManager.getUser("test");
assertEquals(xmlUser.getPassword().getEncryptedPassword(), "MONKEYS");
// validate change of email
assertEquals("test@opennms.org", testUser.getEmail());
}
use of org.opennms.netmgt.model.OnmsUser in project opennms by OpenNMS.
the class UserRestService method deleteUser.
@DELETE
@Path("{userCriteria}")
public Response deleteUser(@Context final SecurityContext securityContext, @PathParam("userCriteria") final String userCriteria) {
writeLock();
try {
if (!hasEditRights(securityContext)) {
throw getException(Status.BAD_REQUEST, "User {} does not have write access to users!", securityContext.getUserPrincipal().getName());
}
final OnmsUser user = getOnmsUser(userCriteria);
LOG.debug("deleteUser: deleting user {}", user);
try {
m_userManager.deleteUser(user.getUsername());
} catch (final Throwable t) {
throw getException(Status.INTERNAL_SERVER_ERROR, t);
}
return Response.noContent().build();
} finally {
writeUnlock();
}
}
use of org.opennms.netmgt.model.OnmsUser in project opennms by OpenNMS.
the class UserRestService method updateUser.
@PUT
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Path("{userCriteria}")
public Response updateUser(@Context final SecurityContext securityContext, @PathParam("userCriteria") final String userCriteria, final MultivaluedMapImpl params) {
writeLock();
try {
if (!hasEditRights(securityContext)) {
throw getException(Status.BAD_REQUEST, "User {} does not have write access to users!", securityContext.getUserPrincipal().getName());
}
final OnmsUser user = getOnmsUser(userCriteria);
LOG.debug("updateUser: updating user {}", user);
boolean modified = false;
final BeanWrapper wrapper = PropertyAccessorFactory.forBeanPropertyAccess(user);
for (final String key : params.keySet()) {
if (wrapper.isWritableProperty(key)) {
final String stringValue = params.getFirst(key);
final Object value = wrapper.convertIfNecessary(stringValue, wrapper.getPropertyType(key));
wrapper.setPropertyValue(key, value);
modified = true;
}
}
if (modified) {
LOG.debug("updateUser: user {} updated", user);
try {
m_userManager.save(user);
} catch (final Throwable t) {
throw getException(Status.INTERNAL_SERVER_ERROR, t);
}
return Response.noContent().build();
}
return Response.notModified().build();
} finally {
writeUnlock();
}
}
use of org.opennms.netmgt.model.OnmsUser in project opennms by OpenNMS.
the class UserRestService method deleteRole.
@DELETE
@Path("{userCriteria}/roles/{roleName}")
public Response deleteRole(@Context final SecurityContext securityContext, @PathParam("userCriteria") final String userCriteria, @PathParam("roleName") final String roleName) {
writeLock();
try {
if (!hasEditRights(securityContext)) {
throw getException(Status.BAD_REQUEST, "User {} does not have write access to users!", securityContext.getUserPrincipal().getName());
}
if (!Authentication.isValidRole(roleName)) {
throw getException(Status.BAD_REQUEST, "Invalid role {}!", roleName);
}
final OnmsUser user = getOnmsUser(userCriteria);
boolean modified = false;
if (user.getRoles().contains(roleName)) {
user.getRoles().remove(roleName);
modified = true;
}
if (modified) {
LOG.debug("deleteRole: user {} updated", user);
try {
m_userManager.save(user);
} catch (final Throwable t) {
throw getException(Status.INTERNAL_SERVER_ERROR, t);
}
return Response.noContent().build();
}
return Response.notModified().build();
} finally {
writeUnlock();
}
}
Aggregations