Exemple #1
0
def __authorize_by_code(request):
    post_data = request.body.decode('utf-8')
    post_data = json.loads(post_data)
    print(post_data)
    code = post_data.get('code').strip()
    app_id = post_data.get("appId").strip()
    nick_name = post_data.get("nickName").strip()

    response = {}
    if not code or not app_id:
        response['message'] = "authoreized failed, need entire authorization data. "
        response['code'] = ReturnCode.BROKEN_AUTHORIZED_DATA
        return JsonResponse(data=response, safe=False)

    data = c2s(app_id,code)
    openid = data.get('openid')
    if not openid:
        response = wrap_json_response(code=ReturnCode.FAILED, message="auth failed")
        return JsonResponse(data=response, safe=False)

    request.session['openid'] = openid
    request.session['is_authorized'] = True

    if not User.objects.filter(openid=openid):
        new_user = User(openid=openid, nickname=nick_name)
        new_user.save()

    response = wrap_json_response(code=ReturnCode.SUCCESS, message="auth success")
    return JsonResponse(data=response, safe=False)
    pass
Exemple #2
0
    def inner(*args, **kwargs):
        try:
            is_authorized = requests.session().get('is_authorized')
        except Exception:
            response = wrap_json_response(code=ReturnCode.UNAUTHORIZED)
            return JsonResponse(data=response, safe=False)

        if not is_authorized:
            response = wrap_json_response(code=ReturnCode.UNAUTHORIZED)
            return JsonResponse(data=response, safe=False)
        return func(*args, **kwargs)
Exemple #3
0
def image_text(request):
    if request.method == 'GET':
        md5 = request.GET.get('md5')
        imgfile = os.path.join(settings.IMAGES_DIR, md5 + '.jpg')
        if not os.path.exists(imgfile):
            return response.wrap_json_response(code=response.RetureCode.SUCCESS)
        else:
            response_data = {}
            response_data['name'] = md5 + '.jpg'
            response_data['url'] = '/apis/iamge?md5=%s' % (md5)
            res_data = response.wrap_json_response(data=response_data)
            return JsonResponse(data=res_data, safe=False)
Exemple #4
0
    def post(self, request):
        # 没有认证
        if not already_authorized(request):
            response = self.wrap_json_response(code=ReturnCode.UNAUTHORIZED)
            return JsonResponse(data=response, safe=False)
        # 认证通过
        open_id = request.session.get('open_id')
        user = User.objects.get(open_id=open_id)

        received_body = request.body.decode('utf-8')
        # 将str转为字典dict
        received_body = eval(received_body)
        print('---\nUSER【%s】[%s] post data:%s' %
              (user.nickname, open_id, received_body))
        cities = received_body.get('city')
        stocks = received_body.get('stock')
        constellations = received_body.get('constellation')

        user.focus_cities = json.dumps(cities)
        user.focus_stocks = json.dumps(stocks)
        user.focus_constellations = json.dumps(constellations)
        user.save()

        response = wrap_json_response(code=ReturnCode.SUCCESS,
                                      message='modify user info success.')
        return JsonResponse(data=response, safe=False)
 def post(self, request):
     # 获取传送过来的数据
     received_body = request.body.decode('utf-8')
     received_body = json.loads(received_body)
     # 引号为传输时的变量名
     data = received_body.get('data')
     # 设置回滚点
     RollBackPoint = transaction.savepoint()
     try:
         # 聘用操作
         users = UserInfo.objects.filter(user_id__in=data.get('user_id'))
         dept = Dept.objects.filter(dept_id=data.get('dept_id'))[0]
         Register.objects.filter(user__in=users).delete()
         for user in users:
             UserInfo.objects.filter(user_id=user.user_id).update(
                 judge_invalid=True)
             UserClub.objects.create(user=user, dept=dept)
             UserPower.objects.create(user=user)
             UserRecord.objects.create(user=user)
         # 操作完成
         transaction.savepoint_commit(RollBackPoint)
         message = 'operate successfully.'
         response = wrap_json_response(data={},
                                       code=ReturnCode.SUCCESS,
                                       message=message)
         return JsonResponse(response, safe=False)
     except:
         transaction.savepoint_rollback(RollBackPoint)
         response = self.wrap_json_response(code=ReturnCode.FAILED)
         return JsonResponse(data=response, safe=False)
Exemple #6
0
    def get(self, request):
        """
        获取短信验证码
        :param request: web请求,phoneNumber 用户手机号
        :return: JsonResponse data储存状态码,短信是否发送成功
        """
        post_data = request.body.decode('utf-8')
        post_data = json.loads(post_data)
        phone_number = post_data.get('phoneNumber')

        if not phone_number:
            response = PhoneCertificationView.wrap_json_response(code=ReturnCode.BROKEN_PARAMS)
            return JsonResponse(data=response, safe=False)

        captcha = random.randint(10000, 100000 - 1)
        data = auth.phone_cert(phone_number, captcha)
        data = json.loads(data)
        if data.get('result') == -119:
            response = wrap_json_response(code=ReturnCode.WRONG_PHONE_NUMBER)
            return JsonResponse(data=response, safe=False)
        request.session['captcha'] = str(captcha)
        request.session['captcha_time'] = timezone.now()
        request.session['phone_number'] = phone_number

        response = PhoneCertificationView.wrap_json_response(code=ReturnCode.SUCCESS, message="success")
        return JsonResponse(data=response, safe=False)
Exemple #7
0
def get_status(request):
    if already_authorized(request):
        data = {"is_authorized": 1}
    else:
        data = {"is_authorized": 0}
    response = wrap_json_response(data=data)
    return JsonResponse(data=response, safe=False)
Exemple #8
0
def get_menu(request):
    print('get_menu')
    global_app_data = init_app_data()
    print('global_app_data', global_app_data)
    published_app_data = global_app_data.get('published')
    responseData = response.wrap_json_response(data=published_app_data,
                                                 code=response.RetureCode.SUCCESS)
    return JsonResponse(data=responseData, safe=False)
Exemple #9
0
    def post(self, request):
        """
        验证码的验证
        :param request: web请求,captcha 用户填写的验证码
        :return:
        """
        post_data = request.body.decode('utf-8')
        post_data = json.loads(post_data)

        now = timezone.now()

        # 获取并删除有关session
        try:
            captcha_time = request.session.get('captcha_time')
            captcha_correct = request.session.get('captcha')
            del request.session['captcha_time']
            del request.session['captcha']
            del request.session['phone_number']
        except Exception:
            response = PhoneCertificationView.wrap_json_response(code=ReturnCode.WRONG_CAPTCHA)
            return JsonResponse(data=response, safe=False)

        captcha_user = post_data.get('captcha')
        phone_number = request.session.get('phone_number')

        if not captcha_user:
            response = PhoneCertificationView.wrap_json_response(code=ReturnCode.WRONG_CAPTCHA)
            return JsonResponse(data=response, safe=False)

        # 判定验证码过期
        delta = now - captcha_time
        if delta.seconds > 900:
            response = wrap_json_response(code=ReturnCode.CAPTCHA_DUE)
            return JsonResponse(data=response, safe=False)

        if captcha_correct == captcha_user:
            open_id = request.session.get['open_id']
            user = User.objects.filter(open_id=open_id)
            user.phone_number = phone_number
            user.save()
            response = wrap_json_response(code=ReturnCode.SUCCESS)
            return JsonResponse(data=response, safe=False)
        else:
            response = wrap_json_response(code=ReturnCode.CAPTCHA_DUE)
            return JsonResponse(data=response, safe=False)
Exemple #10
0
def __authorize_by_code(request):
    """
    使用wx.login()得到的临时code获得微信提供的code2session接口授权
    :param request:
    :return:
    """
    post_data = request.body.decode('utf-8')
    post_data = json.loads(post_data)
    code = post_data.get('code')
    app_id = post_data.get('appId')
    nickname = post_data.get('nickname')

    response = {}
    if not code or not app_id:
        response['message'] = '参数不完整'
        response['code'] = ReturnCode.BROKEN_AUTHORIZED_DATA
        return JsonResponse(data=response, safe=False)
    data = code2session(appid=app_id, code=code)
    openid = data.get('openid')
    print('openid is ' + openid)

    if not openid:
        response = wrap_json_response(code=ReturnCode.FAILED,
                                      message='auth failed!')
        return JsonResponse(data=response, safe=False)

    # openid存在
    request.session['openid'] = openid
    request.session['is_authorized'] = True  # 是否已经认证

    # 如果成功认证,判断该用户是否在数据库中
    if not User.objects.filter(open_id=openid):  # 如果不在,将用户保存到数据库
        new_user = User(open_id=openid, nickname=nickname)
        new_user.save()
        response = wrap_json_response(code=ReturnCode.SUCCESS,
                                      message='auth success')
        print('auth is not in tables')
        return JsonResponse(data=response, safe=False)

    print('auth is in tables')
    response = wrap_json_response(code=ReturnCode.SUCCESS,
                                  message='auth success')
    return JsonResponse(data=response, safe=False)
Exemple #11
0
def __authorize_by_code(request):
    """
    使用wx.login到的临时code到微信提供的code2session接口授权

    post_data = {
        'encryptedData': 'xxx',
        'appId': 'xxx',
        'sessionKey': 'xxx',
        'iv': 'xxx'
    }
    """
    post_data = request.body.decode('utf-8')
    print('data from applet:', post_data)
    post_data = json.loads(post_data)
    code = post_data.get('code').strip()
    app_id = post_data.get('appId').strip()
    nickname = post_data.get('nickname').strip()
    response = {}
    # 需要微信小程序提供code和appid,然后将code、appid和secret提交给c2s向微信接口服务认证
    if not code or not app_id:
        response['message'] = 'lost code or appId'
        response['code'] = ReturnCode.BROKEN_AUTHORIZED_DATA
        return JsonResponse(data=response, safe=False)
    data = c2s(app_id, code)
    openid = data.get('openid')
    print('get openid from c2s:', openid)
    # 若没有从微信接口服务获取到openid,则认证失败
    if not openid:
        response = wrap_json_response(code=ReturnCode.UNAUTHORIZED,
                                      message='auth failed')
        return JsonResponse(data=response, safe=False)

    request.session['open_id'] = openid
    request.session['is_authorized'] = True

    # 认证成功后查看该用户是否在开发者数据存在,不存在则保存
    if not User.objects.filter(open_id=openid):
        new_user = User(open_id=openid, nickname=nickname)
        new_user.save()

    response = wrap_json_response(code=ReturnCode.SUCCESS,
                                  message='auth success.')
    return JsonResponse(data=response, safe=False)
Exemple #12
0
def __authorize_by_code(request):
    '''
    使用wx.login的到的临时code到微信提供的code2session接口授权

    post_data = {
        'encryptedData': 'xxxx',
        'appId': 'xxx',
        'sessionKey': 'xxx',
        'iv': 'xxx'
    }
    '''
    response = {}
    post_data = request.body.decode('utf-8')
    post_data = json.loads(post_data)
    app_id = post_data.get('appId').strip()
    nickname = post_data.get('nickname').strip()
    code = post_data.get('code').strip()
    print(code)
    print(app_id)
    if not (app_id and code):
        response['result_code'] = ReturnCode.BROKEN_AUTHORIZED_DATA
        response[
            'message'] = 'authorized failed. need entire authorization data.'
        print("-----")
        print(response)
        print("-----")
        return JsonResponse(response, safe=False)
    try:
        print("cs2:app_id code %s %s" % (app_id, code))
        data = c2s(app_id, code)
    except Exception as e:
        print(e)
        response['result_code'] = ReturnCode.FAILED
        response['message'] = 'authorized failed.'
        return JsonResponse(response, safe=False)
    open_id = data.get('openid')
    if not open_id:
        response['result_code'] = ReturnCode.FAILED
        response['message'] = 'authorization error.'
        return JsonResponse(response, safe=False)
    request.session['open_id'] = open_id
    request.session['is_authorized'] = True

    print(open_id)
    # User.objects.get(open_id=open_id) # 不要用get,用get查询如果结果数量 !=1 就会抛异常
    # 如果用户不存在,则新建用户
    if not User.objects.filter(open_id=open_id):
        new_user = User(open_id=open_id, nickname=nickname)
        new_user.save()

    message = 'user authorize successfully.'
    response = wrap_json_response(data={},
                                  code=ReturnCode.SUCCESS,
                                  message=message)
    return JsonResponse(response, safe=False)
Exemple #13
0
 def post(self, request):
     if not already_authorized(request):
         response = self.wrap_json_response(code=ReturnCode.UNAUTHORIZED)
         return JsonResponse(response, safe=False)
     open_id = request.session.get('open_id')
     user = UserProfile.objects.get(open_id=open_id)
     userImage = request.FILES.get("file", None)  # 获取上传的文件,如果没有文件,则默认为None
     user.image = userImage
     user.save()
     response = wrap_json_response(code=ReturnCode.SUCCESS,
                                   message='头像修改成功')
     print(response)
     return JsonResponse(data=response, safe=False)
Exemple #14
0
def __authorize_by_code(request):
    '''
    使用wx.login的到的临时code到微信提供的code2session接口授权
    '''
    post_data = request.body.decode('utf-8')
    post_data = json.loads(post_data)
    code = post_data.get('code').strip()
    app_id = post_data.get('appId').strip()
    nickname = post_data.get('nickname').strip()
    print("nickname:",nickname)

    response = {}
    if not code or not app_id:
        print("ddd")
        response['message'] = 'authorized failed, need entire authorization data.'
        response['code '] = ReturnCode.BROKEN_AUTHORIZED_DATA
        return JsonResponse(data=response, safe=False)

    data = c2s(app_id, code)
    openid = data.get('openid')
    print('get openid: ', openid)
    if not openid:
        response = wrap_json_response(code=ReturnCode.FAILED, message='auth failed')
        return JsonResponse(data=response, safe=False)

    request.session['open_id'] = openid
    request.session['is_authorized'] = True

    if not User.objects.filter(open_id=openid):
        new_user = User(open_id=openid, nickname=nickname)
        print('new user: open_id: %s, nickname: %s' % (openid, nickname))
        new_user.save()

    response = wrap_json_response(code=ReturnCode.SUCCESS, message='auth success.')
    print('new user: open_id: %s, nickname: %s' % (openid, nickname))
    return JsonResponse(data=response, safe=False)
    pass
Exemple #15
0
    def post(self, request):
        # 获取传送过来的数据
        received_body = request.body.decode('utf-8')
        received_body = json.loads(received_body)
        # 引号为传输时的变量名
        edit_data = received_body.get('data')
        courses = edit_data.get("courses")
        # 获取用户
        user = UserInfo.objects.filter(user_id=edit_data.get("user_id"))[0]
        try:
            course = Course.objects.filter(user=user)[0]
        except:
            course = Course(user=user)
        course.mon1 = str(courses[0]['select'])
        course.mon2 = str(courses[5]['select'])
        course.mon3 = str(courses[10]['select'])
        course.mon4 = str(courses[15]['select'])
        course.mon5 = str(courses[20]['select'])

        course.tue1 = str(courses[1]['select'])
        course.tue2 = str(courses[6]['select'])
        course.tue3 = str(courses[11]['select'])
        course.tue4 = str(courses[16]['select'])
        course.tue5 = str(courses[21]['select'])

        course.wed1 = str(courses[2]['select'])
        course.wed2 = str(courses[7]['select'])
        course.wed3 = str(courses[12]['select'])
        course.wed4 = str(courses[17]['select'])
        course.wed5 = str(courses[22]['select'])

        course.thu1 = str(courses[3]['select'])
        course.thu2 = str(courses[8]['select'])
        course.thu3 = str(courses[13]['select'])
        course.thu4 = str(courses[18]['select'])
        course.thu5 = str(courses[23]['select'])

        course.fri1 = str(courses[4]['select'])
        course.fri2 = str(courses[9]['select'])
        course.fri3 = str(courses[14]['select'])
        course.fri4 = str(courses[19]['select'])
        course.fri5 = str(courses[24]['select'])

        course.save()

        # 操作完成
        message = 'edit the course successfully.'
        response = wrap_json_response(data={}, code=ReturnCode.SUCCESS, message=message)
        return JsonResponse(response, safe=False)
Exemple #16
0
 def get(self, request):
     """
     获取用户信息
     :param request:
     :return: JsonResponse
     """
     open_id = request.session.get('open_id')
     user = User.objects.filter(open_id=open_id)
     data = dict()
     data['nickname'] = user.nickname
     data['phoneNumber'] = user.phone_number
     data['idNumber'] = user.id_number
     data['image'] = user.image
     response = wrap_json_response(data=data, code=ReturnCode.SUCCESS)
     return JsonResponse(data=response, safe=False)
 def delete(self, request):
     response = {}
     # 获取传送过来的数据
     received_body = request.body.decode('utf-8')
     received_body = json.loads(received_body)
     # 引号为传输时的变量名
     data = received_body.get('data')
     # 删除用户
     UserInfo.objects.filter(user_id__in=data.get('user_id')).delete()
     # 操作完成
     message = 'delete successfully.'
     response = wrap_json_response(data={},
                                   code=ReturnCode.SUCCESS,
                                   message=message)
     return JsonResponse(response, safe=False)
Exemple #18
0
 def post(self, request):
     response = {}
     # 获取传送过来的数据
     received_body = request.body.decode('utf-8')
     received_body = json.loads(received_body)
     # 引号为传输时的变量名
     data = received_body.get('data')
     # 修改
     master = Master.objects.filter()[0]
     master.__dict__[data.get("field")] = data.get("change_status")
     master.save()
     # 操作完成
     message = 'edit master successfully.'
     response = wrap_json_response(data={},
                                   code=ReturnCode.SUCCESS,
                                   message=message)
     return JsonResponse(response, safe=False)
Exemple #19
0
 def post(self, request):
     response = {}
     # 获取传送过来的数据
     received_body = request.body.decode('utf-8')
     received_body = json.loads(received_body)
     # 引号为传输时的变量名
     register_data = received_body.get('data')
     # 修改用户信息
     user = UserInfo.objects.filter(user_id=register_data.get("user_id"))[0]
     user.name = register_data.get("name")
     user.phone = register_data.get("phone")
     user.address = register_data.get("address")
     user.birthday = datetime(
         register_data.get("birthday")[0],
         register_data.get("birthday")[1],
         register_data.get("birthday")[2])
     user.sex = True if int(register_data.get("sex")) else False
     user.college = College.objects.filter(
         college_id=register_data.get("value_class")[0])[0]
     user.major = Major.objects.filter(
         major_id=register_data.get("value_class")[1])[0]
     user.grade = register_data.get("value_class")[2]
     user.class_num = register_data.get("value_class")[3]
     user.dorm = register_data.get("dorm")[0]
     user.dorm_num = register_data.get("dorm")[1]
     user.introduce = register_data.get("user_id")
     user.save()
     # 加入注册
     register = Register(user=user,
                         dept1=Dept.objects.filter(
                             dept_id=register_data.get("depts")[0])[0])
     if len(register_data.get("depts")) == 2:
         register.dept2 = Dept.objects.filter(
             dept_id=register_data.get("depts")[1])[0]
     register.save()
     if (not UserInfo.objects.filter(user_id=register_data.get("user_id"))
         ) or (not Register.objects.filter(user=user)):
         response['result_code'] = ReturnCode.FAILED
         response['message'] = 'register error.'
         return JsonResponse(response, safe=False)
     # 操作完成
     message = 'user register successfully.'
     response = wrap_json_response(data={},
                                   code=ReturnCode.SUCCESS,
                                   message=message)
     return JsonResponse(response, safe=False)
Exemple #20
0
 def post(self, request):
     # 获取传送过来的数据
     received_body = request.body.decode('utf-8')
     received_body = json.loads(received_body)
     # 引号为传输时的变量名
     edit_data = received_body.get('data')
     # 获取用户
     user = UserInfo.objects.filter(user_id=edit_data.get("user_id"))[0]
     user.phone = edit_data.get("phone")
     user.address = edit_data.get("address")
     user.save()
     # 操作完成
     message = 'edit the personal information successfully.'
     response = wrap_json_response(data={},
                                   code=ReturnCode.SUCCESS,
                                   message=message)
     return JsonResponse(response, safe=False)
Exemple #21
0
    def post(self, request, *args, **kwargs):
        """ 用户登录 """
        response = {}
        post_data = request.body.decode('utf-8')
        print(post_data)
        post_data = json.loads(post_data)
        app_id = post_data.get('appId').strip()
        nickname = post_data.get('nickname').strip()
        code = post_data.get('code').strip()
        print(code)
        print(app_id)
        if not (app_id and code):
            response['result_code'] = ReturnCode.BROKEN_AUTHORIZED_DATA
            response[
                'message'] = 'authorized failed. need entire authorization data.'
            return JsonResponse(response, safe=False)
        try:
            data = c2s(app_id, code)
        except Exception as e:
            print(e)
            response['result_code'] = ReturnCode.FAILED
            response['message'] = 'authorized failed.'
            return JsonResponse(response, safe=False)
        open_id = data.get('openid')
        if not open_id:
            response['result_code'] = ReturnCode.FAILED
            response['message'] = 'authorization error.'
            return JsonResponse(response, safe=False)
        request.session['open_id'] = open_id
        request.session['is_authorized'] = True

        print(open_id)
        # User.objects.get(open_id=open_id) # 不要用get,用get查询如果结果数量 !=1 就会抛异常
        # 如果用户不存在,则新建用户
        if not User.objects.filter(open_id=open_id):
            new_user = User(open_id=open_id, nickname=nickname)
            new_user.save()
        token = create_token({'code': code})
        print('token is', token)
        message = 'user authorize successfully.'
        response = wrap_json_response(data={},
                                      code=ReturnCode.SUCCESS,
                                      message=message)
        return Response({'status': True, 'token': token})
Exemple #22
0
 def get(self, request):
     response_data = []
     judge_exists = True
     activity_id = request.GET.get('activity_id')
     activity = Activity.objects.filter(activity_id=activity_id)[0]
     try:
         Comment.objects.filter(activity=activity)[0]
     except:
         judge_exists = False
     if judge_exists:
         comments = []
         comment = []
         temp_comments = Comment.objects.filter(
             activity=activity).order_by("-time")
         time = temp_comments[0].time.strftime("%Y-%m-%d")
         for temp_comment in temp_comments:
             if temp_comment.time.strftime("%Y-%m-%d") != time:
                 comments.append({
                     "date": time,
                     "message": comment,
                 })
                 comment = []
                 time = temp_comment.time.strftime("%Y-%m-%d")
                 comment.append(temp_comment.message)
             else:
                 comment.append(temp_comment.message)
         comments.append({
             "date": time,
             "message": comment,
         })
         comments.append({
             "date": "End",
             "message": [],
         })
         json_data = json.dumps(comments)
         # 将生成的级联数据返回
         response_data.append(json_data)
         response = self.wrap_json_response(data=response_data)
         return JsonResponse(data=response, safe=False)
     else:
         response = wrap_json_response(data={}, code=ReturnCode.FAILED)
         return JsonResponse(response, safe=False)
Exemple #23
0
 def post(self, request):
     response = {}
     # 获取传送过来的数据
     received_body = request.body.decode('utf-8')
     received_body = json.loads(received_body)
     # 引号为传输时的变量名
     data = received_body.get('data')
     # 修改
     user = UserInfo.objects.filter(user_id=data.get('user_id'))[0]
     activity = Activity.objects.filter(
         activity_id=data.get('activity_id'))[0]
     Comment.objects.create(activity=activity,
                            user=user,
                            message=data.get('message'))
     # 操作完成
     message = 'add comment successfully.'
     response = wrap_json_response(data={},
                                   code=ReturnCode.SUCCESS,
                                   message=message)
     return JsonResponse(response, safe=False)
Exemple #24
0
def __authorize_by_code(request):
    '''
    使用 wx.login 获取到临时code,到微信提供的code2session授权接口
    :param request:
    :return:
    '''
    post_data = request.body.decode('utf-8')
    post_data = json.loads(post_data)
    code = post_data.get('code')
    app_id = post_data.get('appId')
    nickname = post_data('nickname')

    response = {}
    if not code or not app_id:
        response['message'] = 'not data'
        response['code'] = ReturnCode.BROKEN_AUTHORIZED_DATA
        return JsonResponse(data=response, safe=False)

    data = c2s(app_id, code)
    openid = data.get('openid')
    print('get openid:', openid)
    response = wrap_json_response(code=ReturnCode.SUCCESS,
                                  message='auth success')
    return JsonResponse(data=response, safe=False)
Exemple #25
0
def test_session(request):
    request.session['message'] = 'Test Django Session OK!'
    response = wrap_json_response(code=ReturnCode.SUCCESS)
    return JsonResponse(data=response, safe=False)
Exemple #26
0
def test_session2(request):
    print('session content: ', request.session.items())
    response = wrap_json_response(code=ReturnCode.SUCCESS)
    return JsonResponse(data=response, safe=False)
Exemple #27
0
def test_session(request):
    print("ok")
    request.session['message'] = 123
    response = wrap_json_response(code=ReturnCode.SUCCESS)
    return JsonResponse(data=response, safe=False)
Exemple #28
0
def __authorize_by_code(request):
    '''
    使用wx.login的到的临时code到微信提供的code2session接口授权

    post_data = {
        'encryptedData': 'xxxx',
        'appId': 'xxx',
        'sessionKey': 'xxx',
        'iv': 'xxx'
    }
    '''
    response = {}
    post_data = request.body.decode('utf-8')
    post_data = json.loads(post_data)
    app_id = post_data.get('appId').strip()
    code = post_data.get('code').strip()
    if not (app_id and code):
        response['result_code'] = ReturnCode.BROKEN_AUTHORIZED_DATA
        response[
            'message'] = 'authorized failed. need entire authorization data.'
        return JsonResponse(response, safe=False)
    try:
        data = c2s(app_id, code)
    except Exception as e:
        response['result_code'] = ReturnCode.FAILED
        response['message'] = 'authorized failed.'
        return JsonResponse(response, safe=False)
    open_id = data.get('openid')
    if not open_id:
        response['result_code'] = ReturnCode.FAILED
        response['message'] = 'authorization error.'
        return JsonResponse(response, safe=False)
    request.session['open_id'] = open_id
    request.session['is_authorized'] = True

    # User.objects.get(open_id=open_id) # 不要用get,用get查询如果结果数量 !=1 就会抛异常
    # 如果用户不存在,则新建用户
    if not UserInfo.objects.filter(openid=open_id):
        new_user = UserInfo(openid=open_id)
        new_user.save()

    user = UserInfo.objects.filter(openid=open_id)[0]
    # user = UserInfo.objects.filter(openid="ozMjy5HyQ8l7u691BTymwy7_Rwy4")[0]
    user_id = user.user_id
    account_info = AccountInfo(id=user_id)

    if (not Register.objects.filter(user=user_id)) and (
            not UserClub.objects.filter(user=user_id)):
        account_info.set_status(register=False, status=False)
    else:
        account_info.set_status(register=True, status=user.judge_invalid)

    if user.judge_invalid:
        account_info.set_power(user.userpower)
        account_info.set_position(user.userclub)
        account_info.set_global(Master.objects.all()[0])

    # 自定义类对象转换成json对象   普通对象直接用 json.dumps(object_name) 即可
    json_account_info = json.dumps(account_info.__dict__, ensure_ascii=False)
    message = 'user authorize successfully.'
    response = wrap_json_response(data=json_account_info,
                                  code=ReturnCode.SUCCESS,
                                  message=message)
    return JsonResponse(response, safe=False)
Exemple #29
0
def __authorize_by_code(request):
    response = {}
    post_data = request.body.decode('utf-8')
    post_data = json.loads(post_data)
    app_id = post_data.get('appId').strip()
    nickname = post_data.get('nickname').strip()
    code = post_data.get('code').strip()
    group = post_data.get('group')
    password = post_data.get('password')
    print('group is', group)
    student_pwd = Group.objects.filter(name='student').first().rolecode.code
    teacher_pwd = Group.objects.filter(name='teacher').first().rolecode.code
    print(type(password), password, type(teacher_pwd), teacher_pwd)

    if not (app_id and code):
        response['result_code'] = ReturnCode.BROKEN_AUTHORIZED_DATA
        response[
            'message'] = 'authorized failed. need entire authorization data.'
        return JsonResponse(response, safe=False)
    try:
        data = c2s(app_id, code)
    except Exception as e:
        print(e)
        response['result_code'] = ReturnCode.FAILED
        response['message'] = 'authorized failed.'
        return JsonResponse(response, safe=False)
    open_id = data.get('openid')
    if not open_id:
        response['result_code'] = ReturnCode.FAILED
        response['message'] = 'authorization error.'
        return JsonResponse(response, safe=False)
    if group == 'teacher' and password != teacher_pwd:
        print('password is', password, 'teacher_pwd is', teacher_pwd)
        response['result_code'] = ReturnCode.FAILED
        response['message'] = '密码错误.'
        return JsonResponse(response, safe=False)
    # if  group=='student' and password!=student_pwd:
    #     response['result_code'] = ReturnCode.FAILED
    #     response['message'] = '密码错误.'
    #     return JsonResponse(response, safe=False)
    request.session['open_id'] = open_id
    request.session['is_authorized'] = True
    request.session['group'] = group

    print('session group is', request.session['group'])

    # User.objects.get(open_id=open_id) # 不要用get,用get查询如果结果数量 !=1 就会抛异常
    # 如果用户不存在,则新建用户
    if not User.objects.filter(open_id=open_id):
        if group == 'teacher':
            print('is admin')
            group = Group.objects.filter(id=2).first()
            new_user = User.objects.create_user(open_id=open_id,
                                                username=nickname,
                                                nickname=nickname,
                                                is_staff=1)
        else:
            print('is student')
            group = Group.objects.filter(id=1).first()
            new_user = User.objects.create_user(open_id=open_id,
                                                username=nickname,
                                                nickname=nickname)
        new_user.groups.add(group)
        new_user.save()

    else:
        if group == 'teacher':
            print('is admin')
            group = Group.objects.filter(id=2).first()
            new_user = User.objects.filter(open_id=open_id).first()
        else:
            print('is student')
            group = Group.objects.filter(id=1).first()
            new_user = User.objects.filter(open_id=open_id).first()
        new_user.groups.add(group)
        new_user.save()

    message = 'user authorize successfully.'
    response = wrap_json_response(data={},
                                  code=ReturnCode.SUCCESS,
                                  message=message)
    return JsonResponse(response, safe=False)
Exemple #30
0
def logout(request):
    request.session.clear()
    response = wrap_json_response(code=ReturnCode.SUCCESS)
    return JsonResponse(data=response, safe=False)