Advertisement
Guest User

Untitled

a guest
Apr 16th, 2017
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.55 KB | None | 0 0
  1. pub mod schema;
  2. pub mod models;
  3. pub mod connection;
  4.  
  5. //Standard imports
  6. use rand::os::OsRng;
  7. use rand::Rng;
  8. use rand::Rand;
  9. use std::cell::RefCell;
  10.  
  11. //Diesel imports
  12. use diesel;
  13. use diesel::prelude::*;
  14. use diesel::mysql::MysqlConnection;
  15.  
  16. //Custom imports
  17. use self::models::user_models::{User, NewUser};
  18. use self::models::session_models::{Session, NewSession};
  19.  
  20. //Secure generator
  21. fn secure_gen<T: Rand>() -> T {
  22. thread_local! {
  23. static GENERATOR: RefCell<OsRng> = RefCell::new(OsRng::new().unwrap());
  24. }
  25.  
  26. return GENERATOR.borrow_mut().gen();
  27. }
  28.  
  29. //Create a new user and insert it into the Users table
  30. pub fn create_user(conn: &MysqlConnection, user: &str, pass: &str, email: &str) -> User {
  31. use database::schema::users::dsl::{users, id};
  32.  
  33. let new_user = NewUser {
  34. user: user,
  35. pass: pass,
  36. email: email
  37. };
  38.  
  39. diesel::insert(&new_user).into(users)
  40. .execute(conn)
  41. .expect("Error creating new user");
  42.  
  43. return users.order(id.desc()).first(conn).unwrap();
  44. }
  45.  
  46. //Creates a new session using a user id and generates a session ID using OsRng
  47. pub fn create_session(conn: &MysqlConnection, user_id: i32) -> Session {
  48. use database::models::session_models::sessions::table;
  49.  
  50. let identity = secure_gen();
  51. let new_session = NewSession {
  52. id: identity,
  53. user_id: user_id,
  54. };
  55.  
  56. diesel::insert(&new_session).into(table)
  57. .execute(conn)
  58. .expect("Error creating new session");
  59.  
  60. return table.first(conn).unwrap();
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement