Ejemplo n.º 1
0
    def get(self, **kwargs):

        data = []

        if kwargs.get('username'):
            username = kwargs.get('username')
            user_obj = mysql_session.query(UserAuthModal).filter(
                UserAuthModal.username == username).all()
            if not user_obj:
                error = {
                    "error": {
                        "message": "please check username",
                        "status_code": 400
                    }
                }
                resp = self.response.common_error(error)
                return Response(json.dumps(resp),
                                400,
                                mimetype='application/json')

            for item in user_obj:
                temp = item.to_dict()
                # temp.pop('created_on')
                data.append(temp)

            return Response(json.dumps(data), mimetype='application/json')

        elif kwargs.get('user_id'):
            user_id = int(kwargs.get('user_id'))
            user_obj = mysql_session.query(cc_user_auth1).filter(
                cc_user_auth1.id == user_id).all()
        else:
            user_obj = {}
        if len(user_obj) == 0:
            return Response(json.dumps({'message': 'please check user'}),
                            mimetype='application/json')
Ejemplo n.º 2
0
    def post(self):
        """
        @api {post} /password/reset Forgot password
        @apiName ForgotPassword
        @apiGroup User

        @apiParam {String} username User name

        @apiSuccess {String} username User name

        @apiSuccessExample e.g. Success-Response
        HTTP/1.1 200 OK
        {
            "username": "******"
        }
        @apiErrorExample Database error
        HTTP/1.1 400 Bad Request
        {"message": "API-ERR-DB"}

        @apiErrorExample Username required
        HTTP/1.1 400 Bad Request
        {"message": "RESET-REQ-USERNAME"}

        @apiErrorExample Requested Username Not available
        HTTP/1.1 400 Bad Request
        {"message": "RESET-NOTFOUND-USERNAME"}

        """
        source=None
        payload = request.json
        username = payload['username']
        user_obj = mysql_session.query(UserAuthModal).filter(UserAuthModal.username == username).all()
        if not user_obj:
            error = {"error":{"message":"please check username", "status_code": 400}}
            resp = self.response.common_error(error) 
            return Response(json.dumps(resp), 400,  mimetype='application/json')    

        log.info('Params : %s', request.json)
        response = forgot_password(username)
        # session.commit()
        return response
Ejemplo n.º 3
0
def reset_password(**kwargs):
    token = kwargs['token']
    response = GeneralResponses()
    user_id = verify_token(token)
    if not user_id:
        raise ValueError('RESET-BAD-VERCODE')

    user = mysql_session.query(UserAuthModal).filter(
        UserAuthModal.username == user_id).first()
    if not user:
        raise ValueError('USER-BAD-ID')
    else:
        characters = string.ascii_letters + string.punctuation + string.digits
        password = "".join(choice(characters) for x in range(randint(8, 16)))
        import pdb
        pdb.set_trace()
        user.temp_password = password_hash(password)['pass']
        mysql_session.commit()
        resp = {}
        meta = {}
        resp = {'data': password, 'meta': meta}
        return response.custom_response("success", resp, 201)
Ejemplo n.º 4
0
    def post(self):

        # abort(500)
        log.debug('Params : %s', request.json)
        sql_data = {}
        error = {}
        serialized_data, serialize_errors = self.user_schema.load(request.json)
        if serialize_errors:
            error = {
                "error": {
                    "message": serialize_errors,
                    "status_code": 400
                }
            }
            return self.response.custom_response("error", error, 400)

        login_object = serialized_data['data']['object_type']
        login_type = serialized_data['data']['login_type']
        if login_type == "0":
            login_object_valid = validate_email(login_object)

            if not login_object_valid:
                error = {
                    "error": {
                        "message": "lemail is not proper",
                        "status_code": 400
                    }
                }
                resp = self.response.common_error(error)
                return Response(json.dumps(resp),
                                400,
                                mimetype='application/json')

        elif login_type == "1":
            login_object_valid = validate_no(login_object)

            if not login_object_valid:
                error = {
                    "error": {
                        "message": "lemail is not proper",
                        "status_code": 400
                    }
                }
                resp = self.response.common_error(error)
                return Response(json.dumps(resp),
                                400,
                                mimetype='application/json')

        # else:
        #     error = {"error":{"message":"login type is not proper", "status_code": 400 }}
        #     return self.response.custom_response("error",error,400)

        cc_project_id = serialized_data['meta']['cc_project_id']
        cc_src_type_id = serialized_data['meta']['cc_src_type_id']
        user_auth_token = serialized_data['meta']['user_auth_token']

        sql_obj = mysql_session.query(UserAuthModal).filter(
            UserAuthModal.username == login_object).first()

        if sql_obj is None:
            error = {
                "error": {
                    "message": "User not found",
                    "status_code": 400
                }
            }
            return self.response.custom_response("error", error, 400)
        auth_data = self.userauth_schema.dump(sql_obj)
        if pbkdf2_sha256.verify(serialized_data['data']['password'],
                                auth_data.data['temp_password']):
            error = {
                "error": {
                    "message": "please change your temporary password ",
                    "status_code": 400
                }
            }
            return self.response.custom_response("error", error, 400)

            # to be redirected to change password page if user has given temporary password
            # more code to be written

        if not pbkdf2_sha256.verify(serialized_data['data']['password'],
                                    auth_data.data['password']):
            error = {
                "error": {
                    "message": "password not match",
                    "status_code": 400
                }
            }
            return self.response.custom_response("error", error, 400)

        meta = {
            "src_type_id": 1,
            "cc_project_id": 2,
            "city_id": 3,
            "status": 200,
            "is_error": 0,
            "messages": []
        }
        data = [{
            "object_id":
            "1234",
            "cookie": [{
                "is_cookie_set": 1,
                "remember_me": 1,
                "is_global": 0
            }],
            "auth_token": [{
                "auth_id": "xuwesssdd"
            }],
            "response":
            "Successful"
        }]
        return jsonify({
            'meta': meta,
            'data': data,
        })
Ejemplo n.º 5
0
    def post(self, **kwargs):

        sql_data = {}
        error = {}
        mongo_data = {}
        sql_data['created_at'] = datetime.datetime.utcnow()

        mongo_data['created_at'] = datetime.datetime.utcnow()
        mongo_data['updated_at'] = datetime.datetime.utcnow()

        sql_data['is_active'] = True
        mongo_data['is_active'] = True

        try:
            import json
            payload = request.json

        except BadRequest as e:
            error = {
                "error": {
                    "message": "Please check meta or data is provided",
                    "status_code": 400
                }
            }
            return self.response.custom_response("error", error, 400)
        serialized_data, serialize_errors = self.serializer.load(payload)

        if serialize_errors:
            error = {
                "error": {
                    "message": serialize_errors,
                    "status_code": 400
                }
            }
            return self.response.custom_response("error", error, 400)

        auth_insert_data = {}
        password_hashed = password_hash(
            serialized_data['data']['info']['password'])

        if not password_hashed['status']:
            error = {
                "error": {
                    "message": "password can't be hashed",
                    "status_code": 400
                }
            }
            return self.response.custom_response("error", error, 400)

        sql_data['username'] = serialized_data['data']['info']['username']
        sql_data['password'] = password_hashed['pass']
        sql_data['cc_login_type'] = 1
        sql_data['cc_project_id'] = serialized_data['meta']['cc_project_id']
        sql_data['cc_user_type_id'] = serialized_data['meta'][
            'cc_user_type_id']
        sql_data['created_by'] = 1
        sql_data['updated_by'] = 1

        try:
            from api.models.configure import mysql_session

            sql_obj = UserAuthModal(**sql_data)
            mysql_session.add(sql_obj)
            mysql_session.commit()
            auth_insert_data = sql_obj.to_dict()

        except SQLAlchemyError as exc:
            mysql_session.rollback()
            error = {
                "error": {
                    "message": exc.orig.args[1],
                    "status_code": 400
                }
            }
            return self.response.custom_response("error", error, 400)

        if not bool(auth_insert_data):
            mysql_session.rollback()
            error = {
                "error": {
                    "message": "Mysql Data not insereted in the Database",
                    "status_code": 400
                }
            }
            return self.response.custom_response("error", error, 400)

        mongo_connect()

        user_auth_id = auth_insert_data['id']

        mongo_data['first_name'] = serialized_data['data']['info'][
            'first_name']
        mongo_data['last_name'] = serialized_data['data']['info']['last_name']
        mongo_data['mobile_no'] = serialized_data['data']['info'][
            'phone_number']
        mongo_data['email'] = serialized_data['data']['info']['email_address']
        mongo_data['cc_src_type_id'] = serialized_data['meta'][
            'cc_src_type_id']
        mongo_data['city_id'] = serialized_data['data']['info']['city_id']
        mongo_data['cc_project_id'] = serialized_data['meta']['cc_project_id']
        mongo_data['cc_user_type_id'] = serialized_data['meta'][
            'cc_user_type_id']
        mongo_data['created_by'] = 1
        mongo_data['updated_by'] = 1
        mongo_data['user_auth_id'] = user_auth_id
        mongo_data['area_id'] = serialized_data['data']['info']['pincode']
        try:
            mongo_obj = CcUserProfile(**mongo_data).save()
        except Exception as e:
            mysql_session.delete(sql_obj)
            mysql_session.commit()
            error = {"error": {"message": e._message, "status_code": 400}}
            return self.response.custom_response("error", error, 400)

        mongo_insert_data = parse_mongodata(mongo_obj.to_mongo())

        if not bool(mongo_insert_data):
            error = {
                "error": {
                    "message": "Mongo Data not insereted in the Database",
                    "status_code": 400
                }
            }
            return self.response.custom_response("error", error, 400)

        sql_update_data = {}
        sql_update_data['object_id'] = mongo_insert_data['id']
        sql_update_data['updated_at'] = datetime.datetime.utcnow()

        try:
            get_user_obj = mysql_session.query(UserAuthModal).filter(
                UserAuthModal.id == user_auth_id).update(sql_update_data)
            mysql_session.commit()
            auth_update_data = sql_obj.to_dict()

        except SQLAlchemyError as exc:
            mysql_session.delete(sql_obj)
            mysql_session.commit()
            mongo_obj_delete = CcUserProfile.objects(
                id=ObjectId(mongo_insert_data['id'])).delete()
            # mysql_session.rollback()
            error = {
                "error": {
                    "message": exc.orig.args[1],
                    "status_code": 400
                }
            }
            return self.response.custom_response("error", error, 400)

        finally:
            mysql_session.close()

        if not bool(auth_update_data):
            error = {
                "error": {
                    "message": "Mongo Object Id not insereted in the Database",
                    "status_code": 400
                }
            }
            return self.response.custom_response("error", error, 400)

        # email_details = {}
        # email_details['email_type'] = '2'
        #email_details['otp_value'] = otp['otp_val']
        #send_sms = send_sms(customer_details['data'][0]['mobile_no'], **email_details)
        # send_email = send_email(customer_details['data'][0]['email'], **email_details)

        resp = {}
        meta = {
            "cc_project_id": sql_data['cc_project_id'],
            "cc_user_type_id": sql_data['cc_user_type_id']
        }
        data = {
            "city_id": mongo_data['city_id'],
            "object_id": mongo_insert_data['id'],
            "verified_status": {
                "is_email_verified": 0,
                "is_phone_verified": 0
            }
        }
        resp = {'data': data, 'meta': meta}
        return self.response.custom_response("success", resp, 201)
Ejemplo n.º 6
0
    def post(self):

        # sql_data={}
        error = {}

        try:
            payload = request.json

        except BadRequest as e:
            error = {
                "error": {
                    "message": "Please check meta or data is provided",
                    "status_code": 400
                }
            }
            return self.response.custom_response("error", error, 400)
        serialized_data, serialize_errors = self.serializer.load(payload)

        if serialize_errors:
            error = {
                "error": {
                    "message": serialize_errors,
                    "status_code": 400
                }
            }
            return self.response.custom_response("error", error, 400)

        user_id = str(serialized_data['data']['object_id'])
        new_hashed_pass = password_hash(
            serialized_data['data']['password']['new_password'])

        cc_project_id = serialized_data['meta']['cc_project_id']
        cc_src_type_id = serialized_data['meta']['cc_src_type_id']
        user_auth_token = serialized_data['meta']['user_auth_token']

        from api.models.configure import mysql_session

        sql_obj = mysql_session.query(UserAuthModal).filter(
            UserAuthModal.id == user_id).first()
        if sql_obj is None:
            mysql_session.rollback()
            error = {
                "error": {
                    "message": "User not found",
                    "status_code": 400
                }
            }
            return self.response.custom_response("error", error, 400)

        auth_data = sql_obj.to_dict()
        match_old_pass = password_check(
            serialized_data['data']['password']['old_password'],
            auth_data['password'])
        if not match_old_pass:
            error = {
                "error": {
                    "message": "password not match",
                    "status_code": 400
                }
            }
            return self.response.custom_response("error", error, 400)

        otp_data = {"user_auth_id": user_id, "cc_project_id": cc_project_id}

        otp_flag = verify_otp(otp_data,
                              serialized_data['data']['otp']['otp_value'])

        if otp_flag['status']:

            sql_update_data = {}
            sql_update_data['password'] = new_hashed_pass['pass']
            sql_update_data['updated_at'] = datetime.datetime.utcnow()
            sql_update_data['updated_by'] = 1

            sql_obj = mysql_session.query(UserAuthModal).filter(
                UserAuthModal.id == user_id).update(sql_update_data)
            mysql_session.commit()
            # auth_update_data = sql_obj.to_dict()

            if not sql_obj:
                error = {
                    "error": {
                        "message": "User password not updated",
                        "status_code": 400
                    }
                }
                return self.response.custom_response("error", error, 400)

            resp = {}
            meta = {
                "cc_project_id": cc_project_id,
                "cc_src_type_id": cc_src_type_id
            }
            data = {
                "object_id": user_id,
                "user_auth_token": user_auth_token,
                "response": "Password Changed"
            }
            resp = {'data': data, 'meta': meta}

            return self.response.custom_response("success", resp, 201)
        else:
            error = {
                "error": {
                    "message": otp_flag['message'],
                    "status_code": 400
                }
            }
            return self.response.custom_response("error", error, 400)