mirror of
https://github.com/Athou/commafeed.git
synced 2026-03-21 21:37:29 +00:00
Extract afterLogin into a separate class
This commit is contained in:
@@ -12,7 +12,6 @@ import lombok.RequiredArgsConstructor;
|
|||||||
|
|
||||||
import org.apache.commons.codec.digest.DigestUtils;
|
import org.apache.commons.codec.digest.DigestUtils;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.apache.commons.lang.time.DateUtils;
|
|
||||||
|
|
||||||
import com.commafeed.CommaFeedConfiguration;
|
import com.commafeed.CommaFeedConfiguration;
|
||||||
import com.commafeed.backend.dao.FeedCategoryDAO;
|
import com.commafeed.backend.dao.FeedCategoryDAO;
|
||||||
@@ -21,6 +20,7 @@ import com.commafeed.backend.dao.UserSettingsDAO;
|
|||||||
import com.commafeed.backend.model.User;
|
import com.commafeed.backend.model.User;
|
||||||
import com.commafeed.backend.model.UserRole;
|
import com.commafeed.backend.model.UserRole;
|
||||||
import com.commafeed.backend.model.UserRole.Role;
|
import com.commafeed.backend.model.UserRole.Role;
|
||||||
|
import com.commafeed.backend.service.internal.PostLoginActivities;
|
||||||
import com.google.common.base.Optional;
|
import com.google.common.base.Optional;
|
||||||
import com.google.common.base.Preconditions;
|
import com.google.common.base.Preconditions;
|
||||||
|
|
||||||
@@ -107,25 +107,7 @@ public class UserService {
|
|||||||
* Note: Visibility changed to package private to enabled spying on this method
|
* Note: Visibility changed to package private to enabled spying on this method
|
||||||
*/
|
*/
|
||||||
void afterLogin(User user) {
|
void afterLogin(User user) {
|
||||||
Date lastLogin = user.getLastLogin();
|
new PostLoginActivities(userDAO, feedSubscriptionService, config).afterLogin(user);
|
||||||
Date now = new Date();
|
|
||||||
|
|
||||||
boolean saveUser = false;
|
|
||||||
// only update lastLogin field every hour in order to not
|
|
||||||
// invalidate the cache everytime someone logs in
|
|
||||||
if (lastLogin == null || lastLogin.before(DateUtils.addHours(now, -1))) {
|
|
||||||
user.setLastLogin(now);
|
|
||||||
saveUser = true;
|
|
||||||
}
|
|
||||||
if (config.getApplicationSettings().isHeavyLoad()
|
|
||||||
&& (user.getLastFullRefresh() == null || user.getLastFullRefresh().before(DateUtils.addMinutes(now, -30)))) {
|
|
||||||
user.setLastFullRefresh(now);
|
|
||||||
saveUser = true;
|
|
||||||
feedSubscriptionService.refreshAll(user);
|
|
||||||
}
|
|
||||||
if (saveUser) {
|
|
||||||
userDAO.merge(user);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public User register(String name, String password, String email, Collection<Role> roles) {
|
public User register(String name, String password, String email, Collection<Role> roles) {
|
||||||
|
|||||||
@@ -0,0 +1,45 @@
|
|||||||
|
package com.commafeed.backend.service.internal;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.time.DateUtils;
|
||||||
|
|
||||||
|
import com.commafeed.CommaFeedConfiguration;
|
||||||
|
import com.commafeed.backend.dao.UserDAO;
|
||||||
|
import com.commafeed.backend.model.User;
|
||||||
|
import com.commafeed.backend.service.FeedSubscriptionService;
|
||||||
|
|
||||||
|
@RequiredArgsConstructor(onConstructor = @__({ @Inject }))
|
||||||
|
public class PostLoginActivities {
|
||||||
|
|
||||||
|
private final UserDAO userDAO;
|
||||||
|
private final FeedSubscriptionService feedSubscriptionService;
|
||||||
|
private final CommaFeedConfiguration config;
|
||||||
|
|
||||||
|
public void afterLogin(User user) {
|
||||||
|
Date lastLogin = user.getLastLogin();
|
||||||
|
Date now = new Date();
|
||||||
|
|
||||||
|
boolean saveUser = false;
|
||||||
|
// only update lastLogin field every hour in order to not
|
||||||
|
// invalidate the cache everytime someone logs in
|
||||||
|
if (lastLogin == null || lastLogin.before(DateUtils.addHours(now, -1))) {
|
||||||
|
user.setLastLogin(now);
|
||||||
|
saveUser = true;
|
||||||
|
}
|
||||||
|
if (config.getApplicationSettings().isHeavyLoad()
|
||||||
|
&& (user.getLastFullRefresh() == null || user.getLastFullRefresh().before(DateUtils.addMinutes(now, -30)))) {
|
||||||
|
user.setLastFullRefresh(now);
|
||||||
|
saveUser = true;
|
||||||
|
feedSubscriptionService.refreshAll(user);
|
||||||
|
}
|
||||||
|
if (saveUser) {
|
||||||
|
userDAO.merge(user);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user