|
@@ -28,12 +28,17 @@ func (l *Login) Login() error {
|
|
defer util.Catch()
|
|
defer util.Catch()
|
|
//登录页面
|
|
//登录页面
|
|
if l.Method() == "GET" {
|
|
if l.Method() == "GET" {
|
|
- return l.Render("/pcHelper/login.html", nil)
|
|
|
|
|
|
+ return l.Render("/pchelper/login.html", nil)
|
|
|
|
+ }
|
|
|
|
+ mac := l.GetString("mac")
|
|
|
|
+ if mac == "" {
|
|
|
|
+ return l.Render("/pchelper/login.html", nil)
|
|
}
|
|
}
|
|
reToken := ""
|
|
reToken := ""
|
|
|
|
+ reOpenId := ""
|
|
|
|
+ reNickname := ""
|
|
status := func() int {
|
|
status := func() int {
|
|
reqType := l.GetString("reqType")
|
|
reqType := l.GetString("reqType")
|
|
- mac := l.GetString("mac")
|
|
|
|
if reqType == "phoneLogin" {
|
|
if reqType == "phoneLogin" {
|
|
phone := l.GetString("phone")
|
|
phone := l.GetString("phone")
|
|
password := l.GetString("password")
|
|
password := l.GetString("password")
|
|
@@ -49,22 +54,18 @@ func (l *Login) Login() error {
|
|
user, ok := mongodb.FindOne("user", query)
|
|
user, ok := mongodb.FindOne("user", query)
|
|
//登录成功
|
|
//登录成功
|
|
if ok && user != nil && len(*user) > 0 {
|
|
if ok && user != nil && len(*user) > 0 {
|
|
|
|
+ if (*user)["s_m_openid"] != nil {
|
|
|
|
+ reOpenId = (*user)["s_m_openid"].(string)
|
|
|
|
+ }
|
|
|
|
+ if (*user)["s_nickname"] != nil {
|
|
|
|
+ reNickname = (*user)["s_nickname"].(string)
|
|
|
|
+ }else if (*user)["s_phone"] != nil {
|
|
|
|
+ reNickname = (*user)["s_phone"].(string)
|
|
|
|
+ }
|
|
reToken = getUToken(mac, phone)
|
|
reToken = getUToken(mac, phone)
|
|
return 1
|
|
return 1
|
|
}
|
|
}
|
|
return -1 //用户名或密码不正确
|
|
return -1 //用户名或密码不正确
|
|
- } else if reqType == "sendIdentCode" {
|
|
|
|
- phone := jyutil.CheckSendMsg(l.GetString("token"))
|
|
|
|
- //手机号验证不通过
|
|
|
|
-
|
|
|
|
- if phone == "" {
|
|
|
|
- return -2
|
|
|
|
- } else if !phoneReg.MatchString(phone) {
|
|
|
|
- return -1
|
|
|
|
- } else if SendIdentCode(phone, l.Session()) {
|
|
|
|
- return 1
|
|
|
|
- }
|
|
|
|
- return 0
|
|
|
|
} else if reqType == "identCodeLogin" {
|
|
} else if reqType == "identCodeLogin" {
|
|
phone, _ := l.GetSession("identCodeKey").(string)
|
|
phone, _ := l.GetSession("identCodeKey").(string)
|
|
if phone == "" || l.GetSession("identCodeValue") == nil || l.GetString("identCode") != l.GetSession("identCodeValue") { //验证码不正确
|
|
if phone == "" || l.GetSession("identCodeValue") == nil || l.GetString("identCode") != l.GetSession("identCodeValue") { //验证码不正确
|
|
@@ -82,22 +83,69 @@ func (l *Login) Login() error {
|
|
if user == nil || len(*user) == 0 {
|
|
if user == nil || len(*user) == 0 {
|
|
return -4 //用户不存在
|
|
return -4 //用户不存在
|
|
} else {
|
|
} else {
|
|
|
|
+ if (*user)["s_m_openid"] != nil {
|
|
|
|
+ reOpenId = (*user)["s_m_openid"].(string)
|
|
|
|
+ }
|
|
|
|
+ if (*user)["s_nickname"] != nil {
|
|
|
|
+ reNickname = (*user)["s_nickname"].(string)
|
|
|
|
+ }else if (*user)["s_phone"] != nil {
|
|
|
|
+ reNickname = (*user)["s_phone"].(string)
|
|
|
|
+ }
|
|
reToken = getUToken(mac, phone)
|
|
reToken = getUToken(mac, phone)
|
|
return 1
|
|
return 1
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ }else if reqType == "sendIdentCode" {
|
|
|
|
+ //phone := jyutil.CheckSendMsg(l.GetString("token"))
|
|
|
|
+ phone := l.GetString("phone")
|
|
|
|
+ //手机号验证不通过
|
|
|
|
+
|
|
|
|
+ if phone == "" {
|
|
|
|
+ return -2
|
|
|
|
+ } else if !phoneReg.MatchString(phone) {
|
|
|
|
+ return -1
|
|
|
|
+ } else if SendIdentCode(phone, l.Session()) {
|
|
|
|
+ return 1
|
|
|
|
+ }
|
|
|
|
+ return 0
|
|
|
|
+ }else if reqType == "autoLogin" {
|
|
|
|
+ token := l.GetString("token")
|
|
|
|
+ deMac,phone := decryptUToken(token)
|
|
|
|
+ if phone != "" && mac == deMac {
|
|
|
|
+ query := map[string]interface{}{
|
|
|
|
+ "i_appid": 2,
|
|
|
|
+ "s_m_openid": phone,
|
|
|
|
+ "i_type": 1,
|
|
|
|
+ }
|
|
|
|
+ user, ok := mongodb.FindOne("user", query)
|
|
|
|
+ if ok && user != nil && len(*user) > 0 {
|
|
|
|
+ if (*user)["s_m_openid"] != nil {
|
|
|
|
+ reOpenId = (*user)["s_m_openid"].(string)
|
|
|
|
+ }
|
|
|
|
+ if (*user)["s_nickname"] != nil {
|
|
|
|
+ reNickname = (*user)["s_nickname"].(string)
|
|
|
|
+ }else if (*user)["s_phone"] != nil {
|
|
|
|
+ reNickname = (*user)["s_phone"].(string)
|
|
|
|
+ }
|
|
|
|
+ reToken = getUToken(mac, phone)
|
|
|
|
+ return 1
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ return -1
|
|
|
|
+ }
|
|
}
|
|
}
|
|
return 0
|
|
return 0
|
|
}()
|
|
}()
|
|
|
|
|
|
result := map[string]interface{}{
|
|
result := map[string]interface{}{
|
|
"status": status,
|
|
"status": status,
|
|
- "openid": util.ObjToString(l.GetSession("s_m_openid")),
|
|
|
|
}
|
|
}
|
|
if status == 1 {
|
|
if status == 1 {
|
|
result["token"] = reToken
|
|
result["token"] = reToken
|
|
}
|
|
}
|
|
|
|
+ result["openid"] = reOpenId
|
|
|
|
+ result["nickname"] = reNickname
|
|
l.ServeJson(result)
|
|
l.ServeJson(result)
|
|
return nil
|
|
return nil
|
|
}
|
|
}
|
|
@@ -105,7 +153,7 @@ func (l *Login) Login() error {
|
|
func (l *Login) GetSubscribeToken() error {
|
|
func (l *Login) GetSubscribeToken() error {
|
|
mac := l.GetString("mac")
|
|
mac := l.GetString("mac")
|
|
token := l.GetString("token")
|
|
token := l.GetString("token")
|
|
- phone, deMac := decryptUToken(token)
|
|
|
|
|
|
+ deMac,phone := decryptUToken(token)
|
|
reToken := ""
|
|
reToken := ""
|
|
if phone != "" && mac == deMac {
|
|
if phone != "" && mac == deMac {
|
|
reToken = getSToken(token)
|
|
reToken = getSToken(token)
|
|
@@ -176,7 +224,39 @@ func deleteIdentSession_(session *httpsession.Session) {
|
|
|
|
|
|
//订阅记录token
|
|
//订阅记录token
|
|
func getSToken(token string) string {
|
|
func getSToken(token string) string {
|
|
- return se.EncodeString(token)
|
|
|
|
|
|
+ v, err := jyutil.AC.Encrypt(token)
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Println("Encrypt error", err)
|
|
|
|
+ return ""
|
|
|
|
+ }
|
|
|
|
+ return v
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+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)
|
|
|
|
+ }
|
|
|
|
+ v, err := jyutil.AC.Decrypt(token)
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Println("UToken Decrypt error", err)
|
|
|
|
+ return "", ""
|
|
|
|
+ }
|
|
|
|
+ log.Println("UToken解析后token", v)
|
|
|
|
+ vs := strings.Split(v, "_")
|
|
|
|
+ if len(vs) != 4 {
|
|
|
|
+ log.Println("UToken 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)
|
|
|
|
+ return "", ""
|
|
|
|
+ }
|
|
|
|
+ return vs[0], vs[1]
|
|
}
|
|
}
|
|
|
|
|
|
//登录成功后的token
|
|
//登录成功后的token
|
|
@@ -197,6 +277,7 @@ func getUToken(params ...string) string {
|
|
return ""
|
|
return ""
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+//返回mac phone
|
|
func decryptUToken(token string) (string, string) {
|
|
func decryptUToken(token string) (string, string) {
|
|
if token == "" {
|
|
if token == "" {
|
|
return "", ""
|
|
return "", ""
|