Struct rocket_auth::Users[][src]

pub struct Users { /* fields omitted */ }

The Users struct is used to query users from the database, as well as to create, modify and delete them.

Implementations

impl Users[src]

pub fn open_sqlite(path: impl AsRef<Path>) -> Result<Self, Error>[src]

It creates a Users instance by connecting it to a redis database. If the database does not yet exist it will be created. By default, sessions will be stored on a concurrent HashMap. In order to have persistent sessions see the method open_redis.

let users = Users::open_sqlite("database.db")?;

rocket::ignite()
    .manage(users)
    .launch();

pub fn open_redis(&mut self, path: impl IntoConnectionInfo) -> Result<(), Error>[src]

Opens a redis connection. It allows for sessions to be stored persistently across different launches.

let mut users = Users::open_sqlite("database.db")?;
users.open_redis("redis://127.0.0.1/")?;

rocket::ignite()
    .manage(users)
    .launch();
 

pub fn open_postgres(path: &str) -> Result<Self, Error>[src]

It opens a postgres database connection. I’ve got to admit I haven’t tested this feature yet, so don’t waste your time debugging if it doesn’t work.

let users = Users::open_sqlite("database.db")?;
 
rocket::ignite()
    .manage(users)
    .launch();
 

pub fn get_by_email(&self, email: &str) -> Result<User, Error>[src]

It querys a user by their email.

#[get("/user-information/<email>")]
fn user_information(email: String, users: State<Users>) -> Result<String, Error> {
        
    let user = users.get_by_email(&email)?;
    Ok(format!("{:?}", user))
}

pub fn get_by_id(&self, user_id: i32) -> Result<User, Error>[src]

It querys a user by their email.

 let user = users.get_by_id(3)?;
 format!("{:?}", user)

pub fn create_user(
    &self,
    email: &str,
    password: &str,
    is_admin: bool
) -> Result<(), Error>
[src]

Inserts a new user in the database. It will fail if the user already exists.

#![feature(decl_macro)]
#[get("/create_admin/<email>/<password>")]
fn create_admin(email: String, password: String, users: State<Users>) -> Result<String, Error> {
    users.create_user(&email, &password, true)?;
    Ok("User created successfully".into())
}

pub fn delete(&self, id: i32) -> Result<(), Error>[src]

Deletes a user from de database. Note that this method won’t delete the session. To do that use Auth::delete. #[get(“/delete_user/”)] fn delete_user(id: i32, users: State) -> Result { users.delete(id)?; Ok(“The user has been deleted.”) }

pub fn modify(&self, user: &User) -> Result<(), Error>[src]

Modifies a user in the database.

let mut user = users.get_by_id(4)?;
user.set_email("new@email.com");
user.set_password("new password");
users.modify(&user)?;

Trait Implementations

impl<T0: 'static + DBConnection, T1: 'static + SessionManager> From<(T0, T1)> for Users[src]

Additionally, Users can be created from a tuple, where the first element is a database connection, and the second is a redis connection.

let (db_client, connection) = tokio_postgres::connect(postgres_path, NoTls).await?;
let redis_client = redis::Client::open(redis_path)?;
 
let users: Users = (db_client, redis_client).into();

impl<Conn: 'static + DBConnection> From<Conn> for Users[src]

A Users instance can also be created from a database connection.

let (client, connection) = tokio_postgres::connect("host=localhost user=postgres", NoTls).await?;
let users: Users = client.into();

Auto Trait Implementations

impl !RefUnwindSafe for Users

impl Send for Users

impl Sync for Users

impl Unpin for Users

impl !UnwindSafe for Users

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T, I> AsResult<T, I> for T where
    I: Input, 

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Erased for T

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> IntoCollection<T> for T

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> Typeable for T where
    T: Any

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,