mirror of
https://github.com/Athou/commafeed.git
synced 2026-03-21 21:37:29 +00:00
cache users
This commit is contained in:
@@ -21,7 +21,8 @@ public class UserDAO extends GenericDAO<User> {
|
|||||||
query.where(builder.equal(builder.lower(root.get(User_.name)),
|
query.where(builder.equal(builder.lower(root.get(User_.name)),
|
||||||
name.toLowerCase()));
|
name.toLowerCase()));
|
||||||
TypedQuery<User> q = em.createQuery(query);
|
TypedQuery<User> q = em.createQuery(query);
|
||||||
|
cache(q);
|
||||||
|
|
||||||
User user = null;
|
User user = null;
|
||||||
try {
|
try {
|
||||||
user = q.getSingleResult();
|
user = q.getSingleResult();
|
||||||
@@ -36,7 +37,8 @@ public class UserDAO extends GenericDAO<User> {
|
|||||||
Root<User> root = query.from(getType());
|
Root<User> root = query.from(getType());
|
||||||
query.where(builder.equal(root.get(User_.apiKey), key));
|
query.where(builder.equal(root.get(User_.apiKey), key));
|
||||||
TypedQuery<User> q = em.createQuery(query);
|
TypedQuery<User> q = em.createQuery(query);
|
||||||
|
cache(q);
|
||||||
|
|
||||||
User user = null;
|
User user = null;
|
||||||
try {
|
try {
|
||||||
user = q.getSingleResult();
|
user = q.getSingleResult();
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import javax.inject.Inject;
|
|||||||
|
|
||||||
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.backend.dao.FeedCategoryDAO;
|
import com.commafeed.backend.dao.FeedCategoryDAO;
|
||||||
import com.commafeed.backend.dao.FeedEntryStatusDAO;
|
import com.commafeed.backend.dao.FeedEntryStatusDAO;
|
||||||
@@ -50,12 +51,18 @@ public class UserService {
|
|||||||
boolean authenticated = encryptionService.authenticate(password,
|
boolean authenticated = encryptionService.authenticate(password,
|
||||||
user.getPassword(), user.getSalt());
|
user.getPassword(), user.getSalt());
|
||||||
if (authenticated) {
|
if (authenticated) {
|
||||||
user.setLastLogin(new Date());
|
Date lastLogin = user.getLastLogin();
|
||||||
userDAO.saveOrUpdate(user);
|
Date now = new Date();
|
||||||
|
// 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);
|
||||||
|
userDAO.saveOrUpdate(user);
|
||||||
|
}
|
||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user