Search in sources :

Example 6 with OnmsUser

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());
}
Also used : OnmsUser(org.opennms.netmgt.model.OnmsUser) Test(org.junit.Test)

Example 7 with OnmsUser

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());
}
Also used : User(org.opennms.netmgt.config.users.User) OnmsUser(org.opennms.netmgt.model.OnmsUser) OnmsUser(org.opennms.netmgt.model.OnmsUser) Test(org.junit.Test)

Example 8 with OnmsUser

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();
    }
}
Also used : OnmsUser(org.opennms.netmgt.model.OnmsUser) Path(javax.ws.rs.Path) DELETE(javax.ws.rs.DELETE)

Example 9 with OnmsUser

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();
    }
}
Also used : BeanWrapper(org.springframework.beans.BeanWrapper) OnmsUser(org.opennms.netmgt.model.OnmsUser) Path(javax.ws.rs.Path) Consumes(javax.ws.rs.Consumes) PUT(javax.ws.rs.PUT)

Example 10 with OnmsUser

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();
    }
}
Also used : OnmsUser(org.opennms.netmgt.model.OnmsUser) Path(javax.ws.rs.Path) DELETE(javax.ws.rs.DELETE)

Aggregations

OnmsUser (org.opennms.netmgt.model.OnmsUser)21 Test (org.junit.Test)8 Path (javax.ws.rs.Path)5 User (org.opennms.netmgt.config.users.User)5 ArrayList (java.util.ArrayList)2 DELETE (javax.ws.rs.DELETE)2 PUT (javax.ws.rs.PUT)2 OnmsUserList (org.opennms.netmgt.model.OnmsUserList)2 DirtiesContext (org.springframework.test.annotation.DirtiesContext)2 File (java.io.File)1 FileInputStream (java.io.FileInputStream)1 FileWriter (java.io.FileWriter)1 IOException (java.io.IOException)1 HashMap (java.util.HashMap)1 LinkedList (java.util.LinkedList)1 List (java.util.List)1 Properties (java.util.Properties)1 ExecutorService (java.util.concurrent.ExecutorService)1 Future (java.util.concurrent.Future)1 Matcher (java.util.regex.Matcher)1