/* * 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.activation; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import cn.vlabs.umt.common.util.RequestUtil; import cn.vlabs.umt.services.session.SessionUtils; import cn.vlabs.umt.services.user.UserService; import cn.vlabs.umt.services.user.bean.Token; import cn.vlabs.umt.services.user.bean.User; 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-25 */ /** * @author lvly * @since 2013-3-25 */ public abstract class AbstractDoActivation { private HttpServletRequest request; private HttpServletResponse response; private Token token; private User user; private ActivationForm data; public HttpServletRequest getRequest() { return request; } public HttpServletResponse getResponse() { return response; } public AbstractDoActivation(HttpServletRequest request, HttpServletResponse response,Token token,User user,ActivationForm data){ this.request=request; this.response=response; this.token=token; this.user=user; this.data=data; } public Token getToken() { return token; } public User getUser() { return user; } public ActivationForm getData() { return data; } private boolean isSelf(){ return SessionUtils.getUserId(request)==token.getUid(); } private boolean hasLogin(){ UMTContext context=new UMTContext(request); return context.getCurrentUMTUser()!=null; } /** * 里面会重定向,永远返回null; * */ public String doActivation(){ if(request==null||response==null){ toError(); return null; } if(token==null||user==null||data==null){ toError(); return null; } boolean hasLogin=hasLogin(); boolean isSelf=isSelf(); if(hasLogin&&isSelf){ return hasLoginAndIsSelf(); }else if(hasLogin&&!isSelf){ return hasLoginAndNotSelf(); }else{ return notLogin(); } } /** * 把form里的元素加到url里面 * */ public String addFormData(String url,ActivationForm data){ String result=url; result=RequestUtil.addParam(result, "tokenid", data.getTokenid()+""); result=RequestUtil.addParam(result, "random", data.getRandom()); result=RequestUtil.addParam(result, "loginNameInfoId", data.getLoginNameInfoId()+""); result=RequestUtil.addParam(result, "changeLoginName", data.isChangeLoginName()+""); return result; } public ITokenService getTokenService(){ return ServiceFactory.getTokenService(getRequest()); } public UserService getUserService(){ return ServiceFactory.getUserService(getRequest()); } public IUserLoginNameService getLoginNameService(){ return ServiceFactory.getLoginNameService(getRequest()); } /**错误页面*/ public abstract String toError(); /** * 成功页面 * */ public abstract String toSuccess(); /** * 现在是登陆状态,且是登陆的是自己 * @param request * @param response */ public abstract String hasLoginAndIsSelf(); /** * 现在是已登录状态,但登陆的不是自己 * @param request * @param response * */ public abstract String hasLoginAndNotSelf(); /** * 现在是未登录状态 * @param request * @param response * */ public abstract String notLogin(); protected String getMessageUrl(String message) { String url="/show.do?act=showMessage"; url=RequestUtil.addParam(url, "message", message); return "redirect:"+url; } }