/* * Copyright (c) 2008-2016 Computer Network Information Center (CNIC), Chinese Academy of Sciences. * * This file is part of Duckling project. * * 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 cn.vlabs.umt.ui.user; import java.io.IOException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import cn.vlabs.umt.common.util.CommonUtils; import cn.vlabs.umt.services.session.SessionUtils; import cn.vlabs.umt.services.user.LoginService; import cn.vlabs.umt.services.user.UserService; import cn.vlabs.umt.services.user.bean.LoginNameInfo; import cn.vlabs.umt.services.user.bean.UsernamePasswordCredential; import cn.vlabs.umt.services.user.service.IUserLoginNameService; import cn.vlabs.umt.services.user.utils.ServiceFactory; import cn.vlabs.umt.ui.ShowPageController; import cn.vlabs.umt.ui.UMTContext; /** * 更改登录名操作,需要登陆 * * @author lvly * @since 2013-3-4 */ @Controller @RequestMapping("/user/secondary/loginName.do") public class SecondaryLoginNameController { @Autowired private IUserLoginNameService loginNameService; @Autowired private UserService userService; @Autowired private LoginService loginService; /** * 显示设置辅助账号界面 * */ @RequestMapping(params = "act=setSecondaryEmail") public String setSecondaryEmail(HttpServletRequest request, HttpServletResponse response) { return "/user/secondary/login_name_set_secondary_show"; } /** * 设置辅助账号 * * @throws IOException **/ @RequestMapping(params = "act=addSecondaryEmail") public String addSecondaryEmail(HttpServletRequest request, HttpServletResponse response) throws IOException { String primaryEmail = request.getParameter("loginName"); String password = request.getParameter("password"); String newSecondaryEmail = request.getParameter("newSecondaryEmail"); if (loginService.passwordRight(new UsernamePasswordCredential( primaryEmail, password))) { int userId = SessionUtils.getUserId(request); if (!loginNameService.isUsedByMe(userId, newSecondaryEmail)) { int loginNameId = loginNameService.createLoginName( newSecondaryEmail, userId, LoginNameInfo.LOGINNAME_TYPE_SECONDARY, LoginNameInfo.STATUS_TEMP); userService.sendActivicationSecondaryEmail(new UMTContext( request).getLocale(), userId, newSecondaryEmail, ServiceFactory.getWebUrl(request), loginNameId, false); } request.setAttribute("email", newSecondaryEmail); } else { request.setAttribute("newSecondaryEmail", newSecondaryEmail); request.setAttribute("password_error", "security.email.password.error"); return "/user/secondary/login_name_set_secondary_show"; } response.sendRedirect(ShowPageController.getSendSuccessUrl(request, newSecondaryEmail, "secondary", "accountManage.secondaryMail.add")); return null; } /** * 删除辅助账号,已激活的 * */ @RequestMapping(params = "act=deleteSecondary") public String deleteSecondary(HttpServletRequest request, HttpServletResponse response) throws IOException { String loginNameInfoId = request.getParameter("loginNameInfoId"); String from = request.getParameter("from"); if (!CommonUtils.isNull(loginNameInfoId) && CommonUtils.isNumber(loginNameInfoId) && !CommonUtils.isNull(from)) { loginNameService.removeLoginNameById(Integer .valueOf(loginNameInfoId)); int userId = SessionUtils.getUserId(request); userService.updateValueByColumn(userId, "secondary_email", loginNameService.getValidSecondaryEmailStr(userId)); if ("index".equals(from)) { return "redirect:/index.jsp"; } else { return "redirect:/user/manage.do?act=showManage"; } } else { response.sendRedirect(ShowPageController.getMessageUrl(request, "delete.error")); return null; } } /** * 显示修改辅助油箱,已激活 * */ @RequestMapping(params = "act=updateSecondary") public String updateSecondary(HttpServletRequest request, HttpServletResponse response) { request.setAttribute("loginNameInfoId", request.getParameter("loginNameInfoId")); request.setAttribute("email", request.getParameter("email")); request.setAttribute("newSecondaryEmail", request.getParameter("newSecondaryEmail")); return "/user/secondary/login_name_set_secondary_update"; } /** * 修改辅助邮箱 * * @throws IOException * */ @RequestMapping(params = "act=saveSecondary") public String saveSecondary(HttpServletRequest request, HttpServletResponse response) throws IOException { String loginName = request.getParameter("loginName"); String password = request.getParameter("password"); String newSecondaryEmail = request.getParameter("newSecondaryEmail"); if (!loginService.passwordRight(new UsernamePasswordCredential( loginName, password))) { request.setAttribute("password_error", "security.email.password.error"); request.setAttribute("newSecondary", newSecondaryEmail); return updateSecondary(request, response); } String loginNameInfoId = request.getParameter("loginNameInfoId"); LoginNameInfo loginNameInfo = loginNameService .getLoginNameInfoById(Integer.valueOf(loginNameInfoId)); if (loginNameInfo == null) { response.sendRedirect(ShowPageController.getMessageUrl(request, "secondary.deleted")); return null; } int userId = SessionUtils.getUserId(request); if (loginNameInfo.getStatus().equals(LoginNameInfo.STATUS_ACTIVE)) { loginNameService.updateToLoginName(userId, loginNameInfo.getLoginName(), newSecondaryEmail); } else { loginNameService.updateLoginName(userId, loginNameInfo.getLoginName(), newSecondaryEmail); } userService.sendActivicationSecondaryEmail( new UMTContext(request).getLocale(), userId, newSecondaryEmail, ServiceFactory.getWebUrl(request), loginNameInfo.getId(), loginNameInfo.getStatus().equals(LoginNameInfo.STATUS_ACTIVE)); response.sendRedirect(ShowPageController.getSendSuccessUrl(request, newSecondaryEmail, "secondary", "accountManage.secondaryMail.update")); return null; } }