Search in sources :

Example 11 with UserIndexKey

use of org.onebusaway.users.model.UserIndexKey in project onebusaway-application-modules by camsys.

the class PhoneNumberLoginInterceptor method isCurrentUserLoggedInWithKey.

private boolean isCurrentUserLoggedInWithKey(UserIndexKey key) {
    Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
    if (authentication == null)
        return false;
    Object principal = authentication.getPrincipal();
    if (!(principal instanceof IndexedUserDetails))
        return false;
    IndexedUserDetails details = (IndexedUserDetails) principal;
    UserIndexKey indexKey = details.getUserIndexKey();
    return indexKey.equals(key);
}
Also used : UserIndexKey(org.onebusaway.users.model.UserIndexKey) IndexedUserDetails(org.onebusaway.users.model.IndexedUserDetails) Authentication(org.springframework.security.core.Authentication)

Example 12 with UserIndexKey

use of org.onebusaway.users.model.UserIndexKey in project onebusaway-application-modules by camsys.

the class PhoneNumberLoginInterceptor method intercept.

@Override
public String intercept(ActionInvocation invocation) throws Exception {
    ActionContext context = invocation.getInvocationContext();
    Map<String, Object> params = context.getParameters();
    String phoneNumber = getPhoneNumber(params);
    phoneNumber = PhoneNumberLibrary.normalizePhoneNumber(phoneNumber);
    if (phoneNumber != null && phoneNumber.length() > 0) {
        UserIndexKey key = new UserIndexKey(UserIndexTypes.PHONE_NUMBER, phoneNumber);
        if (params.containsKey(RESET_USER))
            _indexedUserDetailsService.resetUserForIndexKey(key);
        // Ensure that we have authentication, even if it's anonymous
        if (!isCurrentUserLoggedInWithKey(key)) {
            IndexedUserDetails userDetails = _indexedUserDetailsService.getOrCreateUserForIndexKey(key, "", false);
            DefaultUserAuthenticationToken token = new DefaultUserAuthenticationToken(userDetails);
            SecurityContextHolder.getContext().setAuthentication(token);
        }
    }
    return invocation.invoke();
}
Also used : UserIndexKey(org.onebusaway.users.model.UserIndexKey) IndexedUserDetails(org.onebusaway.users.model.IndexedUserDetails) DefaultUserAuthenticationToken(org.onebusaway.users.impl.authentication.DefaultUserAuthenticationToken) ActionContext(com.opensymphony.xwork2.ActionContext)

Example 13 with UserIndexKey

use of org.onebusaway.users.model.UserIndexKey in project onebusaway-application-modules by camsys.

the class UserDaoImplTest method testTransitionUserIndex.

@Test
public void testTransitionUserIndex() {
    User userA = new User();
    userA.setCreationTime(new Date());
    userA.setProperties(new UserPropertiesV2());
    UserIndex index = new UserIndex();
    index.setId(new UserIndexKey("test", "A"));
    index.setUser(userA);
    userA.getUserIndices().add(index);
    _dao.saveOrUpdateUser(userA);
    User userB = new User();
    userB.setCreationTime(new Date());
    userB.setProperties(new UserPropertiesV2());
    _dao.saveOrUpdateUser(userB);
    assertEquals(1, _dao.getUserForId(userA.getId()).getUserIndices().size());
    assertEquals(0, _dao.getUserForId(userB.getId()).getUserIndices().size());
    index.setUser(userB);
    userA.getUserIndices().remove(index);
    userB.getUserIndices().add(index);
    _dao.saveOrUpdateUsers(userA, userB);
    assertEquals(0, _dao.getUserForId(userA.getId()).getUserIndices().size());
    assertEquals(1, _dao.getUserForId(userB.getId()).getUserIndices().size());
}
Also used : UserIndex(org.onebusaway.users.model.UserIndex) UserIndexKey(org.onebusaway.users.model.UserIndexKey) User(org.onebusaway.users.model.User) UserPropertiesV2(org.onebusaway.users.model.properties.UserPropertiesV2) Date(java.util.Date) Test(org.junit.Test)

Example 14 with UserIndexKey

use of org.onebusaway.users.model.UserIndexKey in project onebusaway-application-modules by camsys.

the class UserServiceImplTest method testCompletePhoneNumberRegistration.

@Test
public void testCompletePhoneNumberRegistration() {
    User userA = createUser(1234);
    UserIndexKey key = new UserIndexKey(UserIndexTypes.PHONE_NUMBER, "12065551234");
    UserDao userDao = Mockito.mock(UserDao.class);
    _service.setUserDao(userDao);
    Mockito.when(userDao.getUserForId(1234)).thenReturn(userA);
    UserIndex migratedIndex = new UserIndex();
    migratedIndex.setId(key);
    migratedIndex.setUser(userA);
    migratedIndex.setCredentials("");
    Mockito.when(userDao.getUserIndexForId(key)).thenReturn(migratedIndex);
    UserIndexRegistrationService registrationService = Mockito.mock(UserIndexRegistrationService.class);
    _service.setUserIndexRegistrationService(registrationService);
    UserRegistration registration = new UserRegistration(1234, "5555");
    Mockito.when(registrationService.getRegistrationForUserIndexKey(key)).thenReturn(registration);
    UserPropertiesService userPropertiesService = Mockito.mock(UserPropertiesService.class);
    _service.setUserPropertiesService(userPropertiesService);
    User userB = createUser(1235);
    UserIndex index = createUserIndex(key.getType(), key.getValue(), userB);
    UserIndex updated = _service.completePhoneNumberRegistration(index, "5554");
    assertTrue(updated == null);
    updated = _service.completePhoneNumberRegistration(index, "5555");
    assertTrue(updated != null);
    Mockito.verify(userPropertiesService).mergeProperties(userB, userA);
}
Also used : UserIndex(org.onebusaway.users.model.UserIndex) UserIndexKey(org.onebusaway.users.model.UserIndexKey) User(org.onebusaway.users.model.User) UserIndexRegistrationService(org.onebusaway.users.services.internal.UserIndexRegistrationService) UserDao(org.onebusaway.users.services.UserDao) UserPropertiesService(org.onebusaway.users.services.UserPropertiesService) UserRegistration(org.onebusaway.users.services.internal.UserRegistration) Test(org.junit.Test)

Example 15 with UserIndexKey

use of org.onebusaway.users.model.UserIndexKey in project onebusaway-application-modules by camsys.

the class UserServiceImplTest method testRegisterPhoneNumber.

@Test
public void testRegisterPhoneNumber() {
    User user = createUser(1234);
    double total = 0;
    int n = 100;
    for (int i = 0; i < n; i++) {
        UserIndexRegistrationService registration = Mockito.mock(UserIndexRegistrationService.class);
        _service.setUserIndexRegistrationService(registration);
        String code = _service.registerPhoneNumber(user, "+12065551234");
        UserIndexKey key = new UserIndexKey(UserIndexTypes.PHONE_NUMBER, "12065551234");
        Mockito.verify(registration).setRegistrationForUserIndexKey(key, 1234, code);
        int codeAsNumber = Integer.parseInt(code);
        assertTrue(codeAsNumber >= 1000);
        assertTrue(codeAsNumber <= 9999);
        total += codeAsNumber;
    }
    double mu = total / n;
    assertEquals(5500, mu, 1000);
}
Also used : UserIndexKey(org.onebusaway.users.model.UserIndexKey) User(org.onebusaway.users.model.User) UserIndexRegistrationService(org.onebusaway.users.services.internal.UserIndexRegistrationService) Test(org.junit.Test)

Aggregations

UserIndexKey (org.onebusaway.users.model.UserIndexKey)30 UserIndex (org.onebusaway.users.model.UserIndex)22 User (org.onebusaway.users.model.User)16 UserBean (org.onebusaway.users.client.model.UserBean)6 IOException (java.io.IOException)5 WebApplicationException (javax.ws.rs.WebApplicationException)5 JsonGenerationException (org.codehaus.jackson.JsonGenerationException)5 JsonMappingException (org.codehaus.jackson.map.JsonMappingException)5 Test (org.junit.Test)4 IndexedUserDetails (org.onebusaway.users.model.IndexedUserDetails)3 ArrayList (java.util.ArrayList)2 Date (java.util.Date)2 PostConstruct (javax.annotation.PostConstruct)2 GET (javax.ws.rs.GET)2 Path (javax.ws.rs.Path)2 Produces (javax.ws.rs.Produces)2 Response (javax.ws.rs.core.Response)2 DefaultUserAuthenticationToken (org.onebusaway.users.impl.authentication.DefaultUserAuthenticationToken)2 UserRole (org.onebusaway.users.model.UserRole)2 UserPropertiesV2 (org.onebusaway.users.model.properties.UserPropertiesV2)2