{"action":"created","issue":{"url":"https://api.github.com/repos/everfree-outpost/everfree-outpost/issues/1","labels_url":"https://api.github.com/repos/everfree-outpost/everfree-outpost/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/everfree-outpost/everfree-outpost/issues/1/comments","events_url":"https://api.github.com/repos/everfree-outpost/everfree-outpost/issues/1/events","html_url":"https://github.com/everfree-outpost/everfree-outpost/pull/1","id":121811052,"number":1,"title":"Added login ability, cosmetic changes per login","user":{"login":"candyasscoder","id":16239035,"avatar_url":"https://avatars.githubusercontent.com/u/16239035?v=3","gravatar_id":"","url":"https://api.github.com/users/candyasscoder","html_url":"https://github.com/candyasscoder","followers_url":"https://api.github.com/users/candyasscoder/followers","following_url":"https://api.github.com/users/candyasscoder/following{/other_user}","gists_url":"https://api.github.com/users/candyasscoder/gists{/gist_id}","starred_url":"https://api.github.com/users/candyasscoder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/candyasscoder/subscriptions","organizations_url":"https://api.github.com/users/candyasscoder/orgs","repos_url":"https://api.github.com/users/candyasscoder/repos","events_url":"https://api.github.com/users/candyasscoder/events{/privacy}","received_events_url":"https://api.github.com/users/candyasscoder/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":3,"created_at":"2015-12-11T23:19:07Z","updated_at":"2015-12-12T15:06:32Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/everfree-outpost/everfree-outpost/pulls/1","html_url":"https://github.com/everfree-outpost/everfree-outpost/pull/1","diff_url":"https://github.com/everfree-outpost/everfree-outpost/pull/1.diff","patch_url":"https://github.com/everfree-outpost/everfree-outpost/pull/1.patch"},"body":"I added the ability to login as your earlier name if you had set and remember your password, and to also change the look of your character if you wanted to. I've never done Rust (or even worked on a multiplayer game) before, so let me know if anything seems blatantly wrong.\r\n\r\nHighlights:\r\n- The new password is hashed, and so the secret is still used and most of the flow is preserved (the hash is secure enough that access to it won't reveal the user's password without significant effort)\r\n- The hashing mechanism uses an external library that I added (murmurHash3) -I did it since if a user doesn't have crypto in the browser, a hand-rolled hash function would've been used anyways\r\n- Registration now checks if the secret you submitted corresponds exactly to an earlier one, and logs you in if it does (but only if the name matches)\r\n- You can change appearance (only color, mane/tail/eye styles) on each login, since I figured it is just cosmetic and you might want to keep the same name. You can't change tribes, in case gameplay elements use them in the future.\r\n- I shoved the updating look function inside /src/server/logic/client.rs since that was where all the other saving functions are\r\n\r\nAlternatively, I could add an appearance argument to login, if this flow doesn't make as much sense. Or an in-game chat command.\r\n\r\nThe system is also kinda hacky, but a better system for passwords and sessions would take more time - it works for now."},"comment":{"url":"https://api.github.com/repos/everfree-outpost/everfree-outpost/issues/comments/164160146","html_url":"https://github.com/everfree-outpost/everfree-outpost/pull/1#issuecomment-164160146","issue_url":"https://api.github.com/repos/everfree-outpost/everfree-outpost/issues/1","id":164160146,"user":{"login":"epdtry","id":3031136,"avatar_url":"https://avatars.githubusercontent.com/u/3031136?v=3","gravatar_id":"","url":"https://api.github.com/users/epdtry","html_url":"https://github.com/epdtry","followers_url":"https://api.github.com/users/epdtry/followers","following_url":"https://api.github.com/users/epdtry/following{/other_user}","gists_url":"https://api.github.com/users/epdtry/gists{/gist_id}","starred_url":"https://api.github.com/users/epdtry/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/epdtry/subscriptions","organizations_url":"https://api.github.com/users/epdtry/orgs","repos_url":"https://api.github.com/users/epdtry/repos","events_url":"https://api.github.com/users/epdtry/events{/privacy}","received_events_url":"https://api.github.com/users/epdtry/received_events","type":"User","site_admin":false},"created_at":"2015-12-12T15:06:32Z","updated_at":"2015-12-12T15:06:32Z","body":"I wrote up a more detailed proposal for part (1) in issue #2.  I'll do the other two parts later today."}}