Crates.io | supabase-auth |
lib.rs | supabase-auth |
version | 0.9.2 |
source | src |
created_at | 2024-09-09 19:40:31.358695 |
updated_at | 2024-10-23 13:20:44.354534 |
description | Supabase Auth implementation following the official client libraries. |
homepage | https://supabase.com |
repository | https://github.com/proziam/supabase-auth-rs |
max_upload_size | |
id | 1369735 |
size | 69,963 |
This is a Rust implementation of the supabase js auth client. The goal is to have feature parity and an easy-to-use API.
Currently this software is functional, but not yet battle-tested. The goal is to go to 1.0.0 by the end of December, 2024.
cargo add supabase-auth
// You can manually pass in the values
let auth_client = AuthClient::new(project_url, api_key, jwt_secret).unwrap();
// Or you can use environment variables
// Requires `SUPABASE_URL`, `SUPABASE_API_KEY`, and `SUPABASE_JWT_SECRET` environment variables
let auth_client = AuthClient::new_from_env().unwrap();
// Sign up methods return the session which you can use for creating cookies
let session = auth_client
.sign_up_with_email_and_password(demo_email, demo_password)
.await
.unwrap();
// You can also sign up using a phone number and password
let session = auth_client
.sign_up_with_phone_and_password(demo_phone, demo_password)
.await
.unwrap();
// Sign in methods return the session which you can use for creating cookies
let session = auth_client
.login_with_email(&demo_email, &demo_password)
.await
.unwrap();
// You can also login using a phone number
let session = auth_client
.login_with_phone(demo_phone, demo_password)
.await
.unwrap();
// Returns the provider and the url where the user will continue the auth flow
let oauth_response = auth_client
.login_with_oauth(Provider::Github, None)
.await
.unwrap();
// You can also customize the options like so:
let mut query_params = HashMap::new();
query_params.insert("key".to_string(), "value".to_string());
query_params.insert("second_key".to_string(), "second_value".to_string());
query_params.insert("third_key".to_string(), "third_value".to_string());
let options = SignInWithOAuthOptions {
query_params: Some(query_params),
redirect_to: Some("your-redirect-url".to_string()),
scopes: Some("repo gist notifications".to_string()),
skip_brower_redirect: Some(true),
};
let response = auth_client
.login_with_oauth(Provider::Github, Some(options))
.await
.unwrap();
NOTE: Requires an SSO Provider and Supabase Pro plan
let params = SignInWithSSO {
domain: Some(demo_domain),
options: None,
provider_id: None,
};
// Returns the URL where the user will continue the auth flow with your SSO provider
let url = auth_client.sso(params).await.unwrap();
Contributors are always welcome. I only ask that you add or update tests to cover your changes. Until this crate reaches 1.0.0 we're in the "move fast and break things" phase. Don't concern yourself with elegance.