Remove some user-facing routes

Nathan Sobo created

Change summary

crates/collab/src/admin.rs     | 117 ------------------------------------
crates/collab/src/careers.rs   |  15 ----
crates/collab/src/community.rs |  15 ----
crates/collab/src/home.rs      |  80 ------------------------
crates/collab/src/main.rs      |  12 ---
crates/collab/src/team.rs      |  15 ----
6 files changed, 254 deletions(-)

Detailed changes

crates/collab/src/admin.rs 🔗

@@ -1,117 +0,0 @@
-use crate::{auth::RequestExt as _, db, AppState, LayoutData, Request, RequestExt as _};
-use async_trait::async_trait;
-use serde::{Deserialize, Serialize};
-use std::sync::Arc;
-use surf::http::mime;
-
-#[async_trait]
-pub trait RequestExt {
-    async fn require_admin(&self) -> tide::Result<()>;
-}
-
-#[async_trait]
-impl RequestExt for Request {
-    async fn require_admin(&self) -> tide::Result<()> {
-        let current_user = self
-            .current_user()
-            .await?
-            .ok_or_else(|| tide::Error::from_str(401, "not logged in"))?;
-
-        if current_user.is_admin {
-            Ok(())
-        } else {
-            Err(tide::Error::from_str(
-                403,
-                "authenticated user is not an admin",
-            ))
-        }
-    }
-}
-
-pub fn add_routes(app: &mut tide::Server<Arc<AppState>>) {
-    app.at("/admin").get(get_admin_page);
-    app.at("/admin/users").post(post_user);
-    app.at("/admin/users/:id").put(put_user);
-    app.at("/admin/users/:id/delete").post(delete_user);
-    app.at("/admin/signups/:id/delete").post(delete_signup);
-}
-
-#[derive(Serialize)]
-struct AdminData {
-    #[serde(flatten)]
-    layout: Arc<LayoutData>,
-    users: Vec<db::User>,
-    signups: Vec<db::Signup>,
-}
-
-async fn get_admin_page(mut request: Request) -> tide::Result {
-    request.require_admin().await?;
-
-    let data = AdminData {
-        layout: request.layout_data().await?,
-        users: request.db().get_all_users().await?,
-        signups: request.db().get_all_signups().await?,
-    };
-
-    Ok(tide::Response::builder(200)
-        .body(request.state().render_template("admin.hbs", &data)?)
-        .content_type(mime::HTML)
-        .build())
-}
-
-async fn post_user(mut request: Request) -> tide::Result {
-    request.require_admin().await?;
-
-    #[derive(Deserialize)]
-    struct Form {
-        github_login: String,
-        #[serde(default)]
-        admin: bool,
-    }
-
-    let form = request.body_form::<Form>().await?;
-    let github_login = form
-        .github_login
-        .strip_prefix("@")
-        .unwrap_or(&form.github_login);
-
-    if !github_login.is_empty() {
-        request.db().create_user(github_login, form.admin).await?;
-    }
-
-    Ok(tide::Redirect::new("/admin").into())
-}
-
-async fn put_user(mut request: Request) -> tide::Result {
-    request.require_admin().await?;
-
-    let user_id = request.param("id")?.parse()?;
-
-    #[derive(Deserialize)]
-    struct Body {
-        admin: bool,
-    }
-
-    let body: Body = request.body_json().await?;
-
-    request
-        .db()
-        .set_user_is_admin(db::UserId(user_id), body.admin)
-        .await?;
-
-    Ok(tide::Response::builder(200).build())
-}
-
-async fn delete_user(request: Request) -> tide::Result {
-    request.require_admin().await?;
-    let user_id = db::UserId(request.param("id")?.parse()?);
-    request.db().destroy_user(user_id).await?;
-    Ok(tide::Redirect::new("/admin").into())
-}
-
-async fn delete_signup(request: Request) -> tide::Result {
-    request.require_admin().await?;
-    let signup_id = db::SignupId(request.param("id")?.parse()?);
-    request.db().destroy_signup(signup_id).await?;
-    Ok(tide::Redirect::new("/admin").into())
-}

crates/collab/src/careers.rs 🔗

@@ -1,15 +0,0 @@
-use crate::{AppState, Request, RequestExt};
-use std::sync::Arc;
-use tide::http::mime;
-
-pub fn add_routes(app: &mut tide::Server<Arc<AppState>>) {
-    app.at("/careers").get(get_careers);
-}
-
-async fn get_careers(mut request: Request) -> tide::Result {
-    let data = request.layout_data().await?;
-    Ok(tide::Response::builder(200)
-        .body(request.state().render_template("careers.hbs", &data)?)
-        .content_type(mime::HTML)
-        .build())
-}

crates/collab/src/community.rs 🔗

@@ -1,15 +0,0 @@
-use crate::{AppState, Request, RequestExt};
-use std::sync::Arc;
-use tide::http::mime;
-
-pub fn add_routes(community: &mut tide::Server<Arc<AppState>>) {
-    community.at("/community").get(get_community);
-}
-
-async fn get_community(mut request: Request) -> tide::Result {
-    let data = request.layout_data().await?;
-    Ok(tide::Response::builder(200)
-        .body(request.state().render_template("community.hbs", &data)?)
-        .content_type(mime::HTML)
-        .build())
-}

crates/collab/src/home.rs 🔗

@@ -1,80 +0,0 @@
-use crate::{AppState, Request, RequestExt as _};
-use log::as_serde;
-use serde::{Deserialize, Serialize};
-use std::sync::Arc;
-use tide::{http::mime, Server};
-
-pub fn add_routes(app: &mut Server<Arc<AppState>>) {
-    app.at("/").get(get_home);
-    app.at("/signups").post(post_signup);
-    app.at("/releases/:tag_name/:name").get(get_release_asset);
-}
-
-async fn get_home(mut request: Request) -> tide::Result {
-    let data = request.layout_data().await?;
-    Ok(tide::Response::builder(200)
-        .body(request.state().render_template("home.hbs", &data)?)
-        .content_type(mime::HTML)
-        .build())
-}
-
-async fn post_signup(mut request: Request) -> tide::Result {
-    #[derive(Debug, Deserialize, Serialize)]
-    struct Form {
-        github_login: String,
-        email_address: String,
-        about: String,
-        #[serde(default)]
-        wants_releases: bool,
-        #[serde(default)]
-        wants_updates: bool,
-        #[serde(default)]
-        wants_community: bool,
-    }
-
-    let mut form: Form = request.body_form().await?;
-    form.github_login = form
-        .github_login
-        .strip_prefix("@")
-        .map(str::to_string)
-        .unwrap_or(form.github_login);
-
-    log::info!(form = as_serde!(form); "signup submitted");
-
-    // Save signup in the database
-    request
-        .db()
-        .create_signup(
-            &form.github_login,
-            &form.email_address,
-            &form.about,
-            form.wants_releases,
-            form.wants_updates,
-            form.wants_community,
-        )
-        .await?;
-
-    let layout_data = request.layout_data().await?;
-    Ok(tide::Response::builder(200)
-        .body(
-            request
-                .state()
-                .render_template("signup.hbs", &layout_data)?,
-        )
-        .content_type(mime::HTML)
-        .build())
-}
-
-async fn get_release_asset(request: Request) -> tide::Result {
-    let body = request
-        .state()
-        .repo_client
-        .release_asset(request.param("tag_name")?, request.param("name")?)
-        .await?;
-
-    Ok(tide::Response::builder(200)
-        .header("Cache-Control", "no-transform")
-        .content_type(mime::BYTE_STREAM)
-        .body(body)
-        .build())
-}

crates/collab/src/main.rs 🔗

@@ -1,18 +1,12 @@
-mod admin;
 mod api;
 mod assets;
 mod auth;
-mod careers;
-mod community;
 mod db;
 mod env;
 mod errors;
 mod expiring;
 mod github;
-mod home;
-mod releases;
 mod rpc;
-mod team;
 
 use self::errors::TideResultExt as _;
 use ::rpc::Peer;
@@ -181,12 +175,6 @@ pub async fn run_server(
     );
     web.with(errors::Middleware);
     api::add_routes(&mut web);
-    home::add_routes(&mut web);
-    team::add_routes(&mut web);
-    careers::add_routes(&mut web);
-    releases::add_routes(&mut web);
-    community::add_routes(&mut web);
-    admin::add_routes(&mut web);
     auth::add_routes(&mut web);
 
     let mut assets = tide::new();

crates/collab/src/team.rs 🔗

@@ -1,15 +0,0 @@
-use crate::{AppState, Request, RequestExt};
-use std::sync::Arc;
-use tide::http::mime;
-
-pub fn add_routes(app: &mut tide::Server<Arc<AppState>>) {
-    app.at("/team").get(get_team);
-}
-
-async fn get_team(mut request: Request) -> tide::Result {
-    let data = request.layout_data().await?;
-    Ok(tide::Response::builder(200)
-        .body(request.state().render_template("team.hbs", &data)?)
-        .content_type(mime::HTML)
-        .build())
-}