{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":694304277,"defaultBranch":"main","name":"tower-sessions","ownerLogin":"maxcountryman","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2023-09-20T18:19:15.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/74351?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1713112277.0","currentOid":""},"activityList":{"items":[{"before":"f0a93937ecd2702ca0f707dc3fe7cdc58931f96a","after":null,"ref":"refs/heads/dependabot/cargo/reqwest-0.12.0","pushedAt":"2024-04-14T16:31:17.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"}},{"before":"5f77b7a6ce6226777d1ae9665ec8012384a48c4e","after":"a07bb7a9b807ddcd7730159d1ddfe85fc042b2c2","ref":"refs/heads/main","pushedAt":"2024-04-14T16:30:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"maxcountryman","name":"Max Countryman","path":"/maxcountryman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/74351?s=80&v=4"},"commit":{"message":"bump reqwest","shortMessageHtmlLink":"bump reqwest"}},{"before":"ea29bbc9204d9e7dcf5898c8602a2e47db5db33e","after":"5f77b7a6ce6226777d1ae9665ec8012384a48c4e","ref":"refs/heads/main","pushedAt":"2024-04-14T16:23:33.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"maxcountryman","name":"Max Countryman","path":"/maxcountryman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/74351?s=80&v=4"},"commit":{"message":"mark 0.12.2","shortMessageHtmlLink":"mark 0.12.2"}},{"before":"d7b7e1398b75e2bb4cea266824518943db2b2732","after":"ea29bbc9204d9e7dcf5898c8602a2e47db5db33e","ref":"refs/heads/main","pushedAt":"2024-04-14T16:15:36.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"maxcountryman","name":"Max Countryman","path":"/maxcountryman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/74351?s=80&v=4"},"commit":{"message":"ensure `session.set_expiry` adds or removes the Max-Age attribute to or from the cookie (#191)\n\nThis addresses a bug where using `set_expiry` on a session with no initial expiry time would not add the Max-age attribute to the cookie leading to an inconsitency between the cookie and the database.\r\nFix: #178\r\n\r\nCo-authored-by: M ","shortMessageHtmlLink":"ensure session.set_expiry adds or removes the Max-Age attribute to …"}},{"before":"54f5a96ac68a17de29d663553f0badaa27a8ee85","after":null,"ref":"refs/heads/session-inner","pushedAt":"2024-04-02T17:14:05.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"maxcountryman","name":"Max Countryman","path":"/maxcountryman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/74351?s=80&v=4"}},{"before":"2a542d8799e21d756341132c98617255cae10686","after":"d7b7e1398b75e2bb4cea266824518943db2b2732","ref":"refs/heads/main","pushedAt":"2024-04-02T17:14:04.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"maxcountryman","name":"Max Countryman","path":"/maxcountryman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/74351?s=80&v=4"},"commit":{"message":"move session state into inner struct (#189)\n\nThis wraps session state into an inner struct, reducing the required\r\nArcs.","shortMessageHtmlLink":"move session state into inner struct (#189)"}},{"before":null,"after":"54f5a96ac68a17de29d663553f0badaa27a8ee85","ref":"refs/heads/session-inner","pushedAt":"2024-04-02T02:48:53.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"maxcountryman","name":"Max Countryman","path":"/maxcountryman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/74351?s=80&v=4"},"commit":{"message":"move session state into inner struct\n\nThis wraps session state into an inner struct, reducing the required\nArcs.","shortMessageHtmlLink":"move session state into inner struct"}},{"before":"a8ded49ea161fa3db10594ad471cfd2a1358590a","after":"2a542d8799e21d756341132c98617255cae10686","ref":"refs/heads/main","pushedAt":"2024-03-31T23:29:33.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"maxcountryman","name":"Max Countryman","path":"/maxcountryman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/74351?s=80&v=4"},"commit":{"message":"mark 0.12.1","shortMessageHtmlLink":"mark 0.12.1"}},{"before":"c48f77cdcde831e561e0f84bc1785b4dec1bee9d","after":null,"ref":"refs/heads/cycle-id-collision","pushedAt":"2024-03-31T23:24:35.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"maxcountryman","name":"Max Countryman","path":"/maxcountryman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/74351?s=80&v=4"}},{"before":"6c4bb2f490ca5a5b61748374943db9a2e2476ae4","after":"a8ded49ea161fa3db10594ad471cfd2a1358590a","ref":"refs/heads/main","pushedAt":"2024-03-31T23:24:34.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"maxcountryman","name":"Max Countryman","path":"/maxcountryman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/74351?s=80&v=4"},"commit":{"message":"ensure id cycling invokes create (#188)\n\nThis fixes a bug where calling `cycle_id` would invoke the session store\r\n`save` method rather than the `create` method.\r\n\r\nBecause cycling the session ID involves creating a new ID, this must\r\nfollow the same semantics as normal session creation. Therefore prior\r\nto this fix session ID collision could occur through this vector.","shortMessageHtmlLink":"ensure id cycling invokes create (#188)"}},{"before":null,"after":"c48f77cdcde831e561e0f84bc1785b4dec1bee9d","ref":"refs/heads/cycle-id-collision","pushedAt":"2024-03-31T23:17:08.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"maxcountryman","name":"Max Countryman","path":"/maxcountryman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/74351?s=80&v=4"},"commit":{"message":"ensure id cycling invokes create\n\nThis fixes a bug where calling `cycle_id` would invoke the session store\n`save` method rather than the `create` method.\n\nBecause cycling the session ID involves creating a new ID, this must\nfollow the same semantics as normal session creation. Therefore prior\nto this fix session ID collision could occur through this vector.","shortMessageHtmlLink":"ensure id cycling invokes create"}},{"before":"6ad8933b4f5e71f3202f0c1a28f194f3db5234c8","after":"6c4bb2f490ca5a5b61748374943db9a2e2476ae4","ref":"refs/heads/main","pushedAt":"2024-03-30T14:40:50.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"maxcountryman","name":"Max Countryman","path":"/maxcountryman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/74351?s=80&v=4"},"commit":{"message":"Added tower-sessions-rorm-orm (#187)","shortMessageHtmlLink":"Added tower-sessions-rorm-orm (#187)"}},{"before":"0d8288c236d2097a4fdf3b80be98118459a6ba8d","after":"f0a93937ecd2702ca0f707dc3fe7cdc58931f96a","ref":"refs/heads/dependabot/cargo/reqwest-0.12.0","pushedAt":"2024-03-25T17:56:06.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"},"commit":{"message":"Update reqwest requirement from 0.11.22 to 0.12.0\n\nUpdates the requirements on [reqwest](https://github.com/seanmonstar/reqwest) to permit the latest version.\n- [Release notes](https://github.com/seanmonstar/reqwest/releases)\n- [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/seanmonstar/reqwest/compare/v0.11.22...v0.11.27)\n\n---\nupdated-dependencies:\n- dependency-name: reqwest\n dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Update reqwest requirement from 0.11.22 to 0.12.0"}},{"before":null,"after":"0d8288c236d2097a4fdf3b80be98118459a6ba8d","ref":"refs/heads/dependabot/cargo/reqwest-0.12.0","pushedAt":"2024-03-21T15:59:07.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"},"commit":{"message":"Update reqwest requirement from 0.11.22 to 0.12.0\n\nUpdates the requirements on [reqwest](https://github.com/seanmonstar/reqwest) to permit the latest version.\n- [Release notes](https://github.com/seanmonstar/reqwest/releases)\n- [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/seanmonstar/reqwest/compare/v0.11.22...v0.11.27)\n\n---\nupdated-dependencies:\n- dependency-name: reqwest\n dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Update reqwest requirement from 0.11.22 to 0.12.0"}},{"before":"95798cd5baf4962eecbb84d2773bbc30da98dbb3","after":"6ad8933b4f5e71f3202f0c1a28f194f3db5234c8","ref":"refs/heads/main","pushedAt":"2024-03-19T21:07:00.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"maxcountryman","name":"Max Countryman","path":"/maxcountryman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/74351?s=80&v=4"},"commit":{"message":"mark 0.12.0","shortMessageHtmlLink":"mark 0.12.0"}},{"before":"502ff31bdd9c21ac1dd801d5781733e679f948bb","after":null,"ref":"refs/heads/id-collision-mitigation","pushedAt":"2024-03-19T18:43:26.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"maxcountryman","name":"Max Countryman","path":"/maxcountryman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/74351?s=80&v=4"}},{"before":"bc0d0f95a56b7d71b8181281c58ecb4e881ae39e","after":"95798cd5baf4962eecbb84d2773bbc30da98dbb3","ref":"refs/heads/main","pushedAt":"2024-03-19T18:43:23.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"maxcountryman","name":"Max Countryman","path":"/maxcountryman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/74351?s=80&v=4"},"commit":{"message":"Id collision mitigation (#181)\n\nThis patch introduces a new method, `create`, to the `SessionStore` trait to distinguish between creating a new session and updating an existing one. This distinction is crucial for mitigating the potential for session ID collisions.\r\n\r\nAlthough the probability of session ID collisions is statistically low, given that IDs are composed of securely-random `i128` values, such collisions pose a significant security risk. A store that does not differentiate between session creation and updates could inadvertently allow an existing session to be accessed, leading to potential session takeovers.\r\n\r\nTo prevent this, stores must ensure the uniqueness of session IDs during creation. The new `create` method is designed to allow session store implementers to handle any conflicts and resolve them.\r\n\r\nThis change is a breaking interface update. As a transitional measure, we have provided a default implementation of create that wraps the existing save method. However, this default is not immune to the original issue. Therefore, it is imperative that stores override the create method with an implementation that adheres to the required uniqueness semantics, thereby effectively mitigating the risk of session ID collisions.","shortMessageHtmlLink":"Id collision mitigation (#181)"}},{"before":"2e4df52a78f1adaca89b09b864069a531dd5a188","after":"502ff31bdd9c21ac1dd801d5781733e679f948bb","ref":"refs/heads/id-collision-mitigation","pushedAt":"2024-03-19T18:19:00.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"maxcountryman","name":"Max Countryman","path":"/maxcountryman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/74351?s=80&v=4"},"commit":{"message":"session store tests","shortMessageHtmlLink":"session store tests"}},{"before":"6d3b997c912ed0c4446f0efdfda5f9f4a0f986d1","after":"2e4df52a78f1adaca89b09b864069a531dd5a188","ref":"refs/heads/id-collision-mitigation","pushedAt":"2024-03-19T16:54:08.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"maxcountryman","name":"Max Countryman","path":"/maxcountryman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/74351?s=80&v=4"},"commit":{"message":"additional memory store tests","shortMessageHtmlLink":"additional memory store tests"}},{"before":"6a499b504fb358560410c5979ad0d2fa74e73604","after":"6d3b997c912ed0c4446f0efdfda5f9f4a0f986d1","ref":"refs/heads/id-collision-mitigation","pushedAt":"2024-03-19T15:47:17.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"maxcountryman","name":"Max Countryman","path":"/maxcountryman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/74351?s=80&v=4"},"commit":{"message":"cache also uses create, but only to ensure the interface","shortMessageHtmlLink":"cache also uses create, but only to ensure the interface"}},{"before":"62b27506ced0c16ce3d6f0c0a138bea39898721f","after":"6a499b504fb358560410c5979ad0d2fa74e73604","ref":"refs/heads/id-collision-mitigation","pushedAt":"2024-03-19T15:25:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"maxcountryman","name":"Max Countryman","path":"/maxcountryman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/74351?s=80&v=4"},"commit":{"message":"expand session_store documentation","shortMessageHtmlLink":"expand session_store documentation"}},{"before":"d9f42ab5b283947c20daae2508bed83f654f22b4","after":"62b27506ced0c16ce3d6f0c0a138bea39898721f","ref":"refs/heads/id-collision-mitigation","pushedAt":"2024-03-19T15:01:37.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"maxcountryman","name":"Max Countryman","path":"/maxcountryman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/74351?s=80&v=4"},"commit":{"message":"update life cycle notes","shortMessageHtmlLink":"update life cycle notes"}},{"before":"2bd19cc60f9a9834a72f77b397213c76d55a1258","after":"d9f42ab5b283947c20daae2508bed83f654f22b4","ref":"refs/heads/id-collision-mitigation","pushedAt":"2024-03-19T14:43:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"maxcountryman","name":"Max Countryman","path":"/maxcountryman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/74351?s=80&v=4"},"commit":{"message":"extend method docs, use warning instead of deprecation","shortMessageHtmlLink":"extend method docs, use warning instead of deprecation"}},{"before":"0c9070c0fe20c7e0ba7c5e1d3b2ea29808ca2549","after":"2bd19cc60f9a9834a72f77b397213c76d55a1258","ref":"refs/heads/id-collision-mitigation","pushedAt":"2024-03-18T23:21:44.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"maxcountryman","name":"Max Countryman","path":"/maxcountryman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/74351?s=80&v=4"},"commit":{"message":"session ID collision mitigation in `SessionStore`\n\nThis patch introduces a new method, `create`, to the `SessionStore` trait to distinguish between creating a new session and updating an existing one. This distinction is crucial for mitigating the potential for session ID collisions.\n\nAlthough the probability of session ID collisions is statistically low, given that IDs are composed of securely-random `i128` values, such collisions pose a significant security risk. A store that does not differentiate between session creation and updates could inadvertently allow an existing session to be accessed, leading to potential session takeovers.\n\nTo prevent this, stores must ensure the uniqueness of session IDs during creation. The new `create` method is designed to allow session store implementers to handle any conflicts and resolve them.\n\nThis change is a breaking interface update. As a transitional measure, we have provided a default implementation of create that wraps the existing save method. However, this default is not immune to the original issue. Therefore, it is imperative that stores override the create method with an implementation that adheres to the required uniqueness semantics, thereby effectively mitigating the risk of session ID collisions.","shortMessageHtmlLink":"session ID collision mitigation in SessionStore"}},{"before":"d43112ae09337c088f8aa26e9953ced93f912dd5","after":"0c9070c0fe20c7e0ba7c5e1d3b2ea29808ca2549","ref":"refs/heads/id-collision-mitigation","pushedAt":"2024-03-18T23:20:24.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"maxcountryman","name":"Max Countryman","path":"/maxcountryman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/74351?s=80&v=4"},"commit":{"message":"session ID collision mitigation in `SessionStore`\n\nThis patch introduces a new method, `create`, to the `SessionStore` trait to distinguish between creating a new session and updating an existing one. This distinction is crucial for mitigating the potential for session ID collisions.\n\nAlthough the probability of session ID collisions is statistically low, given that IDs are composed of securely-random `i128` values, such collisions pose a significant security risk. A store that does not differentiate between session creation and updates could inadvertently allow an existing session to be accessed, leading to potential session takeovers.\n\nTo prevent this, stores must ensure the uniqueness of session IDs during creation. The new `create` method is designed to allow session store implementers to handle any conflicts and resolve them.\n\nThis change is a breaking interface update. As a transitional measure, we have provided a default implementation of create that wraps the existing save method. However, this default is not immune to the original issue. Therefore, it is imperative that stores override the create method with an implementation that adheres to the required uniqueness semantics, thereby effectively mitigating the risk of session ID collisions.","shortMessageHtmlLink":"session ID collision mitigation in SessionStore"}},{"before":null,"after":"d43112ae09337c088f8aa26e9953ced93f912dd5","ref":"refs/heads/id-collision-mitigation","pushedAt":"2024-03-18T23:17:53.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"maxcountryman","name":"Max Countryman","path":"/maxcountryman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/74351?s=80&v=4"},"commit":{"message":"session ID collision mitigation in `SessionStore`\n\nThis patch introduces a new method, `create`, to the `SessionStore` trait to distinguish between creating a new session and updating an existing one. This distinction is crucial for mitigating the potential for session ID collisions.\n\nAlthough the probability of session ID collisions is statistically low, given that IDs are composed of securely-random `i128` values, such collisions pose a significant security risk. A store that does not differentiate between session creation and updates could inadvertently allow an existing session to be accessed, leading to potential session takeovers.\n\nTo prevent this, stores must ensure the uniqueness of session IDs during creation. The new `create` method is designed to allow session store implementers to handle any conflicts and resolve them.\n\nThis change is a breaking interface update. As a transitional measure, we have provided a default implementation of create that wraps the existing save method. However, this default is not immune to the original issue. Therefore, it is imperative that stores override the create method with an implementation that adheres to the required uniqueness semantics, thereby effectively mitigating the risk of session ID collisions.","shortMessageHtmlLink":"session ID collision mitigation in SessionStore"}},{"before":"6c91bb206927c9f90dd9d2fe678b72bd8928f4ee","after":null,"ref":"refs/heads/mapped-mutex-guard","pushedAt":"2024-03-17T21:16:00.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"maxcountryman","name":"Max Countryman","path":"/maxcountryman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/74351?s=80&v=4"}},{"before":"e27ecce2c897b10f12d2e1b3612f40c6639b7163","after":"bc0d0f95a56b7d71b8181281c58ecb4e881ae39e","ref":"refs/heads/main","pushedAt":"2024-03-17T21:15:57.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"maxcountryman","name":"Max Countryman","path":"/maxcountryman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/74351?s=80&v=4"},"commit":{"message":"use mapped mutex guard (#177)","shortMessageHtmlLink":"use mapped mutex guard (#177)"}},{"before":"a077b8d7434e7e070858b8a72f90b119f233fb5f","after":"6c91bb206927c9f90dd9d2fe678b72bd8928f4ee","ref":"refs/heads/mapped-mutex-guard","pushedAt":"2024-03-17T20:53:16.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"maxcountryman","name":"Max Countryman","path":"/maxcountryman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/74351?s=80&v=4"},"commit":{"message":"use mapped mutex guard","shortMessageHtmlLink":"use mapped mutex guard"}},{"before":"cf74463a85366652feee1d54cacef13126cd5289","after":"a077b8d7434e7e070858b8a72f90b119f233fb5f","ref":"refs/heads/mapped-mutex-guard","pushedAt":"2024-03-17T20:51:36.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"maxcountryman","name":"Max Countryman","path":"/maxcountryman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/74351?s=80&v=4"},"commit":{"message":"use mapped mutex guard","shortMessageHtmlLink":"use mapped mutex guard"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEMEXoVAA","startCursor":null,"endCursor":null}},"title":"Activity · maxcountryman/tower-sessions"}