package com.zero4j.annotation;
import net.sf.json.JSONObject;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.core.MethodParameter;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.support.WebDataBinderFactory;
import org.springframework.web.context.request.NativeWebRequest;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.method.support.ModelAndViewContainer;
import org.springframework.web.multipart.support.MissingServletRequestPartException;
import com.zero4j.model.account.Account;
import com.zero4j.model.token.util.TokenStaticUtil;
@Aspect
@Component
public class VerifyAccountAspect implements HandlerMethodArgumentResolver{
@Override
public boolean supportsParameter(MethodParameter parameter) {
return parameter.hasParameterAnnotation(VerifyAccount.class);
}
@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
String token = webRequest.getParameter("token");
JSONObject out = new JSONObject();
if(token==null||token.equals("")){
out.put("status", 401);
out.put("message", "请先注册并登录后再进行此操作");
out.put("debug", "缺少参数token或为空");
//ResponseStaticUtil.write(response,out);
System.out.println(out.toString());
//return;
}
Account account = TokenStaticUtil.getAccount(token);
if(account==null){
out.put("status", 401);
out.put("message", "请先注册并登录后再进行此操作");
out.put("debug", "token对应的account为空");
//ResponseStaticUtil.write(response,out);
System.out.println(out.toString());
throw new MissingServletRequestPartException("account");
//return;
}
return account;
}
}