def post(self): args = parser.parse_args() if db.hexists('accounts_search', args.account_pseudo) != 0 or db.hexists('accounts_search', args.account_email) != 0: abort(403, message="account name or email already in database") UUID = str(uuid4()) # print(UUID) args.account_characters = [] args.account_key = UUID args.rts_account_key = "not yet linked" account = json.dumps(args) data = {UUID: account} # print(data) # print(type(data)) db.hmset('accounts', data) db.hset('accounts_search', args.account_pseudo, UUID) db.hset('accounts_search', args.account_email, UUID) return UUID, 200
def checkPseudoHash(pseudo, account_hash): # print(db.hget('accounts', UUID)) response = True if not db.hexists('accounts_search', pseudo): if not (communication_core.auth_RTS(pseudo, account_hash)): response = False abort(404, message="Pseudo or email {} doesn't exist".format(pseudo)) return response
def get(self, UUID=None): if not UUID: responses = db.hgetall('quests') traited_responses = {} for key, value in responses.items(): if db.hexists('accounts', key) == 0: traited_responses[key] = literal_eval(responses[key]) else: checkUUID(UUID) traited_responses = literal_eval(db.hget('quests', UUID)) # print(traited_responses) return traited_responses, 200
def put(self): logging.info("patch auth RTS") logging.info("no processed data receive : {}".format(request.data)) args = parser.parse_args() args.account_hash = args.account_hash.upper() checkPseudo(args.account_login) account = checkAuth(args.account_login, args.account_hash, False) if (db.hexists('accounts_search', account["rts_account_key"])): db.hdel('accounts_search', account["rts_account_key"]) account["rts_account_key"] = args.rts_account_key logging.info("change for {}".format(account)) db.hset('accounts_search', args.rts_account_key, account["account_key"]) db.hset('accounts', account["account_key"], json.dumps(account)) # test = str(request.__dict__) # res = make_response(test, 200) return 'modified', 200
def auth_RTS(pseudo, hashed_password): response = True payload = dict() payload["user_name"] = pseudo payload["hashed_password"] = hashed_password url = 'https://RTS/api/authentication_player' headers = {'Content-Type': 'application/json'} try: r = requests.post(url, headers=headers, data=json.dumps(payload), auth=('user', 'PWD+'), verify=False) if r.status_code == 200: if not db.hexists('accounts_search', pseudo): createRTSAccount(json.loads(r.text)["user_name"]) else: logging.info(f"RTS SATUTS CODE: {r.status_code}") response = False except requests.exceptions.RequestException as e: response = False logging.info(e) return response
def checkUUID(UUID): # print(db.hget('classe', UUID)) if not db.hexists('classes', UUID): abort(404, message="UUID {} doesn't exist".format(UUID)) return True
def checkUUID(UUID, target): # print(db.hget('characters', UUID) if not db.hexists(target, UUID): abort(404, message="UUID {} doesn't exist".format(UUID)) return True
def checkPseudo(pseudo): # print(db.hget('accounts', UUID)) if not db.hexists('accounts_search', pseudo): abort(404, message="Pseudo or email {} doesn't exist".format(pseudo)) return True