first commit
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
package io.v.nutz.mobile;
|
||||
|
||||
import cn.wizzer.framework.base.Result;
|
||||
import io.v.nutz.base.utils.LoginUtil;
|
||||
import io.v.nutz.sys.models.Sys_user;
|
||||
import io.v.nutz.sys.services.SysUserService;
|
||||
import io.v.nutz.web.commons.base.Globals;
|
||||
import io.v.nutz.web.commons.shiro.filter.PlatformAuthenticationFilter;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.apache.shiro.authc.AuthenticationException;
|
||||
import org.apache.shiro.authc.AuthenticationToken;
|
||||
import org.apache.shiro.authc.IncorrectCredentialsException;
|
||||
import org.apache.shiro.authc.UnknownAccountException;
|
||||
import org.apache.shiro.authz.annotation.RequiresAuthentication;
|
||||
import org.apache.shiro.session.SessionException;
|
||||
import org.apache.shiro.subject.Subject;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.mvc.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
@IocBean
|
||||
@At("/mobile/login")
|
||||
@Ok("json")
|
||||
@Slf4j
|
||||
public class mobileLoginController {
|
||||
|
||||
@Inject
|
||||
private LoginUtil loginUtil;
|
||||
|
||||
@Inject
|
||||
private SysUserService sysUserService;
|
||||
|
||||
/**
|
||||
* 登录页
|
||||
*/
|
||||
@At("")
|
||||
@Ok("beetl:/mobile/login.html")
|
||||
public void index() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 首页
|
||||
*/
|
||||
@At(value = {"/mobile/home", "/mobile/index"}, top = true)
|
||||
@Ok("beetl:/mobile/newHome.html")
|
||||
@RequiresAuthentication
|
||||
public void home() {
|
||||
|
||||
}
|
||||
|
||||
@At(value = "/mobile/index/toHome", top = true)
|
||||
@Ok("beetl:/mobile/home.html")
|
||||
@RequiresAuthentication
|
||||
public void toHome() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 登录
|
||||
*
|
||||
* @param request request
|
||||
* @param session 会话
|
||||
* @return {@link Object}
|
||||
*/
|
||||
@At("/doLogin")
|
||||
@Ok("json")
|
||||
@Filters(@By(type = PlatformAuthenticationFilter.class))
|
||||
public Object doLogin(@Attr("platformLoginToken") AuthenticationToken token, HttpServletRequest request, HttpSession session) {
|
||||
try {
|
||||
loginUtil.doLogin(token, request, session, LoginUtil.LoginOrigin.WEB_H5);
|
||||
return Result.success("login.success");
|
||||
} catch (IncorrectCredentialsException | UnknownAccountException e) {
|
||||
return Result.error(4, "login.error.user");
|
||||
} catch (AuthenticationException e) {
|
||||
return Result.error(5, "login.error.user");
|
||||
} catch (Exception e) {
|
||||
return Result.error(6, "login.error.system");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 退出系统
|
||||
*/
|
||||
@At
|
||||
@Ok(">>:/mobile/login")
|
||||
public void out(HttpSession session, HttpServletRequest req) {
|
||||
try {
|
||||
Subject currentUser = SecurityUtils.getSubject();
|
||||
Sys_user user = (Sys_user) currentUser.getPrincipal();
|
||||
currentUser.logout();
|
||||
session.setAttribute("currentUser", null);
|
||||
|
||||
} catch (Exception ignored) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 解绑微信openId
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@At
|
||||
@Ok("re")
|
||||
public String clearWxOpenId() {
|
||||
try {
|
||||
sysUserService.update(Chain.make("openId", null), Cnd.where("id", "=", ShiroUtil.getPrincipalProperty("id")));
|
||||
Subject subject = SecurityUtils.getSubject();
|
||||
Sys_user user = (Sys_user) subject.getPrincipal();
|
||||
subject.logout();
|
||||
sysUserService.deleteCache(user.getId());
|
||||
return ">>:" + Globals.CasAddress + "/logout?service=" + URLEncoder.encode(Globals.AppDomain + "/platform/wechat/oauth", StandardCharsets.UTF_8);
|
||||
} catch (SessionException ise) {
|
||||
log.debug("Encountered session exception during logout. This can generally safely be ignored.", ise);
|
||||
return ">>:" + Globals.CasAddress + "/logout?service=" + URLEncoder.encode(Globals.AppDomain + "/platform/wechat/oauth", StandardCharsets.UTF_8);
|
||||
} catch (Exception e) {
|
||||
log.debug("Logout error", e);
|
||||
return ">>:" + Globals.CasAddress + "/logout?service=" + URLEncoder.encode(Globals.AppDomain + "/platform/wechat/oauth", StandardCharsets.UTF_8);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user