mirror of
https://github.com/ZSCNetSupportDept/WechatTicketSystem.git
synced 2025-10-29 08:05:04 +08:00
add oauth2 for profile modify
This commit is contained in:
@@ -45,12 +45,12 @@ public class Redirect {
|
||||
}
|
||||
|
||||
public RedirectBuilder msg(String msg) {
|
||||
sb.append("msg=").append(i18nThenEscape(msg)).append("&");
|
||||
sb.append("msg=").append(escape(msg)).append("&");
|
||||
return this;
|
||||
}
|
||||
|
||||
public RedirectBuilder title(String title) {
|
||||
sb.append("title=").append(i18nThenEscape(title)).append("&");
|
||||
sb.append("title=").append(escape(title)).append("&");
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ public class Redirect {
|
||||
}
|
||||
|
||||
public RedirectBuilder button(String text) {
|
||||
sb.append("btn=").append(i18nThenEscape(text)).append("&");
|
||||
sb.append("btn=").append(escape(text)).append("&");
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -70,7 +70,7 @@ public class Redirect {
|
||||
}
|
||||
|
||||
public RedirectBuilder to(String url) {
|
||||
sb.append("redirect=").append(i18nThenEscape(url)).append("&");
|
||||
sb.append("redirect=").append(escape(url)).append("&");
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -82,8 +82,8 @@ public class Redirect {
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
private static String i18nThenEscape(String str) {
|
||||
return UrlEscapers.urlFragmentEscaper().escape(lang(str));
|
||||
private static String escape(String str) {
|
||||
return UrlEscapers.urlFragmentEscaper().escape(str);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
package love.sola.netsupport.wechat.handler;
|
||||
|
||||
import love.sola.netsupport.auth.OAuth2Handler;
|
||||
import love.sola.netsupport.enums.Attribute;
|
||||
import love.sola.netsupport.pojo.User;
|
||||
import love.sola.netsupport.session.WechatSession;
|
||||
import love.sola.netsupport.session.WxSession;
|
||||
import love.sola.netsupport.sql.TableUser;
|
||||
import love.sola.netsupport.util.Redirect;
|
||||
import love.sola.netsupport.wechat.Command;
|
||||
import me.chanjar.weixin.common.exception.WxErrorException;
|
||||
import me.chanjar.weixin.common.session.WxSessionManager;
|
||||
@@ -14,9 +16,12 @@ import me.chanjar.weixin.mp.bean.WxMpXmlMessage;
|
||||
import me.chanjar.weixin.mp.bean.WxMpXmlOutMessage;
|
||||
import me.chanjar.weixin.mp.bean.outxmlbuilder.TextBuilder;
|
||||
|
||||
import javax.servlet.AsyncContext;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Map;
|
||||
|
||||
import static love.sola.netsupport.config.Lang.format;
|
||||
import static love.sola.netsupport.config.Lang.lang;
|
||||
|
||||
/**
|
||||
* ***********************************************
|
||||
@@ -24,7 +29,7 @@ import static love.sola.netsupport.config.Lang.format;
|
||||
* Don't modify this source without my agreement
|
||||
* ***********************************************
|
||||
*/
|
||||
public class ProfileHandler implements WxMpMessageHandler {
|
||||
public class ProfileHandler implements WxMpMessageHandler, OAuth2Handler {
|
||||
|
||||
@Override
|
||||
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService, WxSessionManager sessionManager) throws WxErrorException {
|
||||
@@ -38,4 +43,25 @@ public class ProfileHandler implements WxMpMessageHandler {
|
||||
return out.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onOAuth2(AsyncContext acxt, HttpServletResponse resp, String user, WxSession session) {
|
||||
try {
|
||||
User u = TableUser.getByWechat(user);
|
||||
if (u == null) {
|
||||
session.setAttribute(Attribute.AUTHORIZED, Command.REGISTER);
|
||||
session.setAttribute(Attribute.WECHAT, user);
|
||||
Redirect.error().icon(Redirect.WeUIIcon.INFO).noButton()
|
||||
.title(lang("Need_Register_Title")).msg(lang("Need_Register"))
|
||||
.to(format(lang("User_Register_Link"), session.getId())).go(resp);
|
||||
return;
|
||||
}
|
||||
session.setAttribute(Attribute.AUTHORIZED, Command.PROFILE);
|
||||
session.setAttribute(Attribute.WECHAT, user);
|
||||
session.setAttribute(Attribute.USER, u);
|
||||
resp.sendRedirect(format("User_Profile_Link", session.getId(), u.getName(), u.getIsp().id, u.getNetAccount(), u.getBlock(), u.getRoom(), u.getPhone()));
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -62,12 +62,12 @@ public class LoginHandler implements WxMpMessageHandler, OAuth2Handler {
|
||||
Operator operator = TableOperator.get(user);
|
||||
if (operator == null) {
|
||||
Redirect.error().icon(Redirect.WeUIIcon.WARN_SAFE).noButton()
|
||||
.title("Not_Operator").msg("Not_Operator_OAuth2").go(resp);
|
||||
.title(lang("Not_Operator")).msg(lang("Not_Operator_OAuth2")).go(resp);
|
||||
return;
|
||||
}
|
||||
if (operator.getAccess() >= Access.NO_LOGIN) {
|
||||
Redirect.error().icon(Redirect.WeUIIcon.WAITING).noButton()
|
||||
.title("Left_Operator_Title").msg("Left_Operator").go(resp);
|
||||
.title(lang("Left_Operator_Title")).msg(lang("Left_Operator")).go(resp);
|
||||
return;
|
||||
}
|
||||
session.setAttribute(Attribute.AUTHORIZED, Command.LOGIN);
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package love.sola.netsupport.wechat.handler.admin;
|
||||
|
||||
import love.sola.netsupport.enums.Access;
|
||||
import love.sola.netsupport.pojo.Operator;
|
||||
import love.sola.netsupport.sql.TableOperator;
|
||||
import me.chanjar.weixin.common.exception.WxErrorException;
|
||||
@@ -29,10 +28,10 @@ public class OperatorInfoHandler implements WxMpMessageHandler {
|
||||
TextBuilder out = WxMpXmlOutMessage.TEXT().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName());
|
||||
try {
|
||||
Operator op = TableOperator.get(wxMessage.getFromUserName());
|
||||
if (op == null)
|
||||
if (op == null) {
|
||||
out.content(lang("Not_Operator"));
|
||||
else if (op.getAccess() >= Access.NO_LOGIN) {
|
||||
out.content(lang("No_Login"));
|
||||
// } else if (op.getAccess() >= Access.NO_LOGIN) {
|
||||
// out.content(lang("No_Login"));
|
||||
} else {
|
||||
out.content(format("Operator_Info", op.getId(), op.getName(), op.getAccess(), op.getBlock(), op.getWeek()));
|
||||
}
|
||||
|
||||
@@ -42,6 +42,8 @@ User_Cancel_Remark: '用户手动取消报修。'
|
||||
Cancel_Failed: '取消失败。'
|
||||
#Modify
|
||||
Profile_Modify: '<a href="{0}">> 点此修改资料 <</a>'
|
||||
Need_Register_Title: '尚未进行微信绑定'
|
||||
Need_Register: '您尚未进行微信绑定,3秒后将自动跳转至微信绑定页面。'
|
||||
#Login
|
||||
Home_Page_Msg: '<a href="{0}">CLICK HERE</a>'
|
||||
Not_Operator: '嘟嘟嘟……'
|
||||
@@ -59,7 +61,7 @@ Operator_Info: |
|
||||
值班片区: {3,choice,0#'全图 >ω<'|1#岐头片区|2#北门片区|3#东门片区|4#香灰片区|5#凤翔片区}
|
||||
值班日: {4,choice,0#'2月30日 >ω<'|1#周一|2#周二|3#周三|4#周四|5#周五|6#周六|7#周日}
|
||||
|
||||
若以上信息有误,请及时联系@15-排污-沙子森。
|
||||
若以上信息有误,请及时联系@15-沙子森。
|
||||
#URL
|
||||
User_Register_Link: 'http://topaz.sinaapp.com/nm/v2/user/reg.html?token={0}'
|
||||
User_Query_Link: 'http://topaz.sinaapp.com/nm/v2/user/list.html?token={0}'
|
||||
|
||||
@@ -27,7 +27,7 @@ public class URLEncodeTest {
|
||||
.title("Test Title")
|
||||
.msg("Test Message")
|
||||
.toString(),
|
||||
equalTo("http://topaz.sinaapp.com/nm/v2/result.html?type=1&title=!!Test%20Title!!&msg=!!Test%20Message!!&")
|
||||
equalTo("http://topaz.sinaapp.com/nm/v2/result.html?type=1&title=Test%20Title&msg=Test%20Message&")
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user