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) {
|
public RedirectBuilder msg(String msg) {
|
||||||
sb.append("msg=").append(i18nThenEscape(msg)).append("&");
|
sb.append("msg=").append(escape(msg)).append("&");
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public RedirectBuilder title(String title) {
|
public RedirectBuilder title(String title) {
|
||||||
sb.append("title=").append(i18nThenEscape(title)).append("&");
|
sb.append("title=").append(escape(title)).append("&");
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -60,7 +60,7 @@ public class Redirect {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public RedirectBuilder button(String text) {
|
public RedirectBuilder button(String text) {
|
||||||
sb.append("btn=").append(i18nThenEscape(text)).append("&");
|
sb.append("btn=").append(escape(text)).append("&");
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -70,7 +70,7 @@ public class Redirect {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public RedirectBuilder to(String url) {
|
public RedirectBuilder to(String url) {
|
||||||
sb.append("redirect=").append(i18nThenEscape(url)).append("&");
|
sb.append("redirect=").append(escape(url)).append("&");
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -82,8 +82,8 @@ public class Redirect {
|
|||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String i18nThenEscape(String str) {
|
private static String escape(String str) {
|
||||||
return UrlEscapers.urlFragmentEscaper().escape(lang(str));
|
return UrlEscapers.urlFragmentEscaper().escape(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
package love.sola.netsupport.wechat.handler;
|
package love.sola.netsupport.wechat.handler;
|
||||||
|
|
||||||
|
import love.sola.netsupport.auth.OAuth2Handler;
|
||||||
import love.sola.netsupport.enums.Attribute;
|
import love.sola.netsupport.enums.Attribute;
|
||||||
import love.sola.netsupport.pojo.User;
|
import love.sola.netsupport.pojo.User;
|
||||||
import love.sola.netsupport.session.WechatSession;
|
import love.sola.netsupport.session.WechatSession;
|
||||||
import love.sola.netsupport.session.WxSession;
|
import love.sola.netsupport.session.WxSession;
|
||||||
import love.sola.netsupport.sql.TableUser;
|
import love.sola.netsupport.sql.TableUser;
|
||||||
|
import love.sola.netsupport.util.Redirect;
|
||||||
import love.sola.netsupport.wechat.Command;
|
import love.sola.netsupport.wechat.Command;
|
||||||
import me.chanjar.weixin.common.exception.WxErrorException;
|
import me.chanjar.weixin.common.exception.WxErrorException;
|
||||||
import me.chanjar.weixin.common.session.WxSessionManager;
|
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.WxMpXmlOutMessage;
|
||||||
import me.chanjar.weixin.mp.bean.outxmlbuilder.TextBuilder;
|
import me.chanjar.weixin.mp.bean.outxmlbuilder.TextBuilder;
|
||||||
|
|
||||||
|
import javax.servlet.AsyncContext;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import static love.sola.netsupport.config.Lang.format;
|
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
|
* Don't modify this source without my agreement
|
||||||
* ***********************************************
|
* ***********************************************
|
||||||
*/
|
*/
|
||||||
public class ProfileHandler implements WxMpMessageHandler {
|
public class ProfileHandler implements WxMpMessageHandler, OAuth2Handler {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService, WxSessionManager sessionManager) throws WxErrorException {
|
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();
|
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);
|
Operator operator = TableOperator.get(user);
|
||||||
if (operator == null) {
|
if (operator == null) {
|
||||||
Redirect.error().icon(Redirect.WeUIIcon.WARN_SAFE).noButton()
|
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;
|
return;
|
||||||
}
|
}
|
||||||
if (operator.getAccess() >= Access.NO_LOGIN) {
|
if (operator.getAccess() >= Access.NO_LOGIN) {
|
||||||
Redirect.error().icon(Redirect.WeUIIcon.WAITING).noButton()
|
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;
|
return;
|
||||||
}
|
}
|
||||||
session.setAttribute(Attribute.AUTHORIZED, Command.LOGIN);
|
session.setAttribute(Attribute.AUTHORIZED, Command.LOGIN);
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package love.sola.netsupport.wechat.handler.admin;
|
package love.sola.netsupport.wechat.handler.admin;
|
||||||
|
|
||||||
import love.sola.netsupport.enums.Access;
|
|
||||||
import love.sola.netsupport.pojo.Operator;
|
import love.sola.netsupport.pojo.Operator;
|
||||||
import love.sola.netsupport.sql.TableOperator;
|
import love.sola.netsupport.sql.TableOperator;
|
||||||
import me.chanjar.weixin.common.exception.WxErrorException;
|
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());
|
TextBuilder out = WxMpXmlOutMessage.TEXT().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName());
|
||||||
try {
|
try {
|
||||||
Operator op = TableOperator.get(wxMessage.getFromUserName());
|
Operator op = TableOperator.get(wxMessage.getFromUserName());
|
||||||
if (op == null)
|
if (op == null) {
|
||||||
out.content(lang("Not_Operator"));
|
out.content(lang("Not_Operator"));
|
||||||
else if (op.getAccess() >= Access.NO_LOGIN) {
|
// } else if (op.getAccess() >= Access.NO_LOGIN) {
|
||||||
out.content(lang("No_Login"));
|
// out.content(lang("No_Login"));
|
||||||
} else {
|
} else {
|
||||||
out.content(format("Operator_Info", op.getId(), op.getName(), op.getAccess(), op.getBlock(), op.getWeek()));
|
out.content(format("Operator_Info", op.getId(), op.getName(), op.getAccess(), op.getBlock(), op.getWeek()));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,6 +42,8 @@ User_Cancel_Remark: '用户手动取消报修。'
|
|||||||
Cancel_Failed: '取消失败。'
|
Cancel_Failed: '取消失败。'
|
||||||
#Modify
|
#Modify
|
||||||
Profile_Modify: '<a href="{0}">> 点此修改资料 <</a>'
|
Profile_Modify: '<a href="{0}">> 点此修改资料 <</a>'
|
||||||
|
Need_Register_Title: '尚未进行微信绑定'
|
||||||
|
Need_Register: '您尚未进行微信绑定,3秒后将自动跳转至微信绑定页面。'
|
||||||
#Login
|
#Login
|
||||||
Home_Page_Msg: '<a href="{0}">CLICK HERE</a>'
|
Home_Page_Msg: '<a href="{0}">CLICK HERE</a>'
|
||||||
Not_Operator: '嘟嘟嘟……'
|
Not_Operator: '嘟嘟嘟……'
|
||||||
@@ -59,7 +61,7 @@ Operator_Info: |
|
|||||||
值班片区: {3,choice,0#'全图 >ω<'|1#岐头片区|2#北门片区|3#东门片区|4#香灰片区|5#凤翔片区}
|
值班片区: {3,choice,0#'全图 >ω<'|1#岐头片区|2#北门片区|3#东门片区|4#香灰片区|5#凤翔片区}
|
||||||
值班日: {4,choice,0#'2月30日 >ω<'|1#周一|2#周二|3#周三|4#周四|5#周五|6#周六|7#周日}
|
值班日: {4,choice,0#'2月30日 >ω<'|1#周一|2#周二|3#周三|4#周四|5#周五|6#周六|7#周日}
|
||||||
|
|
||||||
若以上信息有误,请及时联系@15-排污-沙子森。
|
若以上信息有误,请及时联系@15-沙子森。
|
||||||
#URL
|
#URL
|
||||||
User_Register_Link: 'http://topaz.sinaapp.com/nm/v2/user/reg.html?token={0}'
|
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}'
|
User_Query_Link: 'http://topaz.sinaapp.com/nm/v2/user/list.html?token={0}'
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ public class URLEncodeTest {
|
|||||||
.title("Test Title")
|
.title("Test Title")
|
||||||
.msg("Test Message")
|
.msg("Test Message")
|
||||||
.toString(),
|
.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