Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- pub mod schema;
- pub mod models;
- pub mod connection;
- //Standard imports
- use rand::os::OsRng;
- use rand::Rng;
- use rand::Rand;
- use std::cell::RefCell;
- //Diesel imports
- use diesel;
- use diesel::prelude::*;
- use diesel::mysql::MysqlConnection;
- //Custom imports
- use self::models::user_models::{User, NewUser};
- use self::models::session_models::{Session, NewSession};
- //Secure generator
- fn secure_gen<T: Rand>() -> T {
- thread_local! {
- static GENERATOR: RefCell<OsRng> = RefCell::new(OsRng::new().unwrap());
- }
- return GENERATOR.borrow_mut().gen();
- }
- //Create a new user and insert it into the Users table
- pub fn create_user(conn: &MysqlConnection, user: &str, pass: &str, email: &str) -> User {
- use database::schema::users::dsl::{users, id};
- let new_user = NewUser {
- user: user,
- pass: pass,
- email: email
- };
- diesel::insert(&new_user).into(users)
- .execute(conn)
- .expect("Error creating new user");
- return users.order(id.desc()).first(conn).unwrap();
- }
- //Creates a new session using a user id and generates a session ID using OsRng
- pub fn create_session(conn: &MysqlConnection, user_id: i32) -> Session {
- use database::models::session_models::sessions::table;
- let identity = secure_gen();
- let new_session = NewSession {
- id: identity,
- user_id: user_id,
- };
- diesel::insert(&new_session).into(table)
- .execute(conn)
- .expect("Error creating new session");
- return table.first(conn).unwrap();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement