Guest User

Untitled

a guest
Dec 11th, 2018
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.30 KB | None | 0 0
  1. #![allow(warnings)]
  2. #[macro_use]
  3. extern crate diesel;
  4. extern crate dotenv;
  5. #[macro_use]
  6. extern crate clap;
  7.  
  8. extern crate baselib;
  9. extern crate crypto;
  10.  
  11. use std::option::Option;
  12. use std::string::*;
  13.  
  14. use clap::{App, Arg, SubCommand};
  15. use diesel::prelude::*;
  16.  
  17. use baselib::models::user::*;
  18. use baselib::schema::users::table as users;
  19. use baselib::util::db::establish_db_connection;
  20. use crypto::digest::Digest;
  21. use crypto::sha1::*;
  22.  
  23. fn main() {
  24. dotenv::dotenv().ok();
  25.  
  26. let conn = establish_db_connection();
  27. let matches = App::new("create_user")
  28. .version("0.1")
  29. .author("Daniel W. <daniel.wanner@tubber.xyz>")
  30. .about("Creates a user for first login")
  31. .arg(
  32. Arg::with_name("username")
  33. .help("Creates a user with the specified username.")
  34. .required(true)
  35. .index(1),
  36. )
  37. .arg(
  38. Arg::with_name("password")
  39. .help("Creates a user with the specified password.")
  40. .required(true)
  41. .index(2),
  42. )
  43. .get_matches();
  44.  
  45. let username_res = matches.value_of("username");
  46. let password_res = matches.value_of("password");
  47. if username_res.is_none() || password_res.is_none() {
  48. println!("\tERROR! Please supply username and password!");
  49. std::process::exit(-127);
  50. }
  51. let _username = username_res.unwrap();
  52. let password_ref = password_res.unwrap();
  53. let mut sha1 = Sha1::new();
  54. sha1.input_str(password_ref);
  55. let _password = sha1.result_str();
  56. let _email = format!("{}@mail.org", _username);
  57.  
  58. let new_user = NewUser {
  59. username: String::from(_username),
  60. password: String::from(_password),
  61. email: _email,
  62. first_name: Some(String::from(_username)),
  63. last_name: Some(String::from("N/A")),
  64. level: 2,
  65. };
  66. let query = diesel::insert_into(users).values(&new_user);
  67.  
  68. let rows_inserted = query.execute(&conn);
  69.  
  70. if rows_inserted.is_err() {
  71. println!("\tERROR! Couldn't add user!");
  72. std::process::exit(-126);
  73. }
  74. let mut row_count: i32 = 0;
  75. match rows_inserted {
  76. Ok(rows) => row_count = rows as i32,
  77. Err(err) => println!("{}", err),
  78. };
  79.  
  80. println!(
  81. "\tSUCCESS! Added user {}.{} row added.",
  82. _username, row_count
  83. );
  84. }
Add Comment
Please, Sign In to add comment