/* * 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 java.io.PrintWriter; 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.CharUtils; 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.LoginInfo; import cn.vlabs.umt.services.user.bean.LoginNameInfo; import cn.vlabs.umt.services.user.bean.Token; import cn.vlabs.umt.services.user.bean.UsernamePasswordCredential; import cn.vlabs.umt.services.user.service.ITokenService; import cn.vlabs.umt.services.user.service.IUserLoginNameService; import cn.vlabs.umt.services.user.utils.ServiceFactory; import cn.vlabs.umt.ui.UMTContext; /** * 更改登录名操作,需要登陆 * * @author lvly * @since 2013-3-4 */ @Controller @RequestMapping("/user/primary/loginName.do") public class PrimaryLoginNameController { @Autowired private IUserLoginNameService loginNameService; @Autowired private LoginService loginService; @Autowired private ITokenService tokenService; @Autowired private UserService userService; /** * 验证邮箱是否可用 * */ @RequestMapping(params = "act=isPrimaryEmailUsed") public void isPrimaryEmailUsed(HttpServletRequest request, HttpServletResponse response) throws IOException { String primaryEmail = request.getParameter("primaryEmail"); if (CommonUtils.isNull(primaryEmail)) { writeToResponse(response, String.valueOf(false)); } if (userService.isUsed(primaryEmail) != UserService.USER_NAME_UNUSED) { writeToResponse(response, String.valueOf(false)); } if (loginNameService.isUsedByMe(SessionUtils.getUserId(request), primaryEmail)) { writeToResponse(response, String.valueOf(false)); } writeToResponse(response, String.valueOf(true)); } /** * 设置主账号,发送激活邮件 * */ @RequestMapping(params = "act=savePrimaryEmail") public String savePrimaryEmail(HttpServletRequest request, HttpServletResponse response) { String primaryEmail = request.getParameter("primaryEmail"); if (userService.isUsed(primaryEmail) != UserService.USER_NAME_UNUSED) { request.setAttribute("loginName_error", "primaryEmail.used"); return "/user/primary/login_name_step2"; } UMTContext context = new UMTContext(request); String oldEmail = context.getCurrentUMTUser().getCstnetId(); userService.sendActivicationLoginMail(context.getLocale(), SessionUtils .getUserId(request), primaryEmail, ServiceFactory .getWebUrl(request), true, loginNameService.getLoginNameId( SessionUtils.getUserId(request), oldEmail, LoginNameInfo.LOGINNAME_TYPE_PRIMARY)); loginNameService.updateToLoginName(SessionUtils.getUserId(request), oldEmail, primaryEmail); Token token = tokenService.getATokenByUidAndOperation( SessionUtils.getUserId(request), Token.OPERATION_COMFIRM_PRIMARY_EMAIL, Token.STATUS_USED); if (token != null) { tokenService.removeTokenById(token.getId()); } request.setAttribute("newPrimaryEmail", primaryEmail); request.setAttribute("newPrimaryEmailShow", CharUtils.hideEmail(primaryEmail)); return "/user/primary/login_name_step3"; } /** * 第一步提交,验证账户密码时候正确 * */ @RequestMapping(params = "act=sendConfirm") public String sendConfirm(HttpServletRequest request, HttpServletResponse response) { String password = request.getParameter("password"); String loginName = request.getParameter("loginName"); LoginInfo loginInfo = loginService .loginAndReturnPasswordType(new UsernamePasswordCredential( loginName, password)); if (loginInfo.getUser() == null) { request.setAttribute("loginName_error", "login.password.wrong"); return "/user/primary/login_name_step1_confirm"; } userService.sendComfirmToOldMail(new UMTContext(request).getLocale(), SessionUtils.getUserId(request), loginName, ServiceFactory.getWebUrl(request)); return "/user/primary/login_name_step1_send_success"; } /** * 显示设置主账号 * */ @RequestMapping(params = "act=showPrimaryLoginEmailStep1") public String showPrimaryLoginEmailStep1(HttpServletRequest request, HttpServletResponse response) { return "/user/primary/login_name_step1_confirm"; } private void writeToResponse(HttpServletResponse response, String json) throws IOException { response.setContentType("json"); PrintWriter writer = response.getWriter(); writer.println(json); writer.flush(); writer.close(); } }