Commit 62c17b5d authored by Liang Ding's avatar Liang Ding

🎨 #12527

parent d8f875ff
......@@ -38,6 +38,7 @@ import org.b3log.latke.service.LangPropsService;
import org.b3log.latke.service.ServiceException;
import org.b3log.latke.servlet.HTTPRequestContext;
import org.b3log.latke.servlet.HTTPRequestMethod;
import org.b3log.latke.servlet.annotation.Before;
import org.b3log.latke.servlet.annotation.RequestProcessing;
import org.b3log.latke.servlet.annotation.RequestProcessor;
import org.b3log.latke.servlet.renderer.freemarker.AbstractFreeMarkerRenderer;
......@@ -48,6 +49,7 @@ import org.b3log.solo.model.Common;
import org.b3log.solo.model.Option;
import org.b3log.solo.model.Skin;
import org.b3log.solo.model.UserExt;
import org.b3log.solo.processor.console.common.ConsoleAuthAdvice;
import org.b3log.solo.processor.renderer.ConsoleRenderer;
import org.b3log.solo.processor.util.Filler;
import org.b3log.solo.service.ExportService;
......@@ -73,10 +75,11 @@ import java.util.*;
* Admin console render processing.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.7.0.4, Aug 8, 2018
* @version 1.7.0.5, Sep 25, 2018
* @since 0.4.1
*/
@RequestProcessor
@Before(adviceClass = ConsoleAuthAdvice.class)
public class AdminConsole {
/**
......@@ -141,26 +144,18 @@ public class AdminConsole {
@RequestProcessing(value = "/admin-index.do", method = HTTPRequestMethod.GET)
public void showAdminIndex(final HttpServletRequest request, final HTTPRequestContext context) {
final AbstractFreeMarkerRenderer renderer = new ConsoleRenderer();
context.setRenderer(renderer);
final String templateName = "admin-index.ftl";
renderer.setTemplateName(templateName);
final Map<String, String> langs = langPropsService.getAll(Latkes.getLocale());
final Map<String, Object> dataModel = renderer.getDataModel();
dataModel.putAll(langs);
final JSONObject currentUser = userQueryService.getCurrentUser(request);
final String userName = currentUser.optString(User.USER_NAME);
dataModel.put(User.USER_NAME, userName);
final String roleName = currentUser.optString(User.USER_ROLE);
dataModel.put(User.USER_ROLE, roleName);
final String email = currentUser.optString(User.USER_EMAIL);
final String userAvatar = currentUser.optString(UserExt.USER_AVATAR);
if (StringUtils.isNotBlank(userAvatar)) {
dataModel.put(Common.GRAVATAR, userAvatar);
......@@ -171,7 +166,6 @@ public class AdminConsole {
try {
final JSONObject preference = preferenceQueryService.getPreference();
dataModel.put(Option.ID_C_LOCALE_STRING, preference.getString(Option.ID_C_LOCALE_STRING));
dataModel.put(Option.ID_C_BLOG_TITLE, preference.getString(Option.ID_C_BLOG_TITLE));
dataModel.put(Option.ID_C_BLOG_SUBTITLE, preference.getString(Option.ID_C_BLOG_SUBTITLE));
......@@ -183,7 +177,6 @@ public class AdminConsole {
dataModel.put(Option.ID_C_LOCALE_STRING, preference.getString(Option.ID_C_LOCALE_STRING));
dataModel.put(Option.ID_C_EDITOR_TYPE, preference.getString(Option.ID_C_EDITOR_TYPE));
dataModel.put(Skin.SKIN_DIR_NAME, preference.getString(Skin.SKIN_DIR_NAME));
Keys.fillRuntime(dataModel);
filler.fillMinified(dataModel);
} catch (final Exception e) {
......
......@@ -31,7 +31,7 @@ import org.b3log.latke.servlet.annotation.RequestProcessing;
import org.b3log.latke.servlet.annotation.RequestProcessor;
import org.b3log.latke.servlet.renderer.JSONRenderer;
import org.b3log.latke.util.Requests;
import org.b3log.solo.processor.console.common.ProcessAuthAdvice;
import org.b3log.solo.processor.console.common.ConsoleAuthAdvice;
import org.b3log.solo.processor.renderer.ConsoleRenderer;
import org.b3log.solo.service.PluginMgmtService;
import org.b3log.solo.service.PluginQueryService;
......@@ -45,12 +45,12 @@ import java.util.Map;
* Plugin console request processing.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @author <a href="mailto:wmainlove@gmail.com">Love Yao</a>
* @author <a href="https://hacpai.com/member/mainlove">Love Yao</a>
* @version 1.1.0.2, Sep 20, 2018
* @since 0.4.0
*/
@RequestProcessor
@Before(adviceClass = ProcessAuthAdvice.class)
@Before(adviceClass = ConsoleAuthAdvice.class)
public class PluginConsole {
/**
......
......@@ -17,47 +17,50 @@
*/
package org.b3log.solo.processor.console.common;
import org.b3log.latke.Keys;
import org.b3log.latke.ioc.LatkeBeanManager;
import org.b3log.latke.ioc.Lifecycle;
import org.b3log.latke.ioc.inject.Named;
import org.b3log.latke.ioc.inject.Singleton;
import org.b3log.latke.logging.Level;
import org.b3log.latke.logging.Logger;
import org.b3log.latke.servlet.HTTPRequestContext;
import org.b3log.latke.servlet.advice.BeforeRequestProcessAdvice;
import org.b3log.latke.servlet.advice.RequestProcessAdviceException;
import org.b3log.solo.service.UserQueryService;
import org.json.JSONObject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
/**
* The common auth check before advice for admin console.
*
* @author <a href="mailto:wmainlove@gmail.com">Love Yao</a>
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.0.1.1, Sep 25, 2018
* @since 2.9.5
*/
@Named
@Singleton
public class ProcessAuthAdvice extends BeforeRequestProcessAdvice {
public class ConsoleAuthAdvice extends BeforeRequestProcessAdvice {
/**
* Logger.
*/
private static final Logger LOGGER = Logger.getLogger(ProcessAuthAdvice.class);
private static final Logger LOGGER = Logger.getLogger(ConsoleAuthAdvice.class);
@Override
public void doAdvice(final HTTPRequestContext context, final Map<String, Object> args) {
public void doAdvice(final HTTPRequestContext context, final Map<String, Object> args) throws RequestProcessAdviceException {
final LatkeBeanManager beanManager = Lifecycle.getBeanManager();
final UserQueryService userQueryService = beanManager.getReference(UserQueryService.class);
if (!userQueryService.isAdminLoggedIn(context.getRequest())) {
try {
context.getResponse().sendError(HttpServletResponse.SC_FORBIDDEN);
} catch (final IOException e) {
LOGGER.log(Level.ERROR, "Response sends error failed", e);
}
final HttpServletRequest request = context.getRequest();
if (!userQueryService.isLoggedIn(request, context.getResponse())) {
final JSONObject exception401 = new JSONObject();
exception401.put(Keys.MSG, "Unauthorized to request [" + request.getRequestURI() + "]");
exception401.put(Keys.STATUS_CODE, HttpServletResponse.SC_UNAUTHORIZED);
throw new RequestProcessAdviceException(exception401);
}
}
}
......@@ -46,27 +46,6 @@
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>AuthFilter</filter-name>
<filter-class>org.b3log.solo.filter.AuthFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>AuthFilter</filter-name>
<url-pattern>/admin-index.do</url-pattern>
<url-pattern>/admin-main.do</url-pattern>
<url-pattern>/admin-article.do</url-pattern>
<url-pattern>/admin-article-list.do</url-pattern>
<url-pattern>/admin-comment-list.do</url-pattern>
<url-pattern>/admin-link-list.do</url-pattern>
<url-pattern>/admin-preference.do</url-pattern>
<url-pattern>/admin-page-list.do</url-pattern>
<url-pattern>/admin-others.do</url-pattern>
<url-pattern>/admin-draft-list.do</url-pattern>
<url-pattern>/admin-user-list.do</url-pattern>
<url-pattern>/admin-plugin-list.do</url-pattern>
<url-pattern>/admin-about.do</url-pattern>
<url-pattern>/fix/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>PermalinkFilter</filter-name>
<filter-class>org.b3log.solo.filter.PermalinkFilter</filter-class>
......
......@@ -81,7 +81,7 @@
<ul>
<li><a target="_blank" href="http://88250.b3log.org">D</a></li>
<li><a target="_blank" href="http://vanessa.b3log.org">V</a></li>
<li><a target="_blank" href="mailto:wmainlove@gmail.com">mainlove</a></li>
<li><a target="_blank" href="https://hacpai.com/member/mainlove">mainlove</a></li>
<li><a target="_blank" href="http://people.apache.org/%7Edongxu">DX</a></li>
<li><a target="_blank" href="http://mizhichashao.com">大叔</a></li>
<li><a target="_blank" href="http://www.jiangzezhou.com">javen.jiang</a></li>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment