Search in sources :

Example 1 with User

use of ubic.gemma.model.common.auditAndSecurity.User in project Gemma by PavlidisLab.

the class AuditTrailDaoImpl method addEvent.

@Override
public AuditEvent addEvent(final Auditable auditable, final AuditEvent auditEvent) {
    if (auditEvent.getAction() == null) {
        throw new IllegalArgumentException("auditEvent was missing a required field");
    }
    assert auditEvent.getDate() != null;
    if (auditEvent.getPerformer() == null) {
        // could be null, if anonymous.
        User user = getUser();
        Field f = FieldUtils.getField(AuditEvent.class, "performer", true);
        assert f != null;
        try {
            f.set(auditEvent, user);
        } catch (IllegalArgumentException | IllegalAccessException e) {
            // shouldn't happen, but just in case...
            throw new RuntimeException(e);
        }
    }
    AuditTrail trail = auditable.getAuditTrail();
    if (trail == null) {
        /*
             * Note: this step should be done by the AuditAdvice when the entity was first created, so this is just
             * defensive.
             */
        logger.warn("AuditTrail was null. It should have been initialized by the AuditAdvice when the entity was first created.");
        trail = AuditTrail.Factory.newInstance();
        auditable.setAuditTrail(trail);
    } else {
        /*
             * This assumes that nobody else in this session has modified this audit trail.
             */
        if (trail.getId() != null)
            trail = (AuditTrail) this.getSessionFactory().getCurrentSession().get(AuditTrailImpl.class, trail.getId());
    }
    trail.addEvent(auditEvent);
    this.getSessionFactory().getCurrentSession().saveOrUpdate(trail);
    auditable.setAuditTrail(trail);
    return auditEvent;
}
Also used : Field(java.lang.reflect.Field) User(ubic.gemma.model.common.auditAndSecurity.User) AuditTrailImpl(ubic.gemma.model.common.auditAndSecurity.AuditTrailImpl) AuditTrail(ubic.gemma.model.common.auditAndSecurity.AuditTrail)

Example 2 with User

use of ubic.gemma.model.common.auditAndSecurity.User in project Gemma by PavlidisLab.

the class UserDaoImpl method handleFindByEmail.

private User handleFindByEmail(final String email) {
    // noinspection unchecked
    List<User> list = this.getSessionFactory().getCurrentSession().createQuery("from User c where c.email = :email").setParameter("email", email).list();
    Set<User> results = new HashSet<>(list);
    User result = null;
    if (results.size() > 1) {
        throw new InvalidDataAccessResourceUsageException("More than one instance of 'Contact" + "' was found when executing query --> '" + "from User c where c.email = :email" + "'");
    } else if (results.size() == 1) {
        result = results.iterator().next();
    }
    return result;
}
Also used : User(ubic.gemma.model.common.auditAndSecurity.User) InvalidDataAccessResourceUsageException(org.springframework.dao.InvalidDataAccessResourceUsageException)

Example 3 with User

use of ubic.gemma.model.common.auditAndSecurity.User in project Gemma by PavlidisLab.

the class AuditAdviceTest method testSimpleAuditCreateUpdateUser.

@Test
public void testSimpleAuditCreateUpdateUser() {
    String USERNAME = RandomStringUtils.randomAlphabetic(BaseSpringContextTest.RANDOM_STRING_LENGTH);
    String encodedPassword = passwordEncoder.encodePassword(USERNAME, USERNAME);
    UserDetailsImpl u = new UserDetailsImpl(encodedPassword, USERNAME, true, null, null, null, new Date());
    userManager.createUser(u);
    User user = (User) userService.findByUserName(USERNAME);
    List<AuditEvent> events = auditTrailService.getEvents(user);
    assertEquals("Should have just one event, a 'create'", 1, events.size());
    assertEquals(AuditAction.CREATE, events.get(0).getAction());
    assertNotNull(events.get(0).getId());
    // change something.
    user.setEmail(RandomStringUtils.randomNumeric(10));
    userService.update(user);
    events = auditTrailService.getEvents(user);
    int sizeAfterFirstUpdate = events.size();
    assertEquals("Should have a 'create' and an 'update'", 2, sizeAfterFirstUpdate);
    // debugging...
    if (!events.get(0).getAction().equals(AuditAction.CREATE)) {
        log.info("First event wasn't 'C', dumping trail");
        for (AuditEvent ae : events) {
            log.info(ae);
        }
    }
    assertEquals(AuditAction.CREATE, events.get(0).getAction());
    assertEquals(AuditAction.UPDATE, events.get(sizeAfterFirstUpdate - 1).getAction());
    // third time.
    // change something.
    user.setEmail(RandomStringUtils.randomNumeric(10));
    userService.update(user);
    events = auditTrailService.getEvents(user);
    assertEquals(3, user.getAuditTrail().getEvents().size());
    assertEquals(AuditAction.UPDATE, events.get(2).getAction());
    // cleanup
    userManager.deleteUser(USERNAME);
}
Also used : UserDetailsImpl(gemma.gsec.authentication.UserDetailsImpl) User(ubic.gemma.model.common.auditAndSecurity.User) AuditEvent(ubic.gemma.model.common.auditAndSecurity.AuditEvent) BaseSpringContextTest(ubic.gemma.core.testing.BaseSpringContextTest) Test(org.junit.Test)

Example 4 with User

use of ubic.gemma.model.common.auditAndSecurity.User in project Gemma by PavlidisLab.

the class UserDaoImpl method findByUserName.

@Override
public User findByUserName(final String userName) {
    Session session = this.getSessionFactory().getCurrentSession();
    // noinspection unchecked
    List<User> users = session.createCriteria(User.class).setFlushMode(FlushMode.MANUAL).add(Restrictions.eq("userName", userName)).list();
    if (users.isEmpty()) {
        return null;
    } else if (users.size() > 1) {
        throw new IllegalStateException("Multiple users with name=" + userName);
    }
    User u = users.get(0);
    // TESTING
    session.setReadOnly(u, true);
    return u;
}
Also used : User(ubic.gemma.model.common.auditAndSecurity.User) Session(org.hibernate.Session)

Aggregations

User (ubic.gemma.model.common.auditAndSecurity.User)4 UserDetailsImpl (gemma.gsec.authentication.UserDetailsImpl)1 Field (java.lang.reflect.Field)1 Session (org.hibernate.Session)1 Test (org.junit.Test)1 InvalidDataAccessResourceUsageException (org.springframework.dao.InvalidDataAccessResourceUsageException)1 BaseSpringContextTest (ubic.gemma.core.testing.BaseSpringContextTest)1 AuditEvent (ubic.gemma.model.common.auditAndSecurity.AuditEvent)1 AuditTrail (ubic.gemma.model.common.auditAndSecurity.AuditTrail)1 AuditTrailImpl (ubic.gemma.model.common.auditAndSecurity.AuditTrailImpl)1