def jwt_login(self, request): """ Login using a JWT token, this must be an encrypted JWT. :param request: The flask request """ # clear the session entry in the database session_manager.clear() # also clear the secure cookie data session.clear() if request.args.get(EQ_URL_QUERY_STRING_JWT_FIELD_NAME) is None: raise NoTokenException("Please provide a token") token = self._jwt_decrypt(request) # once we've decrypted the token correct # check we have the required user data self._check_user_data(token) # get the hashed user id for eq user_id = UserIDGenerator.generate_id(token) user_ik = UserIDGenerator.generate_ik(token) # store the user id in the session session_manager.store_user_id(user_id) # store the user ik in the cookie session_manager.store_user_ik(user_ik) # store the meta data metadata = parse_metadata(token) questionnaire_store = get_questionnaire_store(user_id, user_ik) questionnaire_store.metadata = metadata questionnaire_store.save() logger.info("User authenticated with tx_id=%s", metadata["tx_id"])
def delete_user_data(): get_questionnaire_store(current_user.user_id, current_user.user_ik).delete() session_manager.clear()