liuxiaolu 6 vuotta sitten
vanhempi
commit
0ce9cac68e
1 muutettua tiedostoa jossa 52 lisäystä ja 42 poistoa
  1. 52 42
      src/jfw/front/pchelper.go

+ 52 - 42
src/jfw/front/pchelper.go

@@ -8,23 +8,23 @@ import (
 	"log"
 	"github.com/go-xweb/httpsession"
 	"jfw/jyutil"
-	"net/url"
 	"fmt"
 )
 
-type Login struct {
+type PcHelper struct {
 	*xweb.Action
-	login             xweb.Mapper `xweb:"/jypc/login"`            //pc助手登录
-	getSubscribeToken xweb.Mapper `xweb:"/jypc/getST"`            //获取订阅记录token
-	toPcPushView      xweb.Mapper `xweb:"/jypc/toPcPushView"`     //跳转到订阅记录页面
-	pcPushView        xweb.Mapper `xweb:"/jypc/pcPushView"`       //订阅记录列表
+	login             xweb.Mapper `xweb:"/jypc/login"`      //pc助手登录
+	getSubscribeToken xweb.Mapper `xweb:"/jypc/getST"`      //获取订阅记录token
+	toPushView        xweb.Mapper `xweb:"/jypc/toPushView"` //跳转到订阅记录页面
+	pushView          xweb.Mapper `xweb:"/jypc/pushView"`   //订阅记录列表
+	logout            xweb.Mapper `xweb:"/jypc/logout"`     //退出登录
 }
 
 func init() {
-	xweb.AddAction(&Login{})
+	xweb.AddAction(&PcHelper{})
 }
 
-func (l *Login) Login() error {
+func (l *PcHelper) Login() error {
 	defer util.Catch()
 	//登录页面
 	if l.Method() == "GET" {
@@ -59,7 +59,7 @@ func (l *Login) Login() error {
 				}
 				if (*user)["s_nickname"] != nil {
 					reNickname = (*user)["s_nickname"].(string)
-				}else if (*user)["s_phone"] != nil {
+				} else if (*user)["s_phone"] != nil {
 					reNickname = (*user)["s_phone"].(string)
 				}
 				reToken = getUToken(mac, phone)
@@ -88,7 +88,7 @@ func (l *Login) Login() error {
 						}
 						if (*user)["s_nickname"] != nil {
 							reNickname = (*user)["s_nickname"].(string)
-						}else if (*user)["s_phone"] != nil {
+						} else if (*user)["s_phone"] != nil {
 							reNickname = (*user)["s_phone"].(string)
 						}
 						reToken = getUToken(mac, phone)
@@ -96,7 +96,7 @@ func (l *Login) Login() error {
 					}
 				}
 			}
-		}else if reqType == "sendIdentCode" {
+		} else if reqType == "sendIdentCode" {
 			//phone := jyutil.CheckSendMsg(l.GetString("token"))
 			phone := l.GetString("phone")
 			//手机号验证不通过
@@ -109,9 +109,9 @@ func (l *Login) Login() error {
 				return 1
 			}
 			return 0
-		}else if reqType == "autoLogin" {
+		} else if reqType == "autoLogin" {
 			token := l.GetString("token")
-			deMac,phone := decryptUToken(token)
+			deMac, phone := decryptUToken(token)
 			if phone != "" && mac == deMac {
 				query := map[string]interface{}{
 					"i_appid":    2,
@@ -125,7 +125,7 @@ func (l *Login) Login() error {
 					}
 					if (*user)["s_nickname"] != nil {
 						reNickname = (*user)["s_nickname"].(string)
-					}else if (*user)["s_phone"] != nil {
+					} else if (*user)["s_phone"] != nil {
 						reNickname = (*user)["s_phone"].(string)
 					}
 					reToken = getUToken(mac, phone)
@@ -150,10 +150,18 @@ func (l *Login) Login() error {
 	return nil
 }
 
-func (l *Login) GetSubscribeToken() error {
+func (l *PcHelper) Logout() {
+	l.DelSession("pc_s_m_openid")
+	deleteIdentSession_(l.Session())
+	l.ServeJson(map[string]interface{}{
+		"status": 1,
+	})
+}
+
+func (l *PcHelper) GetSubscribeToken() error {
 	mac := l.GetString("mac")
 	token := l.GetString("token")
-	deMac,phone := decryptUToken(token)
+	deMac, phone := decryptUToken(token)
 	reToken := ""
 	if phone != "" && mac == deMac {
 		reToken = getSToken(token)
@@ -167,18 +175,23 @@ func (l *Login) GetSubscribeToken() error {
 	return nil
 }
 
-func (l *Login) ToPcPushView() error {
-	l.SetSession("pc_s_m_openid",l.GetString("openid"))
-	return l.Render("/pcHelper/pushView.html", &l.T)
+func (l *PcHelper) ToPushView() error {
+	token := l.GetString("token")
+	mac := l.GetString("mac")
+	if token != "" && mac != "" {
+		deMac, phone := decryptSToken(token)
+		if phone != "" && mac == deMac {
+			l.SetSession("pc_s_m_openid", phone)
+			return l.Render("/pchelper/pushView.html")
+		}
+	}
+	return l.Redirect("/")
 }
 
-func (l *Login) PcPushView() error {
+func (l *PcHelper) PushView() error {
 	defer util.Catch()
 	lasttime, _ := l.GetInt("lasttime")
 	myopenid, _ := l.GetSession("pc_s_m_openid").(string)
-	if myopenid == "" {
-		myopenid = "oilZj0ZXGqqOfirMHt8MRT3b4U"
-	}
 	res := map[string]interface{}{}
 	res["success"] = false
 	if myopenid != "" && lasttime > 0 {
@@ -226,34 +239,35 @@ func deleteIdentSession_(session *httpsession.Session) {
 func getSToken(token string) string {
 	v, err := jyutil.AC.Encrypt(token)
 	if err != nil {
-		log.Println("Encrypt error", err)
+		log.Println("SToken Encrypt error", err)
 		return ""
 	}
 	return v
 }
 
-func decryptSToken(token string) (string,string) {
+func decryptSToken(token string) (string, string) {
 	if token == "" {
 		return "", ""
 	}
-	log.Println("UToken解析前token", token)
-	token, e := url.QueryUnescape(token)
-	if e != nil {
-		log.Println("UToken QueryUnescape error", e)
-	}
+	log.Println("SToken解析前token", token)
 	v, err := jyutil.AC.Decrypt(token)
 	if err != nil {
-		log.Println("UToken Decrypt error", err)
+		log.Println("SToken Decrypt aes 1 error", err)
 		return "", ""
 	}
-	log.Println("UToken解析后token", v)
+	v, err = jyutil.AC.Decrypt(string(v))
+	if err != nil {
+		log.Println("SToken Decrypt aes 2 error", err)
+		return "", ""
+	}
+	log.Println("SToken解析后token", v)
 	vs := strings.Split(v, "_")
 	if len(vs) != 4 {
-		log.Println("UToken error", vs)
+		log.Println("SToken Decrypt length error", vs)
 		return "", ""
 	}
 	if vs[3] != util.GetMd5String(fmt.Sprintf("%s&%s&%s", vs[0], vs[1], vs[2])) {
-		log.Println("UToken mx error", vs)
+		log.Println("SToken Decrypt mx error", vs)
 		return "", ""
 	}
 	return vs[0], vs[1]
@@ -269,7 +283,7 @@ func getUToken(params ...string) string {
 		mxE := util.GetMd5String(mac + "&" + phone + "&" + date)
 		v, err := jyutil.AC.Encrypt(mac + "_" + phone + "_" + date + "_" + mxE)
 		if err != nil {
-			log.Println("Encrypt error", err)
+			log.Println("UToken Encrypt error", err)
 			return ""
 		}
 		return v
@@ -283,23 +297,19 @@ func decryptUToken(token string) (string, string) {
 		return "", ""
 	}
 	log.Println("UToken解析前token", token)
-	token, e := url.QueryUnescape(token)
-	if e != nil {
-		log.Println("UToken QueryUnescape error", e)
-	}
 	v, err := jyutil.AC.Decrypt(token)
 	if err != nil {
-		log.Println("UToken Decrypt error", err)
+		log.Println("UToken Decrypt aes error", err)
 		return "", ""
 	}
 	log.Println("UToken解析后token", v)
 	vs := strings.Split(v, "_")
 	if len(vs) != 4 {
-		log.Println("UToken error", vs)
+		log.Println("UToken Decrypt length error", vs)
 		return "", ""
 	}
 	if vs[3] != util.GetMd5String(fmt.Sprintf("%s&%s&%s", vs[0], vs[1], vs[2])) {
-		log.Println("UToken mx error", vs)
+		log.Println("UToken Decrypt mx error", vs)
 		return "", ""
 	}
 	return vs[0], vs[1]