Added a join button to live events, and the time to non-live events.
Added an event page that semi-properly responds to requests. Loads the right page out of the list and displays the event title.
Added header/footer views and switched event and index over to using them.
Included the sockjs library in all pages, for lack of a good content_for option. Added an app.js file for similar purposes, with a gate to make sure it runs on the page we want.
Sock connection and default connection handlers are up and running on both sides.
Fixed header user displayname.
Requiring authentication for joining events now.
Added connect-redis for a session store. Used it to make authorizing users get sent to the right page after they get authorized.
Now generating keys that can be used to validate sockjs connections.
Client sends keys to the server on connection, and properly checks them against the desired key.
Loads users from redis now, though still isn't deserializing properly.
Cleaned up user serialization/deserialization. Works great now, loading from db, fetches proper user on request, etc.
Added a redirection test, and changed how we do superagent callbacks.
Added support for a mocked up authentication system for testing purposes.
Added a mock authentication test.
Wrote a test that checks for open connections. Properly handling sockjs disconnection on shutdown.
Wrote another test, and started binding connections to users.
Wrote a test for rejecting bad authorization keys. Cleaned up a bunch of internal socket stuff in the process.
Wrote a few more socket authorization tests, and am now properly disconnecting all sockets on server.stop().
Merge branch 'app-page'