{"action":"created","comment":{"url":"https://api.github.com/repos/Flowminder/FlowKit/pulls/comments/363851260","pull_request_review_id":339373838,"id":363851260,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDM2Mzg1MTI2MA==","diff_hunk":"@@ -45,15 +45,24 @@ describe(\"Two-factor setup\", function() {\n                   .get(\"[data-button-id=submit]\")\n                   .click();\n                 cy.contains(\"My Servers\").should(\"be.visible\");\n+                cy.get(\"#logout\").click();\n+                cy.get(\"#username\")\n+                  .type(username)\n+                  .get(\"#password\")\n+                  .type(password)\n+                  .get(\"button\")\n+                  .click()\n+                  .get(\"#two_factor_code\")\n+                  .type(mfaCode.stdout) // Log in using backup code because we don't want to wait for a new mfa code","path":"flowauth/frontend/cypress/integration/two_factor_auth.js","position":12,"original_position":12,"commit_id":"c99d75a7afc75bac599cf259f2d8c2d6517c9cf7","original_commit_id":"c99d75a7afc75bac599cf259f2d8c2d6517c9cf7","user":{"login":"jch1g10","id":8958797,"node_id":"MDQ6VXNlcjg5NTg3OTc=","avatar_url":"https://avatars0.githubusercontent.com/u/8958797?v=4","gravatar_id":"","url":"https://api.github.com/users/jch1g10","html_url":"https://github.com/jch1g10","followers_url":"https://api.github.com/users/jch1g10/followers","following_url":"https://api.github.com/users/jch1g10/following{/other_user}","gists_url":"https://api.github.com/users/jch1g10/gists{/gist_id}","starred_url":"https://api.github.com/users/jch1g10/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jch1g10/subscriptions","organizations_url":"https://api.github.com/users/jch1g10/orgs","repos_url":"https://api.github.com/users/jch1g10/repos","events_url":"https://api.github.com/users/jch1g10/events{/privacy}","received_events_url":"https://api.github.com/users/jch1g10/received_events","type":"User","site_admin":false},"body":"The comment here confused me. I assume this was just copy-pasted from below?","created_at":"2020-01-07T17:04:15Z","updated_at":"2020-01-07T17:06:34Z","html_url":"https://github.com/Flowminder/FlowKit/pull/1229#discussion_r363851260","pull_request_url":"https://api.github.com/repos/Flowminder/FlowKit/pulls/1229","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/Flowminder/FlowKit/pulls/comments/363851260"},"html":{"href":"https://github.com/Flowminder/FlowKit/pull/1229#discussion_r363851260"},"pull_request":{"href":"https://api.github.com/repos/Flowminder/FlowKit/pulls/1229"}}},"pull_request":{"url":"https://api.github.com/repos/Flowminder/FlowKit/pulls/1229","id":313235734,"node_id":"MDExOlB1bGxSZXF1ZXN0MzEzMjM1NzM0","html_url":"https://github.com/Flowminder/FlowKit/pull/1229","diff_url":"https://github.com/Flowminder/FlowKit/pull/1229.diff","patch_url":"https://github.com/Flowminder/FlowKit/pull/1229.patch","issue_url":"https://api.github.com/repos/Flowminder/FlowKit/issues/1229","number":1229,"state":"open","locked":false,"title":"Dogpile cache","user":{"login":"greenape","id":472828,"node_id":"MDQ6VXNlcjQ3MjgyOA==","avatar_url":"https://avatars0.githubusercontent.com/u/472828?v=4","gravatar_id":"","url":"https://api.github.com/users/greenape","html_url":"https://github.com/greenape","followers_url":"https://api.github.com/users/greenape/followers","following_url":"https://api.github.com/users/greenape/following{/other_user}","gists_url":"https://api.github.com/users/greenape/gists{/gist_id}","starred_url":"https://api.github.com/users/greenape/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/greenape/subscriptions","organizations_url":"https://api.github.com/users/greenape/orgs","repos_url":"https://api.github.com/users/greenape/repos","events_url":"https://api.github.com/users/greenape/events{/privacy}","received_events_url":"https://api.github.com/users/greenape/received_events","type":"User","site_admin":false},"body":"Closes #1173\r\n\r\n### I have:\r\n\r\n- [x] Formatted any Python files with [black](https://github.com/ambv/black)\r\n- [x] Brought the branch up to date with master\r\n- [x] Added any relevant Github labels\r\n- [x] Added tests for any new additions\r\n- [x] Added or updated any relevant documentation\r\n- [ ] Added an Architectural Decision Record (ADR), if appropriate\r\n- [x] Added an [MPLv2 License Header](https://www.mozilla.org/en-US/MPL/headers/) if appropriate\r\n- [x] Updated the [Changelog](https://github.com/Flowminder/FlowKit/blob/master/CHANGELOG.md) \r\n\r\n### Description\r\n\r\nSwitches to using dogpilecache to hold last used 2factor codes for Flowauth rather than storing them in the db. This allows the last used codes to expire, and means we avoid a hidden commit of the db session when verifying them.\r\nCan either use a file backend, or a Redis backend.\r\n\r\nMaking this WIP as much as anything because I can't quite see where the docs for it should live.","created_at":"2019-09-02T11:59:44Z","updated_at":"2020-01-07T17:06:33Z","closed_at":null,"merged_at":null,"merge_commit_sha":"5b60758a635ac0825f2e8f13d2c95083dd47f497","assignee":{"login":"jch1g10","id":8958797,"node_id":"MDQ6VXNlcjg5NTg3OTc=","avatar_url":"https://avatars0.githubusercontent.com/u/8958797?v=4","gravatar_id":"","url":"https://api.github.com/users/jch1g10","html_url":"https://github.com/jch1g10","followers_url":"https://api.github.com/users/jch1g10/followers","following_url":"https://api.github.com/users/jch1g10/following{/other_user}","gists_url":"https://api.github.com/users/jch1g10/gists{/gist_id}","starred_url":"https://api.github.com/users/jch1g10/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jch1g10/subscriptions","organizations_url":"https://api.github.com/users/jch1g10/orgs","repos_url":"https://api.github.com/users/jch1g10/repos","events_url":"https://api.github.com/users/jch1g10/events{/privacy}","received_events_url":"https://api.github.com/users/jch1g10/received_events","type":"User","site_admin":false},"assignees":[{"login":"jch1g10","id":8958797,"node_id":"MDQ6VXNlcjg5NTg3OTc=","avatar_url":"https://avatars0.githubusercontent.com/u/8958797?v=4","gravatar_id":"","url":"https://api.github.com/users/jch1g10","html_url":"https://github.com/jch1g10","followers_url":"https://api.github.com/users/jch1g10/followers","following_url":"https://api.github.com/users/jch1g10/following{/other_user}","gists_url":"https://api.github.com/users/jch1g10/gists{/gist_id}","starred_url":"https://api.github.com/users/jch1g10/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jch1g10/subscriptions","organizations_url":"https://api.github.com/users/jch1g10/orgs","repos_url":"https://api.github.com/users/jch1g10/repos","events_url":"https://api.github.com/users/jch1g10/events{/privacy}","received_events_url":"https://api.github.com/users/jch1g10/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":1117933364,"node_id":"MDU6TGFiZWwxMTE3OTMzMzY0","url":"https://api.github.com/repos/Flowminder/FlowKit/labels/FlowAuth","name":"FlowAuth","color":"f4eb6b","default":false,"description":"Issues related to FlowAuth"},{"id":1112016359,"node_id":"MDU6TGFiZWwxMTEyMDE2MzU5","url":"https://api.github.com/repos/Flowminder/FlowKit/labels/bug","name":"bug","color":"d73a4a","default":true,"description":"Something isn't working"},{"id":1112016361,"node_id":"MDU6TGFiZWwxMTEyMDE2MzYx","url":"https://api.github.com/repos/Flowminder/FlowKit/labels/enhancement","name":"enhancement","color":"a2eeef","default":true,"description":"New feature or request"},{"id":1141726439,"node_id":"MDU6TGFiZWwxMTQxNzI2NDM5","url":"https://api.github.com/repos/Flowminder/FlowKit/labels/security","name":"security","color":"c13843","default":false,"description":""}],"milestone":null,"commits_url":"https://api.github.com/repos/Flowminder/FlowKit/pulls/1229/commits","review_comments_url":"https://api.github.com/repos/Flowminder/FlowKit/pulls/1229/comments","review_comment_url":"https://api.github.com/repos/Flowminder/FlowKit/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Flowminder/FlowKit/issues/1229/comments","statuses_url":"https://api.github.com/repos/Flowminder/FlowKit/statuses/c99d75a7afc75bac599cf259f2d8c2d6517c9cf7","head":{"label":"Flowminder:dogpile","ref":"dogpile","sha":"c99d75a7afc75bac599cf259f2d8c2d6517c9cf7","user":{"login":"Flowminder","id":14016903,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE0MDE2OTAz","avatar_url":"https://avatars2.githubusercontent.com/u/14016903?v=4","gravatar_id":"","url":"https://api.github.com/users/Flowminder","html_url":"https://github.com/Flowminder","followers_url":"https://api.github.com/users/Flowminder/followers","following_url":"https://api.github.com/users/Flowminder/following{/other_user}","gists_url":"https://api.github.com/users/Flowminder/gists{/gist_id}","starred_url":"https://api.github.com/users/Flowminder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Flowminder/subscriptions","organizations_url":"https://api.github.com/users/Flowminder/orgs","repos_url":"https://api.github.com/users/Flowminder/repos","events_url":"https://api.github.com/users/Flowminder/events{/privacy}","received_events_url":"https://api.github.com/users/Flowminder/received_events","type":"Organization","site_admin":false},"repo":{"id":155638125,"node_id":"MDEwOlJlcG9zaXRvcnkxNTU2MzgxMjU=","name":"FlowKit","full_name":"Flowminder/FlowKit","private":false,"owner":{"login":"Flowminder","id":14016903,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE0MDE2OTAz","avatar_url":"https://avatars2.githubusercontent.com/u/14016903?v=4","gravatar_id":"","url":"https://api.github.com/users/Flowminder","html_url":"https://github.com/Flowminder","followers_url":"https://api.github.com/users/Flowminder/followers","following_url":"https://api.github.com/users/Flowminder/following{/other_user}","gists_url":"https://api.github.com/users/Flowminder/gists{/gist_id}","starred_url":"https://api.github.com/users/Flowminder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Flowminder/subscriptions","organizations_url":"https://api.github.com/users/Flowminder/orgs","repos_url":"https://api.github.com/users/Flowminder/repos","events_url":"https://api.github.com/users/Flowminder/events{/privacy}","received_events_url":"https://api.github.com/users/Flowminder/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/Flowminder/FlowKit","description":"FlowKit: Flowminder CDR analytics toolkit","fork":false,"url":"https://api.github.com/repos/Flowminder/FlowKit","forks_url":"https://api.github.com/repos/Flowminder/FlowKit/forks","keys_url":"https://api.github.com/repos/Flowminder/FlowKit/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Flowminder/FlowKit/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Flowminder/FlowKit/teams","hooks_url":"https://api.github.com/repos/Flowminder/FlowKit/hooks","issue_events_url":"https://api.github.com/repos/Flowminder/FlowKit/issues/events{/number}","events_url":"https://api.github.com/repos/Flowminder/FlowKit/events","assignees_url":"https://api.github.com/repos/Flowminder/FlowKit/assignees{/user}","branches_url":"https://api.github.com/repos/Flowminder/FlowKit/branches{/branch}","tags_url":"https://api.github.com/repos/Flowminder/FlowKit/tags","blobs_url":"https://api.github.com/repos/Flowminder/FlowKit/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Flowminder/FlowKit/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Flowminder/FlowKit/git/refs{/sha}","trees_url":"https://api.github.com/repos/Flowminder/FlowKit/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Flowminder/FlowKit/statuses/{sha}","languages_url":"https://api.github.com/repos/Flowminder/FlowKit/languages","stargazers_url":"https://api.github.com/repos/Flowminder/FlowKit/stargazers","contributors_url":"https://api.github.com/repos/Flowminder/FlowKit/contributors","subscribers_url":"https://api.github.com/repos/Flowminder/FlowKit/subscribers","subscription_url":"https://api.github.com/repos/Flowminder/FlowKit/subscription","commits_url":"https://api.github.com/repos/Flowminder/FlowKit/commits{/sha}","git_commits_url":"https://api.github.com/repos/Flowminder/FlowKit/git/commits{/sha}","comments_url":"https://api.github.com/repos/Flowminder/FlowKit/comments{/number}","issue_comment_url":"https://api.github.com/repos/Flowminder/FlowKit/issues/comments{/number}","contents_url":"https://api.github.com/repos/Flowminder/FlowKit/contents/{+path}","compare_url":"https://api.github.com/repos/Flowminder/FlowKit/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Flowminder/FlowKit/merges","archive_url":"https://api.github.com/repos/Flowminder/FlowKit/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Flowminder/FlowKit/downloads","issues_url":"https://api.github.com/repos/Flowminder/FlowKit/issues{/number}","pulls_url":"https://api.github.com/repos/Flowminder/FlowKit/pulls{/number}","milestones_url":"https://api.github.com/repos/Flowminder/FlowKit/milestones{/number}","notifications_url":"https://api.github.com/repos/Flowminder/FlowKit/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Flowminder/FlowKit/labels{/name}","releases_url":"https://api.github.com/repos/Flowminder/FlowKit/releases{/id}","deployments_url":"https://api.github.com/repos/Flowminder/FlowKit/deployments","created_at":"2018-10-31T23:59:44Z","updated_at":"2020-01-07T10:34:35Z","pushed_at":"2020-01-07T11:23:31Z","git_url":"git://github.com/Flowminder/FlowKit.git","ssh_url":"git@github.com:Flowminder/FlowKit.git","clone_url":"https://github.com/Flowminder/FlowKit.git","svn_url":"https://github.com/Flowminder/FlowKit","homepage":"https://flowminder.github.io/FlowKit/","size":150258,"stargazers_count":38,"watchers_count":38,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":8,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":111,"license":{"key":"mpl-2.0","name":"Mozilla Public License 2.0","spdx_id":"MPL-2.0","url":"https://api.github.com/licenses/mpl-2.0","node_id":"MDc6TGljZW5zZTE0"},"forks":8,"open_issues":111,"watchers":38,"default_branch":"master"}},"base":{"label":"Flowminder:master","ref":"master","sha":"4f0acc114e2e6d08610755d831cd6821af37b8f8","user":{"login":"Flowminder","id":14016903,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE0MDE2OTAz","avatar_url":"https://avatars2.githubusercontent.com/u/14016903?v=4","gravatar_id":"","url":"https://api.github.com/users/Flowminder","html_url":"https://github.com/Flowminder","followers_url":"https://api.github.com/users/Flowminder/followers","following_url":"https://api.github.com/users/Flowminder/following{/other_user}","gists_url":"https://api.github.com/users/Flowminder/gists{/gist_id}","starred_url":"https://api.github.com/users/Flowminder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Flowminder/subscriptions","organizations_url":"https://api.github.com/users/Flowminder/orgs","repos_url":"https://api.github.com/users/Flowminder/repos","events_url":"https://api.github.com/users/Flowminder/events{/privacy}","received_events_url":"https://api.github.com/users/Flowminder/received_events","type":"Organization","site_admin":false},"repo":{"id":155638125,"node_id":"MDEwOlJlcG9zaXRvcnkxNTU2MzgxMjU=","name":"FlowKit","full_name":"Flowminder/FlowKit","private":false,"owner":{"login":"Flowminder","id":14016903,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE0MDE2OTAz","avatar_url":"https://avatars2.githubusercontent.com/u/14016903?v=4","gravatar_id":"","url":"https://api.github.com/users/Flowminder","html_url":"https://github.com/Flowminder","followers_url":"https://api.github.com/users/Flowminder/followers","following_url":"https://api.github.com/users/Flowminder/following{/other_user}","gists_url":"https://api.github.com/users/Flowminder/gists{/gist_id}","starred_url":"https://api.github.com/users/Flowminder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Flowminder/subscriptions","organizations_url":"https://api.github.com/users/Flowminder/orgs","repos_url":"https://api.github.com/users/Flowminder/repos","events_url":"https://api.github.com/users/Flowminder/events{/privacy}","received_events_url":"https://api.github.com/users/Flowminder/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/Flowminder/FlowKit","description":"FlowKit: Flowminder CDR analytics toolkit","fork":false,"url":"https://api.github.com/repos/Flowminder/FlowKit","forks_url":"https://api.github.com/repos/Flowminder/FlowKit/forks","keys_url":"https://api.github.com/repos/Flowminder/FlowKit/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Flowminder/FlowKit/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Flowminder/FlowKit/teams","hooks_url":"https://api.github.com/repos/Flowminder/FlowKit/hooks","issue_events_url":"https://api.github.com/repos/Flowminder/FlowKit/issues/events{/number}","events_url":"https://api.github.com/repos/Flowminder/FlowKit/events","assignees_url":"https://api.github.com/repos/Flowminder/FlowKit/assignees{/user}","branches_url":"https://api.github.com/repos/Flowminder/FlowKit/branches{/branch}","tags_url":"https://api.github.com/repos/Flowminder/FlowKit/tags","blobs_url":"https://api.github.com/repos/Flowminder/FlowKit/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Flowminder/FlowKit/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Flowminder/FlowKit/git/refs{/sha}","trees_url":"https://api.github.com/repos/Flowminder/FlowKit/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Flowminder/FlowKit/statuses/{sha}","languages_url":"https://api.github.com/repos/Flowminder/FlowKit/languages","stargazers_url":"https://api.github.com/repos/Flowminder/FlowKit/stargazers","contributors_url":"https://api.github.com/repos/Flowminder/FlowKit/contributors","subscribers_url":"https://api.github.com/repos/Flowminder/FlowKit/subscribers","subscription_url":"https://api.github.com/repos/Flowminder/FlowKit/subscription","commits_url":"https://api.github.com/repos/Flowminder/FlowKit/commits{/sha}","git_commits_url":"https://api.github.com/repos/Flowminder/FlowKit/git/commits{/sha}","comments_url":"https://api.github.com/repos/Flowminder/FlowKit/comments{/number}","issue_comment_url":"https://api.github.com/repos/Flowminder/FlowKit/issues/comments{/number}","contents_url":"https://api.github.com/repos/Flowminder/FlowKit/contents/{+path}","compare_url":"https://api.github.com/repos/Flowminder/FlowKit/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Flowminder/FlowKit/merges","archive_url":"https://api.github.com/repos/Flowminder/FlowKit/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Flowminder/FlowKit/downloads","issues_url":"https://api.github.com/repos/Flowminder/FlowKit/issues{/number}","pulls_url":"https://api.github.com/repos/Flowminder/FlowKit/pulls{/number}","milestones_url":"https://api.github.com/repos/Flowminder/FlowKit/milestones{/number}","notifications_url":"https://api.github.com/repos/Flowminder/FlowKit/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Flowminder/FlowKit/labels{/name}","releases_url":"https://api.github.com/repos/Flowminder/FlowKit/releases{/id}","deployments_url":"https://api.github.com/repos/Flowminder/FlowKit/deployments","created_at":"2018-10-31T23:59:44Z","updated_at":"2020-01-07T10:34:35Z","pushed_at":"2020-01-07T11:23:31Z","git_url":"git://github.com/Flowminder/FlowKit.git","ssh_url":"git@github.com:Flowminder/FlowKit.git","clone_url":"https://github.com/Flowminder/FlowKit.git","svn_url":"https://github.com/Flowminder/FlowKit","homepage":"https://flowminder.github.io/FlowKit/","size":150258,"stargazers_count":38,"watchers_count":38,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":8,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":111,"license":{"key":"mpl-2.0","name":"Mozilla Public License 2.0","spdx_id":"MPL-2.0","url":"https://api.github.com/licenses/mpl-2.0","node_id":"MDc6TGljZW5zZTE0"},"forks":8,"open_issues":111,"watchers":38,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Flowminder/FlowKit/pulls/1229"},"html":{"href":"https://github.com/Flowminder/FlowKit/pull/1229"},"issue":{"href":"https://api.github.com/repos/Flowminder/FlowKit/issues/1229"},"comments":{"href":"https://api.github.com/repos/Flowminder/FlowKit/issues/1229/comments"},"review_comments":{"href":"https://api.github.com/repos/Flowminder/FlowKit/pulls/1229/comments"},"review_comment":{"href":"https://api.github.com/repos/Flowminder/FlowKit/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Flowminder/FlowKit/pulls/1229/commits"},"statuses":{"href":"https://api.github.com/repos/Flowminder/FlowKit/statuses/c99d75a7afc75bac599cf259f2d8c2d6517c9cf7"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"jch1g10"}}