diff --git a/.idea/workspace.xml b/.idea/workspace.xml index c4480c4..0ed030a 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,25 +2,13 @@ - - - - - - - - - + - - - - - + - + - - + + @@ -51,11 +39,11 @@ - + - - + + @@ -64,10 +52,19 @@ - + - - + + + + + + + + + + + @@ -93,15 +90,6 @@ - - - - - - - - - @@ -111,16 +99,11 @@ - - - - - - - + + @@ -148,13 +131,14 @@ 账户 请输入姓名 getRequestHeader + regFlag ops_render - @@ -218,8 +203,8 @@ - @@ -247,6 +232,20 @@ + + + + + + + + + + + + + + @@ -320,7 +319,7 @@ - + @@ -331,11 +330,11 @@ + - @@ -437,7 +436,14 @@ @@ -450,7 +456,7 @@ - + @@ -491,13 +497,6 @@ - - - - - - - @@ -773,45 +772,11 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -836,13 +801,6 @@ - - - - - - - @@ -853,15 +811,63 @@ + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/common/libs/member/MemberService.py b/common/libs/member/MemberService.py new file mode 100644 index 0000000..65fdae9 --- /dev/null +++ b/common/libs/member/MemberService.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +import hashlib,requests,random,string,json +from application import app +class MemberService(): + + @staticmethod + def geneAuthCode( member_info = None ): + m = hashlib.md5() + str = "%s-%s-%s" % ( member_info.id, member_info.salt,member_info.status) + m.update(str.encode("utf-8")) + return m.hexdigest() + + @staticmethod + def geneSalt( length = 16 ): + keylist = [ random.choice( ( string.ascii_letters + string.digits ) ) for i in range( length ) ] + return ( "".join( keylist ) ) + + @staticmethod + def getWeChatOpenId(code): + url = "https://api.weixin.qq.com/sns/jscode2session?appid={0}&secret={1}&js_code={2}&grant_type=authorization_code" \ + .format(app.config['MINA_APP']['appid'], app.config['MINA_APP']['appkey'], code) + r = requests.get(url) + res = json.loads(r.text) + openid = None + if 'openid' in res: + openid = res['openid'] + return openid diff --git a/mina b/mina index 14a30e1..fb3fd6d 160000 --- a/mina +++ b/mina @@ -1 +1 @@ -Subproject commit 14a30e11ab9a246f857d90f00cd5d6d012f33b43 +Subproject commit fb3fd6da10fa4212e897254c3520381a9314d7d6 diff --git a/web/controllers/api/Member.py b/web/controllers/api/Member.py index b559541..af5d25d 100644 --- a/web/controllers/api/Member.py +++ b/web/controllers/api/Member.py @@ -6,6 +6,7 @@ import requests,json from common.models.member.Member import Member from common.models.member.Oauth_member_bind import OauthMemberBind from common.libs.Helper import getCurrentDate +from common.libs.member.MemberService import MemberService @route_api.route("/member/login",methods = [ "GET","POST" ]) def login(): @@ -18,13 +19,11 @@ def login(): resp['msg'] = "需要code" return jsonify(resp) - - url = "https://api.weixin.qq.com/sns/jscode2session?appid={0}&secret={1}&js_code={2}&grant_type=authorization_code" \ - .format(app.config['MINA_APP']['appid'], app.config['MINA_APP']['appkey'], code) - r = requests.get(url) - res = json.loads(r.text) - openid = res['openid'] - + openid = MemberService.getWeChatOpenId(code) + if openid is None: + resp['code'] = -1 + resp['msg'] = "调用微信出错" + return jsonify(resp) nickname = req['nickName'] if 'nickName' in req else '' sex = req['gender'] if 'gender' in req else 0 avatar = req['avatarUrl'] if 'avatarUrl' in req else '' @@ -37,7 +36,7 @@ def login(): model_member.nickname = nickname model_member.sex = sex model_member.avatar = avatar - model_member.salt = '' + model_member.salt = MemberService.geneSalt() model_member.updated_time = model_member.created_time = getCurrentDate() db.session.add(model_member) db.session.commit() @@ -53,6 +52,39 @@ def login(): bind_info = model_bind member_info = Member.query.filter_by(id=bind_info.member_id).first() - resp['code'] = 200 - resp['data'] = {'nickname': member_info.nickname} + token = "%s#%s" % (MemberService.geneAuthCode(member_info), member_info.id) + resp['data'] = {'token': token} + return jsonify(resp) + + +@route_api.route("/member/check-reg",methods = [ "GET","POST" ]) +def checkReg(): + resp = {'code': 200, 'msg': '操作成功~', 'data': {}} + req = request.values + code = req['code'] if 'code' in req else '' + if not code or len(code) < 1: + resp['code'] = -1 + resp['msg'] = "需要code" + return jsonify(resp) + + openid = MemberService.getWeChatOpenId(code) + if openid is None: + resp['code'] = -1 + resp['msg'] = "调用微信出错" + return jsonify(resp) + + bind_info = OauthMemberBind.query.filter_by(openid=openid, type=1).first() + if not bind_info: + resp['code'] = -1 + resp['msg'] = "未绑定" + return jsonify(resp) + + member_info = Member.query.filter_by( id = bind_info.member_id).first() + if not member_info: + resp['code'] = -1 + resp['msg'] = "未查询到绑定信息" + return jsonify(resp) + + token = "%s#%s"%( MemberService.geneAuthCode( member_info ),member_info.id ) + resp['data'] = { 'token':token } return jsonify(resp) \ No newline at end of file