Package org.projectforge.user

Examples of org.projectforge.user.LoginResult


   * @return i18n key of the validation error message if not successfully logged in, otherwise null.
   */
  public static LoginResultStatus internalCheckLogin(final WebPage page, final UserDao userDao, final String username, final String password,
      final boolean userWantsToStayLoggedIn, final Class< ? extends WebPage> defaultPage)
  {
    final LoginResult loginResult = Login.getInstance().checkLogin(username, password);
    final PFUserDO user = loginResult.getUser();
    if (user == null || loginResult.getLoginResultStatus() != LoginResultStatus.SUCCESS) {
      return loginResult.getLoginResultStatus();
    }
    if (UserFilter.isUpdateRequiredFirst() == true) {
      internalLogin(page, user);
      log.info("Admin login for maintenance (data-base update) successful for user '" + username + "'.");
      throw new RestartResponseException(SystemUpdatePage.class);
View Full Code Here


   * @see org.projectforge.user.LoginHandler#checkLogin(java.lang.String, java.lang.String, boolean)
   */
  @Override
  public LoginResult checkLogin(final String username, final String password)
  {
    final LoginResult loginResult = loginDefaultHandler.checkLogin(username, password);
    if (loginResult.getLoginResultStatus() != LoginResultStatus.SUCCESS) {
      return loginResult;
    }
    try {
      // User is now logged-in successfully.
      final LdapUser authLdapUser = ldapUserDao.authenticate(username, password, userBase);
      final PFUserDO user = loginResult.getUser();
      final LdapUser ldapUser = PFUserDOConverter.convert(user);
      ldapUser.setOrganizationalUnit(userBase);
      if (authLdapUser == null) {
        log.info("User's credentials in LDAP not up-to-date: " + username + ". Updating LDAP entry...");
        ldapUserDao.createOrUpdate(userBase, ldapUser);
        ldapUserDao.changePassword(ldapUser, null, password);
      } else {
        final String sambaNTPassword = sambaNTPasswords.get(loginResult.getUser().getId());
        if (sambaNTPassword != null) {
          if ("".equals(sambaNTPassword) == true) {
            // sambaNTPassword needed to be set (isn't yet set):
            ldapUserDao.changePassword(ldapUser, null, password);
          } else {
View Full Code Here

  {
    PFUserDO user = userDao.getInternalByName(username);
    if (user != null && user.isLocalUser() == true) {
      return loginDefaultHandler.checkLogin(username, password);
    }
    final LoginResult loginResult = new LoginResult();
    final String organizationalUnits = ldapConfig.getUserBase();
    final LdapUser ldapUser = ldapUserDao.authenticate(username, password, organizationalUnits);
    if (ldapUser == null) {
      log.info("User login failed: " + username);
      return loginResult.setLoginResultStatus(LoginResultStatus.FAILED);
    }
    log.info("LDAP authentication was successful for: " + username);
    user = userDao.getInternalByName(username); // Get again (may-be the user does no exist since last call of getInternalByName(String).
    if (user == null) {
      log.info("LDAP user '" + username + "' doesn't yet exist in ProjectForge's data base. Creating new user...");
      user = PFUserDOConverter.convert(ldapUser);
      user.setId(null); // Force new id.
      if (mode == Mode.SIMPLE || ldapConfig.isStorePasswords() == false) {
        user.setNoPassword();
      } else {
        userDao.createEncryptedPassword(user, password);
      }
      userDao.internalSave(user);
    } else if (mode != Mode.SIMPLE) {
      PFUserDOConverter.copyUserFields(PFUserDOConverter.convert(ldapUser), user);
      if (ldapConfig.isStorePasswords() == true) {
        userDao.createEncryptedPassword(user, password);
      }
      userDao.internalUpdate(user);
      if (user.hasSystemAccess() == false) {
        log.info("User has no system access (is deleted/deactivated): " + user.getDisplayUsername());
        return loginResult.setLoginResultStatus(LoginResultStatus.LOGIN_EXPIRED);
      }
    }
    loginResult.setUser(user);
    if (mode == Mode.USER_GROUPS) {
      // TODO: Groups: Get groups of user.
    }
    return loginResult.setLoginResultStatus(LoginResultStatus.SUCCESS).setUser(user);
  }
View Full Code Here

    assertMembers(ldapGroup, "ldapMaster1", "ldapMaster3,ou=restricted", "ldapMaster4");
    Assert.assertEquals("ldapMasterGroupRenamed1", ldapGroup.getCommonName());

    // Change password
    final PFUserDO user1 = userDao.getById(userId1);
    final LoginResult loginResult = Login.getInstance().checkLogin(user1.getUsername(), "test123");
    Assert.assertEquals(LoginResultStatus.SUCCESS, loginResult.getLoginResultStatus());
    Assert.assertNotNull(ldapUserDao.authenticate(user1.getUsername(), "test123"));
    Login.getInstance().passwordChanged(user1, "newpassword");
    Assert.assertNotNull(ldapUserDao.authenticate(user1.getUsername(), "newpassword"));

    // Delete all groups
View Full Code Here

  {
    logon(TEST_ADMIN_USER);
    Assert.assertNull("If failed, a previous test run didn't cleared the data-base.", userDao.getUserGroupCache().getUser(testUsername));

    // Check failed login:
    LoginResult result = loginHandler.checkLogin(testUsername, "fail");
    Assert.assertEquals("User login failed against LDAP therefore login should be failed.", LoginResultStatus.FAILED,
        result.getLoginResultStatus());

    // Check successful login for new ProjectForge users:
    result = loginHandler.checkLogin(testUsername, "successful");
    Assert.assertEquals(LoginResultStatus.SUCCESS, result.getLoginResultStatus());
    Assert.assertNotNull("User should be returned.", result.getUser());
    PFUserDO user = userDao.getInternalByName(testUsername);
    Assert.assertNotNull("User should be created by login handler.", user);
    Assert.assertEquals(testUsername, user.getUsername());
    Assert.assertEquals(result.getUser().getId(), user.getId());

    // Check successful login for existing ProjectForge users:
    result = loginHandler.checkLogin(testUsername, "successful");
    Assert.assertEquals(LoginResultStatus.SUCCESS, result.getLoginResultStatus());
    Assert.assertNotNull("User should be returned.", result.getUser());
    user = userDao.getInternalByName(testUsername);
    Assert.assertNotNull("User should be created by login handler.", user);
    Assert.assertEquals(testUsername, user.getUsername());
    Assert.assertEquals(result.getUser().getId(), user.getId());

    // Check that LDAP is ignored for local users:
    user.setLocalUser(true);
    userDao.internalUpdate(user);
    result = loginHandler.checkLogin(testUsername, "successful");
    Assert.assertEquals("User is a local user, thus the LDAP authentication should be ignored.", LoginResultStatus.FAILED,
        result.getLoginResultStatus());
    userDao.createEncryptedPassword(user, "test");
    userDao.internalUpdate(user);
    result = loginHandler.checkLogin(testUsername, "test");
    Assert.assertEquals("User is a local user, thus authentication should be done by the login default handler.",
        LoginResultStatus.SUCCESS, result.getLoginResultStatus());
    user = result.getUser();
    Assert.assertEquals(testUsername, user.getUsername());
  }
View Full Code Here

  @Test
  public void loginInMockedSlaveMode()
  {
    final String userBase = "ou=pf-mock-test-users";
    final LdapUserDao ldapUserDao = mock(LdapUserDao.class);
    LoginResult loginResult;
    final LdapUser kai = (LdapUser) new LdapUser().setUid("kai").setDescription("Developer").setGivenName("Kai")
        .setMail("k.reinhard@acme.com").setOrganization("Micromata").setSurname("Reinhard");
    when(ldapUserDao.authenticate("kai", "successful", userBase)).thenReturn(kai);
    when(ldapUserDao.authenticate("kai", "fail", userBase)).thenReturn(null);
    when(ldapUserDao.findByUsername("kai", userBase)).thenReturn(kai);
    final LdapSlaveLoginHandler loginHandler = new LdapSlaveLoginHandler();
    loginHandler.ldapUserDao = ldapUserDao;
    loginHandler.ldapConfig = new LdapConfig().setUserBase(userBase);
    loginHandler.userDao = userDao;
    Assert.assertEquals(LoginResultStatus.FAILED, loginHandler.checkLogin("kai", "fail").getLoginResultStatus());

    Assert.assertFalse("User shouldn't be available yet in the data-base.",
        userDao.doesUsernameAlreadyExist(new PFUserDO().setUsername("kai")));
    loginResult = loginHandler.checkLogin("kai", "successful");
    Assert.assertEquals(LoginResultStatus.SUCCESS, loginResult.getLoginResultStatus());
    LdapTestUtils.assertUser(loginResult.getUser(), "kai", "Kai", "Reinhard", "k.reinhard@acme.com", "Micromata", "Developer");
    Assert.assertTrue("User should be created in data-base as a new user (in ldap).",
        userDao.doesUsernameAlreadyExist(new PFUserDO().setUsername("kai")));
    final PFUserDO user = userDao.getInternalByName("kai");
    LdapTestUtils.assertUser(user, "kai", "Kai", "Reinhard", "k.reinhard@acme.com", "Micromata", "Developer");
    Assert.assertEquals(userDao.checkPassword(user, "successful"), PasswordCheckResult.OK);
View Full Code Here

    logon(TEST_ADMIN_USER);
    Assert.assertNull("If failed, a previous test run didn't cleared the data-base.", userDao.getUserGroupCache().getUser(testUsername1));
    Assert.assertNull("If failed, a previous test run didn't cleared the data-base.", userDao.getUserGroupCache().getUser(testUsername2));

    // Check failed login:
    LoginResult result = loginHandler.checkLogin(testUsername1, "fail");
    Assert.assertEquals("User login failed against LDAP therefore login should be failed.", LoginResultStatus.FAILED,
        result.getLoginResultStatus());

    // Check successful login for new ProjectForge users:
    result = loginHandler.checkLogin(testUsername1, "successful");
    Assert.assertEquals(LoginResultStatus.SUCCESS, result.getLoginResultStatus());
    Assert.assertNotNull("User should be returned.", result.getUser());
    synchronizeLdapUsers(loginHandler);
    PFUserDO user = userDao.authenticateUser(testUsername1, "successful");
    Assert.assertNotNull("User should be created by login handler.", user);
    Assert.assertEquals(testUsername1, user.getUsername());
    result = loginHandler.checkLogin(testUsername1, "successful");
    Assert.assertEquals(result.getUser().getId(), user.getId());
    user = userDao.getInternalByName(testUsername2);
    result = loginHandler.checkLogin(testUsername2, "successful");
    Assert.assertNotNull("User should be created by login handler.", user);
    Assert.assertEquals(testUsername2, user.getUsername());
    Assert.assertEquals(result.getUser().getId(), user.getId());

    // Delete user2
    ldapUserDao.delete(ldapUser2);
    synchronizeLdapUsers(loginHandler);
    user = userDao.getInternalByName(testUsername2);
    Assert.assertTrue("User isn't available in LDAP, therefore should be deleted.", user.isDeleted());
    createLdapUser(ldapUser2, "successful");
    synchronizeLdapUsers(loginHandler);
    user = userDao.getInternalByName(testUsername2);
    Assert.assertFalse("User isn't available in LDAP, therefore should be deleted.", user.isDeleted());

    // Check that LDAP is ignored for local users:
    user.setLocalUser(true);
    userDao.createEncryptedPassword(user, "test");
    userDao.internalUpdate(user);
    result = loginHandler.checkLogin(testUsername2, "successful");
    Assert.assertEquals("User is a local user, thus the LDAP authentication should be ignored.", LoginResultStatus.FAILED,
        result.getLoginResultStatus());
    result = loginHandler.checkLogin(testUsername2, "test");
    Assert.assertEquals("User is a local user, thus the data-base authentication should be used.", LoginResultStatus.SUCCESS,
        result.getLoginResultStatus());

    // Delete all users
    ldapUserDao.delete(ldapUser1);
    ldapUserDao.delete(ldapUser2);
  }
View Full Code Here

TOP

Related Classes of org.projectforge.user.LoginResult

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.