Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/peaske7/rocket-firebase-auth
Firebase auth with Rocket, batteries included
https://github.com/peaske7/rocket-firebase-auth
auth firebase jwt rust
Last synced: 3 months ago
JSON representation
Firebase auth with Rocket, batteries included
- Host: GitHub
- URL: https://github.com/peaske7/rocket-firebase-auth
- Owner: peaske7
- License: mit
- Created: 2022-10-22T04:56:00.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-04-05T16:18:18.000Z (9 months ago)
- Last Synced: 2024-06-27T11:09:28.362Z (6 months ago)
- Topics: auth, firebase, jwt, rust
- Language: Rust
- Homepage:
- Size: 397 KB
- Stars: 8
- Watchers: 2
- Forks: 3
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# rocket-firebase-auth
![status](https://github.com/Drpoppyseed/rocket-firebase-auth/actions/workflows/ci.yml/badge.svg)
[![crate](https://img.shields.io/crates/v/rocket-firebase-auth.svg)](https://crates.io/crates/rocket-firebase-auth)
[![codecov](https://img.shields.io/codecov/c/github/DrPoppyseed/rocket-firebase-auth)](https://codecov.io/gh/DrPoppyseed/rocket-firebase-auth)Firebase Auth with Rocket, batteries included
- __Tiny__: `rocket-firebase-auth` is tiny, with features allowing you to make it even tinier
- __Does one thing well__: Encodes/decodes Firebase JWT tokens in Rocket apps, and that's it## Getting started
### 1. Set Firebase service account keys as env variables
If you haven't already, create a service account in Firebase for the Rocket backend
you are creating. Generate a new private key and copy-paste the generated json
into a `firebase-credentials.json` file. It should look something like the json snippet below.```json
{
"type": "*********",
"project_id": "***********",
"private_key_id": "*************",
"private_key": "*****************",
"client_email": "*********",
"client_id": "*******",
"auth_uri": "********",
"token_uri": "********",
"auth_provider_x509_cert_url": "********",
"client_x509_cert_url": "********"
}
```Don't forget to add the `firebase-credentials.json` file to your `.gitignore`.
```gitignore
# Firebase service account's secret credentials
firebase-credentials.json
```### 2. Setup `FirebaseAuth` and get started
Add `rocket-firebase-auth` to your project.
```toml
rocket_firebase_auth = "0.5"
```Now, you can create a `FirebaseAuth` struct by reading the json file with a helper
function included with the default import.```rust
use rocket::{get, http::Status, routes, Build, Rocket};
use rocket_firebase_auth::{FirebaseAuth, FirebaseToken};// Setup the server state, which will include your FirebaseAuth instance, among
// other things like the connection pool to your database.
struct ServerState {
auth: FirebaseAuth,
}#[get("/")]
async fn hello_world(token: FirebaseToken) -> Status {
println!("Authentication succeeded with uid={}", token.sub);
Status::Ok
}#[rocket::launch]
async fn rocket() -> Rocket {
let firebase_auth = FirebaseAuth::builder()
.json_file("firebase-credentials.json")
.build()
.unwrap();rocket::build()
.mount("/", routes![hello_world])
.manage(ServerState {
auth: firebase_auth,
})
}
```## Example projects
For a more detailed example with a frontend example as well, checkout the [example
projects](https://github.com/DrPoppyseed/rocket-firebase-auth/tree/main/examples/react-rocket-example)
.## Testing
To run tests, run the following command:
```bash
cargo test -- --test-threads=1
```## Contribute
Any contributions (PRs, Issues) are welcomed!
## Questions
If you have any questions, however trivial it may seem, please let me know via Issues. I will respond!
## License
MIT