{"action":"created","issue":{"url":"https://api.github.com/repos/orbiting/backends/issues/37","repository_url":"https://api.github.com/repos/orbiting/backends","labels_url":"https://api.github.com/repos/orbiting/backends/issues/37/labels{/name}","comments_url":"https://api.github.com/repos/orbiting/backends/issues/37/comments","events_url":"https://api.github.com/repos/orbiting/backends/issues/37/events","html_url":"https://github.com/orbiting/backends/pull/37","id":320929665,"number":37,"title":"fix(auth): Encode/decode email in verification URL","user":{"login":"patrickvenetz","id":331800,"avatar_url":"https://avatars0.githubusercontent.com/u/331800?v=4","gravatar_id":"","url":"https://api.github.com/users/patrickvenetz","html_url":"https://github.com/patrickvenetz","followers_url":"https://api.github.com/users/patrickvenetz/followers","following_url":"https://api.github.com/users/patrickvenetz/following{/other_user}","gists_url":"https://api.github.com/users/patrickvenetz/gists{/gist_id}","starred_url":"https://api.github.com/users/patrickvenetz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/patrickvenetz/subscriptions","organizations_url":"https://api.github.com/users/patrickvenetz/orgs","repos_url":"https://api.github.com/users/patrickvenetz/repos","events_url":"https://api.github.com/users/patrickvenetz/events{/privacy}","received_events_url":"https://api.github.com/users/patrickvenetz/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2018-05-07T19:40:00Z","updated_at":"2018-05-08T21:28:00Z","closed_at":null,"author_association":"COLLABORATOR","pull_request":{"url":"https://api.github.com/repos/orbiting/backends/pulls/37","html_url":"https://github.com/orbiting/backends/pull/37","diff_url":"https://github.com/orbiting/backends/pull/37.diff","patch_url":"https://github.com/orbiting/backends/pull/37.patch"},"body":"Ensures `email` query parameter in verification URL is encoded as base64 in an url-safe manner and ensures `emailFromQuery` in `Session::sessionByToken()` is a plain string.\r\n\r\nURLs containin `email=<email>` or `email=<urlencoded email>` instead of `email=<base64-encoded email>` let to double-encoding conflicts in some email clients, and resulted in URLs being invalid:\r\n\r\n`heidi@wiese.tld` is encoded to `heidi%40wiese.tld` (`@` => `%40`). Some email clients would re-encode and generate a link with `heidi%2540wiese.tld` (`%` => `%25`).\r\n\r\n⚠️ This is a breaking change and requires https://github.com/orbiting/republik-frontend/pull/101 to be merged an deployed first.\r\n\r\nIntroduces [urlsafe-base64](https://www.npmjs.com/package/urlsafe-base64) as a dependency."},"comment":{"url":"https://api.github.com/repos/orbiting/backends/issues/comments/387548056","html_url":"https://github.com/orbiting/backends/pull/37#issuecomment-387548056","issue_url":"https://api.github.com/repos/orbiting/backends/issues/37","id":387548056,"user":{"login":"patte","id":3500621,"avatar_url":"https://avatars3.githubusercontent.com/u/3500621?v=4","gravatar_id":"","url":"https://api.github.com/users/patte","html_url":"https://github.com/patte","followers_url":"https://api.github.com/users/patte/followers","following_url":"https://api.github.com/users/patte/following{/other_user}","gists_url":"https://api.github.com/users/patte/gists{/gist_id}","starred_url":"https://api.github.com/users/patte/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/patte/subscriptions","organizations_url":"https://api.github.com/users/patte/orgs","repos_url":"https://api.github.com/users/patte/repos","events_url":"https://api.github.com/users/patte/events{/privacy}","received_events_url":"https://api.github.com/users/patte/received_events","type":"User","site_admin":false},"created_at":"2018-05-08T21:28:00Z","updated_at":"2018-05-08T21:28:00Z","author_association":"OWNER","body":"this looks beautiful: https://github.com/orbiting/republik-frontend/pull/101/files\r\nNot just because this is auth related \"lava-ground\" I think both the FE and BE implementation should be the same. I see two options, copying lib/utils/base64u.js and care about idempotent orbiting npm packages later, or invest in them now. What do you think?"}}
{"actor":{"display_login":"patte"}}