@Override public String getDestination(String objectId, HttpServletRequest req, HttpServletResponse res) throws Exception { MainSessionController mainSessionCtrl = util.getMainSessionController(req); String language = I18NHelper.defaultLanguage; if (mainSessionCtrl != null) { language = mainSessionCtrl.getFavoriteLanguage(); } SimpleDocumentPK pk = new SimpleDocumentPK(objectId); if (StringUtil.isLong(objectId)) { pk.setOldSilverpeasId(Long.parseLong(objectId)); } SimpleDocument attachment = AttachmentServiceProvider.getAttachmentService().searchDocumentById(pk, language); if (attachment == null) { return null; } String componentId = attachment.getInstanceId(); String foreignId = attachment.getForeignId(); if (isUserLogin(req) && isUserAllowed(req, componentId)) { boolean isAccessAuthorized = true; if (componentId.startsWith("kmelia")) { try { ComponentAuthorization security = (ComponentAuthorization) Class.forName(KMELIA_SECURITY_CLASS).newInstance(); isAccessAuthorized = security.isAccessAuthorized(componentId, getUserId(req), foreignId); } catch (Exception e) { SilverTrace.error( "util", "GoToFile.doPost", "root.EX_CLASS_NOT_INITIALIZED", "org.silverpeas.components.kmelia.KmeliaAuthorization", e); return null; } } if (isAccessAuthorized) { res.setCharacterEncoding(CharEncoding.UTF_8); res.setContentType("text/html; charset=utf-8"); String fileName = ClientBrowserUtil.rfc2047EncodeFilename(req, attachment.getFilename()); res.setHeader("Content-Disposition", "inline; filename=\"" + fileName + "\""); return URLUtil.getFullApplicationURL(req) + encodeFilename(attachment.getAttachmentURL()); } } return "ComponentId=" + componentId + "&AttachmentId=" + objectId + "&Mapping=File&ForeignId=" + foreignId; }
@Override public String doAction(HttpServletRequest request) { HttpSession session = request.getSession(true); MainSessionController controller = (MainSessionController) session.getAttribute(MainSessionController.MAIN_SESSION_CONTROLLER_ATT); if (controller == null) { return "/Login.jsp"; } SettingBundle settings = ResourceLocator.getSettingBundle( "org.silverpeas.authentication.settings.passwordExpiration"); String passwordChangeURL = settings.getString("passwordChangeURL", "/defaultPasswordAboutToExpire.jsp"); UserDetail ud = controller.getCurrentUserDetail(); try { String login = ud.getLogin(); String domainId = ud.getDomainId(); String oldPassword = request.getParameter("oldPassword"); String newPassword = request.getParameter("newPassword"); AuthenticationCredential credential = AuthenticationCredential.newWithAsLogin(login) .withAsPassword(oldPassword) .withAsDomainId(domainId); AuthenticationService authenticator = AuthenticationServiceProvider.getService(); authenticator.changePassword(credential, newPassword); GraphicElementFactory gef = (GraphicElementFactory) session.getAttribute(GraphicElementFactory.GE_FACTORY_SESSION_ATT); String favoriteFrame = gef.getLookFrame(); return "/Main/" + favoriteFrame; } catch (AuthenticationException e) { SilverTrace.error( "peasCore", "effectiveChangePasswordHandler.doAction()", "peasCore.EX_USER_KEY_NOT_FOUND", e); return performUrlChangePasswordError(request, passwordChangeURL, ud); } }