public String getUser() { return user.asString(); } }
private Optional<JPASieveScript> findSieveScript(User user, ScriptName scriptName, EntityManager entityManager) { try { JPASieveScript sieveScript = entityManager.createNamedQuery("findSieveScript", JPASieveScript.class) .setParameter("username", user.asString()) .setParameter("scriptName", scriptName.getValue()).getSingleResult(); return Optional.ofNullable(sieveScript); } catch (NoResultException e) { LOGGER.debug("Sieve script not found for user {}", user.asString()); return Optional.empty(); } }
@Override public void removeQuota(User user) throws QuotaNotFoundException, StorageException { removeQuotaForUser(user.asString()); }
@Override public boolean hasQuota(User user) throws StorageException { Optional<JPASieveQuota> quotaForUser = findQuotaForUser(user.asString()); return quotaForUser.isPresent(); }
@Override public boolean test(String name, final String password) throws UsersRepositoryException { return Optional.ofNullable(userByName.get(org.apache.james.core.User.fromUsername(name).asString())) .map(user -> user.verifyPassword(password)) .orElse(false); }
/** * Return a {@link MailboxPath} which represent the INBOX of the given * session * * @param session * @return inbox */ public static MailboxPath inbox(MailboxSession session) { return MailboxPath.forUser(session.getUser().asString(), MailboxConstants.INBOX); }
@Override public QuotaRoot forUser(User user) { return QuotaRoot.quotaRoot(MailboxConstants.USER_NAMESPACE + SEPARATOR + user.asString(), user.getDomainPart()); }
public CompletableFuture<Void> unactivate(User user) { return cassandraAsyncExecutor.executeVoid( deleteActive.bind() .setString(USER_NAME, user.asString())); }
@Override public ZonedDateTime getActivationDateForActiveScript(User user) throws StorageException, ScriptNotFoundException { Optional<JPASieveScript> script = findActiveSieveScript(user); JPASieveScript activeSieveScript = script.orElseThrow(() -> new ScriptNotFoundException("Unable to find active script for user " + user.asString())); return activeSieveScript.getActivationDateTime().toZonedDateTime(); }
private void setActiveScript(User user, ScriptName name, EntityManager entityManager) throws StorageException, ScriptNotFoundException { JPASieveScript sieveScript = findSieveScript(user, name, entityManager) .orElseThrow(() -> new ScriptNotFoundException("Unable to find script " + name.getValue() + " for user " + user.asString())); findActiveSieveScript(user, entityManager).ifPresent(JPASieveScript::deactivate); sieveScript.activate(); }
public CompletableFuture<Optional<QuotaSize>> getQuota(User user) { return cassandraAsyncExecutor.executeSingleRow( selectUserQuotaStatement.bind() .setString(CassandraSieveQuotaTable.USER_NAME, user.asString())) .thenApply(optional -> optional.map(row -> QuotaSize.size(row.getLong(CassandraSieveQuotaTable.QUOTA)))); }
@Before public void setUp() throws Exception { sieveRepository = mock(SieveRepository.class); sieveParser = mock(SieveParser.class); usersRepository = mock(UsersRepository.class); initializeMailet(); when(usersRepository.contains(USER.asString())).thenReturn(true); }
private static void createSubSubMailboxes(MailboxManager mailboxManager,MailboxSession mailboxSession, String subFolderName) { IntStream.range(0, SUB_SUB_MAILBOXES_COUNT) .mapToObj(i -> subFolderName + ".SUBSUB_FOLDER_" + i) .forEach(name -> createMailbox(mailboxManager, mailboxSession, MailboxPath.forUser(mailboxSession.getUser().asString(), name))); }
public static Builder privateMailboxesBuilder(MailboxSession session) { return builder() .namespace(MailboxConstants.USER_NAMESPACE) .username(session.getUser().asString()) .matchesAllMailboxNames(); }
private Optional<JPASieveScript> findActiveSieveScript(User user) throws StorageException { return transactionRunner.runAndRetrieveResult( Throwing.<EntityManager, Optional<JPASieveScript>>function(entityManager -> findActiveSieveScript(user, entityManager)).sneakyThrow(), throwStorageException("Unable to find active script for user " + user.asString())); }
@Override public MailAddress getMailAddressFor(User user) throws UsersRepositoryException { try { if (supportVirtualHosting()) { return new MailAddress(user.asString()); } return new MailAddress(user.getLocalPart(), domainList.getDefaultDomain()); } catch (Exception e) { throw new UsersRepositoryException("Failed to compute mail address associated with the user", e); } } }
private Mail createUnauthenticatedMail(MimeMessage message) throws Exception { return FakeMail.builder() .mimeMessage(message) .sender(USER.asString()) .recipient(SIEVE_LOCALHOST) .build(); }
@Test void getPerUserQuotaShouldReturn204WhenNoQuotaSetForUser() { given() .get("/sieve/quota/users/" + USER_A.asString()) .then() .statusCode(HttpStatus.NO_CONTENT_204); }
@Test public final void testGetScriptNoScript() throws Exception { doThrow(new ScriptNotFoundException()).when(sieveRepository).getScript(USER, SCRIPT_NAME); MimeMessage message = prepareMimeMessage("GETSCRIPT \"" + SCRIPT_NAME.getValue() + "\""); Mail mail = createUnauthenticatedMail(message); mail.setAttribute(Mail.SMTP_AUTH_USER_ATTRIBUTE_NAME, USER.asString()); mailet.service(mail); ensureResponse("Re: GETSCRIPT \"" + SCRIPT_NAME.getValue() + "\"", "NO (NONEXISTENT) \"There is no script by that name\""); }
@Test void removePerUserSieveQuotaShouldRemoveQuotaForUser() throws Exception { sieveRepository.setQuota(USER_A, QuotaSize.size(1024)); given() .delete("/sieve/quota/users/" + USER_A.asString()) .then() .statusCode(HttpStatus.NO_CONTENT_204); } }