diff --git a/gulpfile.js b/gulpfile.js
index 870e99a2..8d6b0610 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -98,8 +98,9 @@ gulp.task('serve', function() {
middleware : function() {
var rest = '^/rest/(.*)$ http://localhost:8083/rest/$1 [P]';
var next = '^/next(.*)$ http://localhost:8083/next$1 [P]';
- var logout = '^/logout(.*)$ http://localhost:8083/logout$1 [P]';
- return [modRewrite([rest, next, logout])];
+ var logout = '^/logout$ http://localhost:8083/logout [P]';
+ var custom_css = '^/custom_css.css$ http://localhost:8083/custom_css.css [P]';
+ return [modRewrite([rest, next, logout, custom_css])];
}
});
});
diff --git a/src/main/app/index.html b/src/main/app/index.html
index 45edb9ce..513a8a23 100644
--- a/src/main/app/index.html
+++ b/src/main/app/index.html
@@ -31,6 +31,7 @@
+
diff --git a/src/main/java/com/commafeed/CommaFeedApplication.java b/src/main/java/com/commafeed/CommaFeedApplication.java
index dbd569bc..5c852ab5 100644
--- a/src/main/java/com/commafeed/CommaFeedApplication.java
+++ b/src/main/java/com/commafeed/CommaFeedApplication.java
@@ -76,6 +76,7 @@ import com.commafeed.frontend.resource.FeedREST;
import com.commafeed.frontend.resource.PubSubHubbubCallbackREST;
import com.commafeed.frontend.resource.ServerREST;
import com.commafeed.frontend.resource.UserREST;
+import com.commafeed.frontend.servlet.CustomCssServlet;
import com.commafeed.frontend.servlet.LogoutServlet;
import com.commafeed.frontend.servlet.NextUnreadServlet;
@@ -194,8 +195,10 @@ public class CommaFeedApplication extends Application {
NextUnreadServlet nextUnreadServlet = new NextUnreadServlet(sessionFactory, feedSubscriptionDAO, feedEntryStatusDAO,
feedCategoryDAO, config);
LogoutServlet logoutServlet = new LogoutServlet(config);
+ CustomCssServlet customCssServlet = new CustomCssServlet(sessionFactory, userSettingsDAO, config);
environment.servlets().addServlet("next", nextUnreadServlet).addMapping("/next");
environment.servlets().addServlet("logout", logoutServlet).addMapping("/logout");
+ environment.servlets().addServlet("customCss", customCssServlet).addMapping("/custom_css.css");
// Tasks
SchedulingService schedulingService = new SchedulingService();
diff --git a/src/main/java/com/commafeed/backend/dao/UserSettingsDAO.java b/src/main/java/com/commafeed/backend/dao/UserSettingsDAO.java
index ac484dd8..0500f1bf 100644
--- a/src/main/java/com/commafeed/backend/dao/UserSettingsDAO.java
+++ b/src/main/java/com/commafeed/backend/dao/UserSettingsDAO.java
@@ -1,18 +1,20 @@
package com.commafeed.backend.dao;
import org.hibernate.SessionFactory;
-import org.hibernate.criterion.Restrictions;
+import com.commafeed.backend.model.QUserSettings;
import com.commafeed.backend.model.User;
import com.commafeed.backend.model.UserSettings;
public class UserSettingsDAO extends GenericDAO {
+ private QUserSettings settings = QUserSettings.userSettings;
+
public UserSettingsDAO(SessionFactory sessionFactory) {
super(sessionFactory);
}
public UserSettings findByUser(User user) {
- return uniqueResult(criteria().add(Restrictions.eq("user", user)));
+ return newQuery().from(settings).where(settings.user.eq(user)).uniqueResult(settings);
}
}
diff --git a/src/main/java/com/commafeed/frontend/servlet/CustomCssServlet.java b/src/main/java/com/commafeed/frontend/servlet/CustomCssServlet.java
new file mode 100644
index 00000000..afdf1b4b
--- /dev/null
+++ b/src/main/java/com/commafeed/frontend/servlet/CustomCssServlet.java
@@ -0,0 +1,47 @@
+package com.commafeed.frontend.servlet;
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import lombok.RequiredArgsConstructor;
+
+import org.hibernate.SessionFactory;
+
+import com.commafeed.CommaFeedApplication;
+import com.commafeed.CommaFeedConfiguration;
+import com.commafeed.backend.dao.UnitOfWork;
+import com.commafeed.backend.dao.UserSettingsDAO;
+import com.commafeed.backend.model.User;
+import com.commafeed.backend.model.UserSettings;
+
+@SuppressWarnings("serial")
+@RequiredArgsConstructor
+public class CustomCssServlet extends HttpServlet {
+
+ private final SessionFactory sessionFactory;
+ private final UserSettingsDAO userSettingsDAO;
+ private final CommaFeedConfiguration config;
+
+ @Override
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+ final User user = (User) req.getSession().getAttribute(CommaFeedApplication.SESSION_USER);
+ if (user == null) {
+ resp.sendRedirect(resp.encodeRedirectURL(config.getApplicationSettings().getPublicUrl()));
+ return;
+ }
+
+ UserSettings settings = new UnitOfWork(sessionFactory) {
+ @Override
+ protected UserSettings runInSession() {
+ return userSettingsDAO.findByUser(user);
+ }
+ }.run();
+
+ resp.setContentType("text/css");
+ resp.getWriter().write(settings.getCustomCss());
+ }
+}