diff options
| author | Bryan Newbold <bnewbold@robocracy.org> | 2018-12-31 13:20:02 -0800 | 
|---|---|---|
| committer | Bryan Newbold <bnewbold@robocracy.org> | 2018-12-31 13:20:02 -0800 | 
| commit | f9c15a4fc22cb87179e459a283146769e612a92b (patch) | |
| tree | 0f82f216fa17a2178b766d0af76cb8be7657ddee /rust/src/bin | |
| parent | 8a6ab2ed76d725e6e8d47e51572f009407ed5ca2 (diff) | |
| download | fatcat-f9c15a4fc22cb87179e459a283146769e612a92b.tar.gz fatcat-f9c15a4fc22cb87179e459a283146769e612a92b.zip | |
wire-up auth config via ENV
Diffstat (limited to 'rust/src/bin')
| -rw-r--r-- | rust/src/bin/fatcat-auth.rs | 39 | ||||
| -rw-r--r-- | rust/src/bin/fatcat-export.rs | 18 | 
2 files changed, 21 insertions, 36 deletions
| diff --git a/rust/src/bin/fatcat-auth.rs b/rust/src/bin/fatcat-auth.rs index 5a8f0f98..3240964f 100644 --- a/rust/src/bin/fatcat-auth.rs +++ b/rust/src/bin/fatcat-auth.rs @@ -14,12 +14,8 @@ extern crate serde_json;  extern crate uuid;  use clap::{App, SubCommand}; -use dotenv::dotenv; -use std::env;  use diesel::prelude::*; -use diesel::r2d2::ConnectionManager; -use fatcat::ConnectionPool;  use fatcat::errors::*;  use fatcat::api_helpers::FatCatId;  use std::str::FromStr; @@ -31,18 +27,6 @@ use std::str::FromStr;  //use std::io::{BufReader, BufWriter}; -/// Instantiate a new API server with a pooled database connection -// TODO: copypasta from fatcat-export -pub fn database_worker_pool() -> Result<ConnectionPool> { -    dotenv().ok(); -    let database_url = env::var("DATABASE_URL").expect("DATABASE_URL must be set"); -    let manager = ConnectionManager::<PgConnection>::new(database_url); -    let pool = diesel::r2d2::Pool::builder() -        .build(manager) -        .expect("Failed to create database pool."); -    Ok(pool) -} -  fn run() -> Result<()> {      let m = App::new("fatcat-auth")          .version(env!("CARGO_PKG_VERSION")) @@ -66,7 +50,7 @@ fn run() -> Result<()> {                  .about("Creates a new auth token (macaroon) for the given editor")                  .args_from_usage(                      "<editor-id> 'id of the editor (fatcatid, not username)' -                     --env-format 'outputs in a format that shells can source'" +                     --env-format 'outputs in a format that shells can source'" // TODO                  )          )          .subcommand( @@ -77,6 +61,13 @@ fn run() -> Result<()> {                  )          )          .subcommand( +            SubCommand::with_name("create-key") +                .about("Creates a new auth secret key (aka, root/signing key for tokens)") +                .args_from_usage( +                    "--env-format 'outputs in a format that shells can source'" // TODO +                ) +        ) +        .subcommand(              SubCommand::with_name("revoke-tokens")                  .about("Resets auth_epoch for a single editor (invalidating all existing tokens)")                  .args_from_usage( @@ -89,8 +80,18 @@ fn run() -> Result<()> {          )          .get_matches(); -    let db_conn = database_worker_pool()?.get().expect("database pool"); -    let confectionary = fatcat::auth::AuthConfectionary::new_dummy(); +    // First, the commands with no db or confectionary needed +    match m.subcommand() { +        ("create-key", Some(_subm)) => { +            println!("{}", fatcat::auth::create_key()); +            return Ok(()) +        }, +        _ => (), +    } + +    // Then the ones that do +    let db_conn = fatcat::database_worker_pool()?.get().expect("database pool"); +    let confectionary = fatcat::env_confectionary()?;      match m.subcommand() {          ("list-editors", Some(_subm)) => {              fatcat::auth::print_editors(&db_conn)?; diff --git a/rust/src/bin/fatcat-export.rs b/rust/src/bin/fatcat-export.rs index ec66ed4c..e1b930fc 100644 --- a/rust/src/bin/fatcat-export.rs +++ b/rust/src/bin/fatcat-export.rs @@ -17,15 +17,10 @@ extern crate serde_json;  extern crate uuid;  use clap::{App, Arg}; -use dotenv::dotenv; -use std::env; -use diesel::prelude::*; -use diesel::r2d2::ConnectionManager;  use fatcat::api_entity_crud::*;  use fatcat::api_helpers::*;  use fatcat::errors::*; -use fatcat::ConnectionPool;  use fatcat_api_spec::models::*;  use std::str::FromStr;  use uuid::Uuid; @@ -59,17 +54,6 @@ struct IdentRow {      redirect_id: Option<FatCatId>,  } -/// Instantiate a new API server with a pooled database connection -pub fn database_worker_pool() -> Result<ConnectionPool> { -    dotenv().ok(); -    let database_url = env::var("DATABASE_URL").expect("DATABASE_URL must be set"); -    let manager = ConnectionManager::<PgConnection>::new(database_url); -    let pool = diesel::r2d2::Pool::builder() -        .build(manager) -        .expect("Failed to create database pool."); -    Ok(pool) -} -  macro_rules! generic_loop_work {      ($fn_name:ident, $entity_model:ident) => {          fn $fn_name( @@ -183,7 +167,7 @@ pub fn do_export(      entity_type: ExportEntityType,      redirects: bool,  ) -> Result<()> { -    let db_pool = database_worker_pool()?; +    let db_pool = fatcat::database_worker_pool()?;      let buf_input = BufReader::new(std::io::stdin());      let (row_sender, row_receiver) = channel::bounded(CHANNEL_BUFFER_LEN);      let (output_sender, output_receiver) = channel::bounded(CHANNEL_BUFFER_LEN); | 
