Commit 2200ba1d authored by Liang Ding's avatar Liang Ding

🔒 Fix #12887 加密文章摘要泄露问题

parent f8d79b02
...@@ -28,7 +28,7 @@ import org.jsoup.safety.Whitelist; ...@@ -28,7 +28,7 @@ import org.jsoup.safety.Whitelist;
* This class defines all article model relevant keys. * This class defines all article model relevant keys.
* *
* @author <a href="http://88250.b3log.org">Liang Ding</a> * @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.5.0.1, Mar 19, 2019 * @version 1.5.0.2, Sep 12, 2019
* @since 0.3.1 * @since 0.3.1
*/ */
public final class Article { public final class Article {
...@@ -256,6 +256,10 @@ public final class Article { ...@@ -256,6 +256,10 @@ public final class Article {
public static String getAbstractText(final JSONObject article) { public static String getAbstractText(final JSONObject article) {
String content = article.optString(Article.ARTICLE_ABSTRACT); String content = article.optString(Article.ARTICLE_ABSTRACT);
if (StringUtils.isBlank(content)) { if (StringUtils.isBlank(content)) {
if (StringUtils.isNotBlank(article.optString(Article.ARTICLE_VIEW_PWD))) {
return "";
}
content = article.optString(Article.ARTICLE_CONTENT); content = article.optString(Article.ARTICLE_CONTENT);
} }
......
...@@ -24,6 +24,7 @@ import org.b3log.latke.Keys; ...@@ -24,6 +24,7 @@ import org.b3log.latke.Keys;
import org.b3log.latke.Latkes; import org.b3log.latke.Latkes;
import org.b3log.latke.event.Event; import org.b3log.latke.event.Event;
import org.b3log.latke.event.EventManager; import org.b3log.latke.event.EventManager;
import org.b3log.latke.ioc.BeanManager;
import org.b3log.latke.ioc.Inject; import org.b3log.latke.ioc.Inject;
import org.b3log.latke.logging.Level; import org.b3log.latke.logging.Level;
import org.b3log.latke.logging.Logger; import org.b3log.latke.logging.Logger;
...@@ -41,7 +42,6 @@ import org.b3log.latke.util.*; ...@@ -41,7 +42,6 @@ import org.b3log.latke.util.*;
import org.b3log.solo.SoloServletListener; import org.b3log.solo.SoloServletListener;
import org.b3log.solo.model.*; import org.b3log.solo.model.*;
import org.b3log.solo.repository.*; import org.b3log.solo.repository.*;
import org.b3log.solo.util.Emotions;
import org.b3log.solo.util.Markdowns; import org.b3log.solo.util.Markdowns;
import org.b3log.solo.util.Skins; import org.b3log.solo.util.Skins;
import org.b3log.solo.util.Solos; import org.b3log.solo.util.Solos;
...@@ -1034,10 +1034,17 @@ public class DataModelService { ...@@ -1034,10 +1034,17 @@ public class DataModelService {
* @param article the specified article * @param article the specified article
*/ */
private void processArticleAbstract(final JSONObject preference, final JSONObject article) { private void processArticleAbstract(final JSONObject preference, final JSONObject article) {
final String articleAbstract = article.optString(Article.ARTICLE_ABSTRACT, null); final String articleAbstract = article.optString(Article.ARTICLE_ABSTRACT);
if (null == articleAbstract) { if (StringUtils.isBlank(articleAbstract)) {
article.put(Article.ARTICLE_ABSTRACT, ""); article.put(Article.ARTICLE_ABSTRACT, "");
} }
final String articleAbstractText = article.optString(Article.ARTICLE_ABSTRACT_TEXT);
if (StringUtils.isBlank(articleAbstractText)) {
// 发布文章时会自动提取摘要文本,其中如果文章加密且没有写摘要,则自动提取文本会返回空字符串 Article#getAbstractText()
// 所以当且仅当文章加密且没有摘要的情况下 articleAbstractText 会为空
final LangPropsService langPropsService = BeanManager.getInstance().getReference(LangPropsService.class);
article.put(Article.ARTICLE_ABSTRACT_TEXT, langPropsService.get("articleContentPwd"));
}
final String articleListStyle = preference.optString(Option.ID_C_ARTICLE_LIST_STYLE); final String articleListStyle = preference.optString(Option.ID_C_ARTICLE_LIST_STYLE);
if ("titleOnly".equals(articleListStyle)) { if ("titleOnly".equals(articleListStyle)) {
......
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