rocket_oauth2

Crates.iorocket_oauth2
lib.rsrocket_oauth2
version0.5.0
sourcesrc
created_at2018-11-01 05:33:27.946699
updated_at2023-11-22 13:41:39.257073
descriptionOAuth2 for Rocket applications
homepagehttps://github.com/jebrosen/rocket_oauth2
repositoryhttps://github.com/jebrosen/rocket_oauth2
max_upload_size
id93958
size68,318
Jeb Rosen (jebrosen)

documentation

https://docs.rs/rocket_oauth2/

README

rocket_oauth2

maintenance: passive crates.io docs.rs

rocket_oauth2 helps set up an OAuth 2.0 client in Rocket applications.

Major Versions

  • 0.4.x, compatible with rocket 0.4.x, are based on the previous master branch
  • 0.5.x, compatible with rocket 0.5.x, are based on the newer main branch

Quickstart Example

For more detailed examples and explanations, see the crate documentation and the projects in the repository's examples directory.

Code

use rocket::http::{Cookie, CookieJar, SameSite};
use rocket::Request;
use rocket::response::Redirect;
use rocket_oauth2::{OAuth2, TokenResponse};

struct GitHub;

#[get("/login/github")]
fn github_login(oauth2: OAuth2<GitHub>, cookies: &CookieJar<'_>) -> Redirect {
    oauth2.get_redirect(cookies, &["user:read"]).unwrap()
}

#[get("/auth/github")]
fn github_callback(token: TokenResponse<GitHub>, cookies: &CookieJar<'_>) -> Redirect
{
    cookies.add_private(
        Cookie::build(("token", token.access_token().to_string()))
            .same_site(SameSite::Lax)
            .build()
    );
    Redirect::to("/")
}

#[launch]
fn rocket() -> _ {
    rocket::build()
        .mount("/", routes![github_callback, github_login])
        .attach(OAuth2::<GitHub>::fairing("github"))
}

Configuration (Rocket.toml)

[default.oauth.github]
provider = "GitHub"
client_id = "..."
client_secret = "..."
redirect_uri = "http://localhost:8000/auth/github"

License

rocket_oauth2 is licensed under either of the following, at your option:

Commit count: 79

cargo fmt