public async Task Index(HttpRequest request)
        {
            UserSession session = request.Session as UserSession;
            User        user    = await session.GetUser();

            string html = await GetHtml("index");

            if (html == null)
            {
                await request.SetStatusCode(HttpStatusCode.NotFound).Close();

                return;
            }

            request.SetStatusCode(HttpStatusCode.OK);
            request.SetContentType(ContentType.Html);

            HtmlPage page = new HtmlPage(html, user);

            string rendered = await page.Render();

            await request.Write(rendered);

            await request.Close();
        }
        public async Task Events(HttpRequest req)
        {
            UserSession session = req.Session as UserSession;
            User        user    = await session.GetUser();

            string html = await GetHtml("events");

            if (html == null)
            {
                await req.SetStatusCode(HttpStatusCode.NotFound).Close();

                return;
            }

            req.SetStatusCode(HttpStatusCode.OK);
            req.SetContentType(ContentType.Html);

            HtmlPage page = new HtmlPage(html, user);

            if (req.HasGET("address"))
            {
                page.Address = req.GET("address", "");
            }

            string rendered = await page.Render();

            await req.Write(rendered);

            await req.Close();
        }
        public async Task Admin(HttpRequest req)
        {
            UserSession session = req.Session as UserSession;
            User        user    = await session.GetUser();

            // Redirect non-admins to the index
            if (!session.LoggedIn || user == null || user.Role != UserRole.Admin)
            {
                await req.Redirect("/");

                return;
            }

            string html = await GetHtml("admin");

            if (html == null)
            {
                await req.SetStatusCode(HttpStatusCode.NotFound).Close();

                return;
            }

            req.SetStatusCode(HttpStatusCode.OK);
            req.SetContentType(ContentType.Html);

            HtmlPage page = new HtmlPage(html, user);

            string rendered = await page.Render();

            await req.Write(rendered);

            await req.Close();
        }