nefarious-login/README.md
kjuulh 393be43db1
All checks were successful
ci/woodpecker/push/test Pipeline was successful
feat: dummy change
Signed-off-by: kjuulh <contact@kjuulh.io>
2023-11-01 21:26:35 +01:00

89 lines
2.3 KiB
Markdown

# Nefarious Login
## Overview
`Nefarious Login` is a plug-and-play authentication module designed for
effortless integration into business applications. Part of a larger suite of
Nefarious tools, it aims to remove the hassle from implementing logins by using
various authentication engines like Zitadel.
## Quick Start
Install the crate via Cargo:
```bash
cargo install nefarious-login
```
## Code Sample
Integrate `Nefarious Login` into your application. The core setup is about
configuring the `AuthService` as shown below:
```rust
#[derive(Debug, Clone, Parser)]
struct Command {
#[clap(flatten)]
auth: AuthClap,
}
async fn main() -> anyhow::Result<()> {
let cmd = Command::parse_from(vec![
"base",
"--auth-engine=zitadel", // Can also use a yaml file, or env variables, see app --help for more info
"--zitadel-authority-url=https://personal-wxuujs.zitadel.cloud",
"--zitadel-redirect-url=http://localhost:3001/auth/authorized",
"--zitadel-client-id=<your-client-id>",
"--zitadel-client-secret=<your-secret>",
"--session-backend=postgresql",
"--session-postgres-conn=postgres://como:somenotverysecurepassword@localhost:5432/nefarious-test",
]);
let auth_service = AuthService::new(&cmd.auth).await?;
// .. Use in axum, raw apis etc. See examples for details
}
```
Complete code in the main function will be similar to the snippet you provided.
## Configuring with CLI
Use these CLI options to set up your authentication:
```bash
app
--auth-engine=zitadel
--zitadel-authority-url=https://example.zitadel.cloud
--zitadel-redirect-url=http://localhost:3001/auth/authorized
--zitadel-client-id=your-client-id
--zitadel-client-secret=your-client-secret
--session-backend=postgresql
--session-postgres-conn=postgres://username:password@localhost:5432/dbname
```
## Examples
All examples feature axum integration
- **Basic Setup**: Check out [examples/basic](./examples/basic) for a minimal
implementation.
- **Using with Clap**: For integrating with Clap, see
[examples/clap](./examples/clap).
## License
MIT License.
For more details, see [LICENSE](./LICENSE).
## Links
- Crate:
[nefarious-login on crates.io](https://crates.io/crates/nefarious-login)
## Contributions
PRs welcome. For major changes, open an issue first.