From c810401040edd9519bffba3bb02e1e3d3a0d62f1 Mon Sep 17 00:00:00 2001 From: MaxKey Date: Mon, 7 Mar 2022 10:49:30 +0800 Subject: [PATCH] image change to base 64 --- .../ImageCaptchaBase64Endpoint.java | 142 ++++++++++++++++++ .../main/java/org/maxkey/entity/UserInfo.java | 19 ++- .../java/org/maxkey/entity/apps/Apps.java | 19 ++- .../web/contorller/AppListController.java | 2 +- .../web/contorller/ProfileController.java | 2 +- .../templates/views/main/appConfigList.ftl | 2 +- .../templates/views/main/appList.ftl | 4 +- .../templates/views/profile/myProfile.ftl | 2 +- .../contorller/ApplicationsController.java | 2 +- .../contorller/BasicDetailsController.java | 2 +- .../apps/contorller/CasDetailsController.java | 4 +- .../ExtendApiDetailsController.java | 3 +- .../FormBasedDetailsController.java | 2 +- .../apps/contorller/JwtDetailsController.java | 2 +- .../contorller/OAuth20DetailsController.java | 2 +- .../contorller/SAML20DetailsController.java | 2 +- .../TokenBasedDetailsController.java | 2 +- .../contorller/GroupPrivilegesController.java | 4 +- .../web/contorller/UserInfoController.java | 2 +- .../templates/views/apps/appUpdateCommon.ftl | 2 +- .../templates/views/apps/appsList.ftl | 4 +- .../templates/views/apps/selectAppsList.ftl | 4 +- .../views/groupapp/addGroupAppsList.ftl | 4 +- .../views/groupapp/groupAppsList.ftl | 4 +- .../templates/views/userinfo/userUpdate.ftl | 10 +- .../src/main/resources/static/css/base.css | 8 - .../static/javascript/platform.common.js | 30 +++- 27 files changed, 242 insertions(+), 43 deletions(-) create mode 100644 maxkey-authentications/maxkey-authentication-captcha/src/main/java/org/maxkey/web/contorller/ImageCaptchaBase64Endpoint.java diff --git a/maxkey-authentications/maxkey-authentication-captcha/src/main/java/org/maxkey/web/contorller/ImageCaptchaBase64Endpoint.java b/maxkey-authentications/maxkey-authentication-captcha/src/main/java/org/maxkey/web/contorller/ImageCaptchaBase64Endpoint.java new file mode 100644 index 000000000..cce0826f6 --- /dev/null +++ b/maxkey-authentications/maxkey-authentication-captcha/src/main/java/org/maxkey/web/contorller/ImageCaptchaBase64Endpoint.java @@ -0,0 +1,142 @@ +/* + * Copyright [2020] [MaxKey of copyright http://www.maxkey.top] + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +package org.maxkey.web.contorller; + +import com.google.code.kaptcha.Producer; +import java.awt.image.BufferedImage; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.Base64; + +import javax.imageio.ImageIO; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + + +/** + * ImageCaptchaEndpoint Producer captcha. + * @author Crystal.Sea + * + */ +@Controller +public class ImageCaptchaBase64Endpoint { + private static final Logger _logger = LoggerFactory.getLogger(ImageCaptchaBase64Endpoint.class); + + public static final String IMAGE_GIF = "image/gif"; + + public static final String KAPTCHA_SESSION_KEY = "kaptcha_session_key"; + + @Autowired + private Producer captchaProducer; + + /** + * captcha image Producer. + * + * @param request HttpServletRequest + * @param response HttpServletResponse + */ + @RequestMapping(value = "/captcha/base64") + public void captchaHandleRequest(HttpServletRequest request, + HttpServletResponse response, + @RequestParam(value="captcha",required=false,defaultValue="text") String captchaType) { + try { + + String kaptchaText = captchaProducer.createText(); + if (captchaType.equalsIgnoreCase("Arithmetic")) { + Integer intParamA = Integer.valueOf(kaptchaText.substring(0, 1)); + Integer intParamB = Integer.valueOf(kaptchaText.substring(1, 2)); + Integer calculateValue = 0; + if ((intParamA > intParamB) && ((intParamA + intParamB) % 5 > 3)) { + calculateValue = intParamA - intParamB; + kaptchaText = intParamA + "-" + intParamB + "=?"; + } else { + calculateValue = intParamA + intParamB; + kaptchaText = intParamA + "+" + intParamB + "=?"; + } + _logger.trace("Sesssion id " + request.getSession().getId() + + " , Arithmetic calculate Value is " + calculateValue); + request.getSession().setAttribute( + KAPTCHA_SESSION_KEY, calculateValue + ""); + } else { + // store the text in the session + request.getSession().setAttribute(KAPTCHA_SESSION_KEY, kaptchaText); + } + _logger.trace("Sesssion id " + request.getSession().getId() + + " , Captcha Text is " + kaptchaText); + + // create the image with the text + BufferedImage bufferedImage = captchaProducer.createImage(kaptchaText); + producerImage(request,response,bufferedImage); + } catch (Exception e) { + _logger.error("captcha Producer Error " + e.getMessage()); + } + } + + /** + * producerImage. + * @param request HttpServletRequest + * @param response HttpServletResponse + * @param bufferedImage BufferedImage + * @throws IOException error + */ + public static void producerImage(HttpServletRequest request, + HttpServletResponse response, + BufferedImage bufferedImage) throws IOException { + // Set to expire far in the past. + response.setDateHeader("Expires", 0); + // Set standard HTTP/1.1 no-cache headers. + response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate"); + // Set IE extended HTTP/1.1 no-cache headers (use addHeader). + response.addHeader("Cache-Control", "post-check=0, pre-check=0"); + // Set standard HTTP/1.0 no-cache header. + response.setHeader("Pragma", "no-cache"); + // return a jpeg/gif + //response.setContentType(IMAGE_GIF); + _logger.trace("create the image"); + // create the image + if (bufferedImage != null) { + ServletOutputStream out = response.getOutputStream(); + // write the data out + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + ImageIO.write(bufferedImage, "png", stream); + String b64Image = "data:image/png;base64," + Base64.getEncoder().encodeToString(stream.toByteArray()); + out.print(b64Image); + _logger.debug("b64Image {}" , b64Image); + stream.close(); + try { + out.flush(); + } finally { + out.close(); + } + } + } + + public void setCaptchaProducer(Producer captchaProducer) { + this.captchaProducer = captchaProducer; + } + + +} diff --git a/maxkey-core/src/main/java/org/maxkey/entity/UserInfo.java b/maxkey-core/src/main/java/org/maxkey/entity/UserInfo.java index 375a2b3dc..fa0822c44 100644 --- a/maxkey-core/src/main/java/org/maxkey/entity/UserInfo.java +++ b/maxkey-core/src/main/java/org/maxkey/entity/UserInfo.java @@ -19,6 +19,7 @@ package org.maxkey.entity; import com.fasterxml.jackson.annotation.JsonIgnore; import java.io.IOException; +import java.util.Base64; import java.util.HashMap; import java.util.List; @@ -101,6 +102,7 @@ public class UserInfo extends JpaBaseEntity { @JsonIgnore @Column protected byte[] picture; + protected String pictureBase64; @JsonIgnore protected MultipartFile pictureFile; @Column @@ -399,7 +401,22 @@ public class UserInfo extends JpaBaseEntity { return picture; } - /** + public String getPictureBase64() { + return pictureBase64; + } + + public void setPictureBase64(String pictureBase64) { + this.pictureBase64 = pictureBase64; + } + + public void transPictureBase64() { + if(picture != null) { + this.pictureBase64 = "data:image/png;base64," + + Base64.getEncoder().encodeToString(picture); + } + } + + /** * @return the protectedAppsMap */ public HashMap getProtectedAppsMap() { diff --git a/maxkey-core/src/main/java/org/maxkey/entity/apps/Apps.java b/maxkey-core/src/main/java/org/maxkey/entity/apps/Apps.java index 38da69420..925bd77b5 100644 --- a/maxkey-core/src/main/java/org/maxkey/entity/apps/Apps.java +++ b/maxkey-core/src/main/java/org/maxkey/entity/apps/Apps.java @@ -18,6 +18,7 @@ package org.maxkey.entity.apps; import java.io.Serializable; +import java.util.Base64; import javax.persistence.Column; import javax.persistence.Entity; @@ -78,6 +79,7 @@ public class Apps extends JpaBaseEntity implements Serializable { */ @Column private byte[] icon; + private String iconBase64; private MultipartFile iconFile; @Column private int visible; @@ -270,7 +272,22 @@ public class Apps extends JpaBaseEntity implements Serializable { this.icon = icon; } - /** + public String getIconBase64() { + return iconBase64; + } + + public void setIconBase64(String iconBase64) { + this.iconBase64 = iconBase64; + } + + public void transIconBase64() { + if(icon !=null) { + this.iconBase64 = "data:image/png;base64," + + Base64.getEncoder().encodeToString(icon); + } + } + + /** * @return the iconFile */ public MultipartFile getIconFile() { diff --git a/maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/AppListController.java b/maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/AppListController.java index 6f56a9b79..d5969bf8d 100644 --- a/maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/AppListController.java +++ b/maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/AppListController.java @@ -96,7 +96,7 @@ public class AppListController { userApplications.setInstId(WebContext.getUserInfo().getInstId()); List appList = appsService.queryMyApps(userApplications); for (UserApps app : appList) { - WebContext.setAttribute(app.getId(), app.getIcon()); + app.transIconBase64(); } return appList; diff --git a/maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/ProfileController.java b/maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/ProfileController.java index 628b28035..0e298c9fb 100644 --- a/maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/ProfileController.java +++ b/maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/ProfileController.java @@ -47,7 +47,7 @@ public class ProfileController { public ModelAndView forwardBasic() { ModelAndView modelAndView = new ModelAndView("profile/myProfile"); UserInfo userInfo = userInfoService.findByUsername(WebContext.getUserInfo().getUsername()); - WebContext.getSession().setAttribute(userInfo.getId(), userInfo.getPicture()); + userInfo.transPictureBase64(); // HashMapextraAttributeMap=new HashMap(); // extraAttributeMap=(HashMap)JsonUtils.json2Object(userInfo.getExtraAttribute(),extraAttributeMap); diff --git a/maxkey-webs/maxkey-web-maxkey/src/main/resources/templates/views/main/appConfigList.ftl b/maxkey-webs/maxkey-web-maxkey/src/main/resources/templates/views/main/appConfigList.ftl index 31f1a7949..944d268e4 100644 --- a/maxkey-webs/maxkey-web-maxkey/src/main/resources/templates/views/main/appConfigList.ftl +++ b/maxkey-webs/maxkey-web-maxkey/src/main/resources/templates/views/main/appConfigList.ftl @@ -34,7 +34,7 @@ ${app_index +1 } - + ${app.name} diff --git a/maxkey-webs/maxkey-web-maxkey/src/main/resources/templates/views/main/appList.ftl b/maxkey-webs/maxkey-web-maxkey/src/main/resources/templates/views/main/appList.ftl index 49c8b7805..e76bd22a5 100644 --- a/maxkey-webs/maxkey-web-maxkey/src/main/resources/templates/views/main/appList.ftl +++ b/maxkey-webs/maxkey-web-maxkey/src/main/resources/templates/views/main/appList.ftl @@ -31,7 +31,7 @@ <#if "IDP"==app.inducer> href="<@base/>/authz/${app.id}" > - +
${app.name} @@ -76,7 +76,7 @@ href="<@base/>/authz/${app.id}" target="_blank" title="${app.name}" > - + ${app.name} diff --git a/maxkey-webs/maxkey-web-maxkey/src/main/resources/templates/views/profile/myProfile.ftl b/maxkey-webs/maxkey-web-maxkey/src/main/resources/templates/views/profile/myProfile.ftl index 6d61602bb..4dafbd871 100644 --- a/maxkey-webs/maxkey-web-maxkey/src/main/resources/templates/views/profile/myProfile.ftl +++ b/maxkey-webs/maxkey-web-maxkey/src/main/resources/templates/views/profile/myProfile.ftl @@ -314,7 +314,7 @@ - src="<@base/>/image/${model.id}" /> + src="${model.pictureBase64}" /> <#else> src="<@base/>/static/images/uploadimage.jpg" /> diff --git a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/ApplicationsController.java b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/ApplicationsController.java index 434341d6e..986a5ffc5 100644 --- a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/ApplicationsController.java +++ b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/ApplicationsController.java @@ -77,7 +77,7 @@ public class ApplicationsController extends BaseAppContorller { JpaPageResults apps=appsService.queryPageResults(applications); if(apps!=null&&apps.getRows()!=null){ for (Apps app : apps.getRows()){ - WebContext.setAttribute(app.getId(), app.getIcon()); + app.transIconBase64(); } } return apps; diff --git a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/BasicDetailsController.java b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/BasicDetailsController.java index 9d1b33707..6ce9a6c4b 100644 --- a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/BasicDetailsController.java +++ b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/BasicDetailsController.java @@ -72,7 +72,7 @@ public class BasicDetailsController extends BaseAppContorller { ModelAndView modelAndView=new ModelAndView("apps/basic/appUpdate"); Apps appDetails=appsService.get(id); super.decoderSecret(appDetails); - WebContext.setAttribute(appDetails.getId(), appDetails.getIcon()); + appDetails.transIconBase64(); modelAndView.addObject("model",appDetails); return modelAndView; } diff --git a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/CasDetailsController.java b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/CasDetailsController.java index 1e878f467..ba12a16e9 100644 --- a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/CasDetailsController.java +++ b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/CasDetailsController.java @@ -76,8 +76,8 @@ public class CasDetailsController extends BaseAppContorller { ModelAndView modelAndView=new ModelAndView("apps/cas/appUpdate"); AppsCasDetails casDetails=casDetailsService.getAppDetails(id , false); super.decoderSecret(casDetails); - WebContext.setAttribute(casDetails.getId(), casDetails.getIcon()); - + casDetails.transIconBase64(); + modelAndView.addObject("model",casDetails); return modelAndView; } diff --git a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/ExtendApiDetailsController.java b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/ExtendApiDetailsController.java index 124b04afe..5942b50be 100644 --- a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/ExtendApiDetailsController.java +++ b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/ExtendApiDetailsController.java @@ -76,8 +76,7 @@ public class ExtendApiDetailsController extends BaseAppContorller { super.decoderSecret(application); AppsExtendApiDetails extendApiDetails=new AppsExtendApiDetails(); BeanUtils.copyProperties(application, extendApiDetails); - - WebContext.setAttribute(extendApiDetails.getId(), extendApiDetails.getIcon()); + extendApiDetails.transIconBase64(); modelAndView.addObject("model",extendApiDetails); return modelAndView; diff --git a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/FormBasedDetailsController.java b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/FormBasedDetailsController.java index 30b402f64..d60d1ecd9 100644 --- a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/FormBasedDetailsController.java +++ b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/FormBasedDetailsController.java @@ -80,7 +80,7 @@ public class FormBasedDetailsController extends BaseAppContorller { AppsFormBasedDetails formBasedDetails=formBasedDetailsService.getAppDetails(id , false); decoderSecret(formBasedDetails); decoderSharedPassword(formBasedDetails); - WebContext.setAttribute(formBasedDetails.getId(), formBasedDetails.getIcon()); + formBasedDetails.transIconBase64(); modelAndView.addObject("model",formBasedDetails); return modelAndView; diff --git a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/JwtDetailsController.java b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/JwtDetailsController.java index 04862dc17..2f6b6e29a 100644 --- a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/JwtDetailsController.java +++ b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/JwtDetailsController.java @@ -79,7 +79,7 @@ public class JwtDetailsController extends BaseAppContorller { ModelAndView modelAndView=new ModelAndView("apps/jwt/appUpdate"); AppsJwtDetails jwtDetails=jwtDetailsService.getAppDetails(id , false); decoderSecret(jwtDetails); - WebContext.setAttribute(jwtDetails.getId(), jwtDetails.getIcon()); + jwtDetails.transIconBase64(); modelAndView.addObject("model",jwtDetails); return modelAndView; diff --git a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/OAuth20DetailsController.java b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/OAuth20DetailsController.java index 8fce575eb..9fe4f8708 100644 --- a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/OAuth20DetailsController.java +++ b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/OAuth20DetailsController.java @@ -94,7 +94,7 @@ public class OAuth20DetailsController extends BaseAppContorller { oauth20Details.setSecret(application.getSecret()); oauth20Details.setClientSecret(application.getSecret()); _logger.debug("forwardUpdate "+oauth20Details); - WebContext.setAttribute(oauth20Details.getId(), oauth20Details.getIcon()); + oauth20Details.transIconBase64(); modelAndView.addObject("model",oauth20Details); return modelAndView; } diff --git a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/SAML20DetailsController.java b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/SAML20DetailsController.java index db56c9990..169611c28 100644 --- a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/SAML20DetailsController.java +++ b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/SAML20DetailsController.java @@ -106,7 +106,7 @@ public class SAML20DetailsController extends BaseAppContorller { ModelAndView modelAndView=new ModelAndView("apps/saml20/appUpdate"); AppsSAML20Details saml20Details=saml20DetailsService.getAppDetails(id , false); decoderSecret(saml20Details); - WebContext.setAttribute(saml20Details.getId(), saml20Details.getIcon()); + saml20Details.transIconBase64(); modelAndView.addObject("model",saml20Details); modelAndView.addObject("authzURI",applicationConfig.getAuthzUri()); return modelAndView; diff --git a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/TokenBasedDetailsController.java b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/TokenBasedDetailsController.java index b4c26c174..c44eb5ef5 100644 --- a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/TokenBasedDetailsController.java +++ b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/TokenBasedDetailsController.java @@ -83,7 +83,7 @@ public class TokenBasedDetailsController extends BaseAppContorller { decoderSecret(tokenBasedDetails); String algorithmKey=passwordReciprocal.decoder(tokenBasedDetails.getAlgorithmKey()); tokenBasedDetails.setAlgorithmKey(algorithmKey); - WebContext.setAttribute(tokenBasedDetails.getId(), tokenBasedDetails.getIcon()); + tokenBasedDetails.transIconBase64(); modelAndView.addObject("model",tokenBasedDetails); return modelAndView; diff --git a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/GroupPrivilegesController.java b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/GroupPrivilegesController.java index ed3cc24ff..85164cb83 100644 --- a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/GroupPrivilegesController.java +++ b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/GroupPrivilegesController.java @@ -62,7 +62,7 @@ public class GroupPrivilegesController { if(groupPrivileges!=null&&groupPrivileges.getRows()!=null){ for (Apps app : groupPrivileges.getRows()){ - WebContext.setAttribute(app.getId(), app.getIcon()); + app.transIconBase64(); } } return groupPrivileges; @@ -86,7 +86,7 @@ public class GroupPrivilegesController { if(groupPrivileges!=null&&groupPrivileges.getRows()!=null){ for (Apps app : groupPrivileges.getRows()){ - WebContext.setAttribute(app.getId(), app.getIcon()); + app.transIconBase64(); } } return groupPrivileges; diff --git a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/UserInfoController.java b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/UserInfoController.java index cc7386f49..02dabf10a 100644 --- a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/UserInfoController.java +++ b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/UserInfoController.java @@ -145,7 +145,7 @@ public class UserInfoController { ModelAndView modelAndView=new ModelAndView("/userinfo/userUpdate"); UserInfo userInfo=userInfoService.get(id); if(userInfo.getPicture()!=null){ - WebContext.getSession().setAttribute(userInfo.getId(), userInfo.getPicture()); + userInfo.transPictureBase64(); } modelAndView.addObject("model", userInfo); diff --git a/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/appUpdateCommon.ftl b/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/appUpdateCommon.ftl index a3c854fbd..8ee9506bd 100644 --- a/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/appUpdateCommon.ftl +++ b/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/appUpdateCommon.ftl @@ -33,7 +33,7 @@ <@locale code="apps.icon"/> - + diff --git a/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/appsList.ftl b/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/appsList.ftl index 2ac7582f0..21a9a7c00 100644 --- a/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/appsList.ftl +++ b/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/appsList.ftl @@ -5,7 +5,7 @@ <#include "../layout/common.cssjs.ftl"/>