Skip to content

Commit

Permalink
cleanup demo account every 24h (#1014)
Browse files Browse the repository at this point in the history
  • Loading branch information
Athou committed Aug 8, 2022
1 parent a75f726 commit 4c4868a
Show file tree
Hide file tree
Showing 4 changed files with 78 additions and 7 deletions.
2 changes: 2 additions & 0 deletions src/main/java/com/commafeed/CommaFeedModule.java
Expand Up @@ -18,6 +18,7 @@
import com.commafeed.backend.favicon.DefaultFaviconFetcher;
import com.commafeed.backend.favicon.FacebookFaviconFetcher;
import com.commafeed.backend.favicon.YoutubeFaviconFetcher;
import com.commafeed.backend.task.DemoAccountCleanupTask;
import com.commafeed.backend.task.OldEntriesCleanupTask;
import com.commafeed.backend.task.OldStatusesCleanupTask;
import com.commafeed.backend.task.OrphanedContentsCleanupTask;
Expand Down Expand Up @@ -68,6 +69,7 @@ protected void configure() {
taskMultibinder.addBinding().to(OldEntriesCleanupTask.class);
taskMultibinder.addBinding().to(OrphanedFeedsCleanupTask.class);
taskMultibinder.addBinding().to(OrphanedContentsCleanupTask.class);
taskMultibinder.addBinding().to(DemoAccountCleanupTask.class);

ApplicationSettings settings = config.getApplicationSettings();

Expand Down
@@ -1,18 +1,14 @@
package com.commafeed.backend.service;

import java.util.Arrays;

import javax.inject.Inject;
import javax.inject.Singleton;

import org.hibernate.Session;
import org.hibernate.SessionFactory;

import com.commafeed.CommaFeedApplication;
import com.commafeed.CommaFeedConfiguration;
import com.commafeed.backend.dao.UnitOfWork;
import com.commafeed.backend.dao.UserDAO;
import com.commafeed.backend.model.UserRole.Role;

import io.dropwizard.lifecycle.Managed;
import liquibase.Liquibase;
Expand Down Expand Up @@ -77,10 +73,9 @@ public String escapeObjectName(String objectName, Class<? extends DatabaseObject
private void initialData() {
log.info("Populating database with default values");
try {
userService.register(CommaFeedApplication.USERNAME_ADMIN, "admin", "admin@commafeed.com", Arrays.asList(Role.ADMIN, Role.USER),
true);
userService.createAdminUser();
if (config.getApplicationSettings().getCreateDemoAccount()) {
userService.register(CommaFeedApplication.USERNAME_DEMO, "demo", "demo@commafeed.com", Arrays.asList(Role.USER), true);
userService.createDemoUser();
}
} catch (Exception e) {
log.error(e.getMessage(), e);
Expand Down
10 changes: 10 additions & 0 deletions src/main/java/com/commafeed/backend/service/UserService.java
@@ -1,5 +1,6 @@
package com.commafeed.backend.service;

import java.util.Arrays;
import java.util.Collection;
import java.util.Date;
import java.util.Optional;
Expand All @@ -12,6 +13,7 @@
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils;

import com.commafeed.CommaFeedApplication;
import com.commafeed.CommaFeedConfiguration;
import com.commafeed.backend.dao.FeedCategoryDAO;
import com.commafeed.backend.dao.FeedSubscriptionDAO;
Expand Down Expand Up @@ -116,6 +118,14 @@ public User register(String name, String password, String email, Collection<Role
return user;
}

public void createAdminUser() {
register(CommaFeedApplication.USERNAME_ADMIN, "admin", "admin@commafeed.com", Arrays.asList(Role.ADMIN, Role.USER), true);
}

public void createDemoUser() {
register(CommaFeedApplication.USERNAME_DEMO, "demo", "demo@commafeed.com", Arrays.asList(Role.USER), true);
}

public void unregister(User user) {
userSettingsDAO.delete(userSettingsDAO.findByUser(user));
userRoleDAO.delete(userRoleDAO.findAll(user));
Expand Down
@@ -0,0 +1,64 @@
package com.commafeed.backend.task;

import java.util.concurrent.TimeUnit;

import javax.inject.Inject;
import javax.inject.Singleton;

import org.hibernate.SessionFactory;

import com.commafeed.CommaFeedApplication;
import com.commafeed.CommaFeedConfiguration;
import com.commafeed.backend.dao.UnitOfWork;
import com.commafeed.backend.dao.UserDAO;
import com.commafeed.backend.model.User;
import com.commafeed.backend.service.UserService;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

@RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
@Slf4j
public class DemoAccountCleanupTask extends ScheduledTask {

private final CommaFeedConfiguration config;
private final SessionFactory sessionFactory;
private final UserDAO userDAO;
private final UserService userService;

@Override
protected void run() {
if (!config.getApplicationSettings().getCreateDemoAccount()) {
return;
}

log.info("recreating demo user account");
UnitOfWork.run(sessionFactory, () -> {
User demoUser = userDAO.findByName(CommaFeedApplication.USERNAME_DEMO);
if (demoUser == null) {
return;
}

userService.unregister(demoUser);
userService.createDemoUser();
});

}

@Override
protected long getInitialDelay() {
return 1;
}

@Override
protected long getPeriod() {
return getTimeUnit().convert(24, TimeUnit.HOURS);
}

@Override
protected TimeUnit getTimeUnit() {
return TimeUnit.MINUTES;
}

}

0 comments on commit 4c4868a

Please sign in to comment.