summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorJesse Morgan <jesse@jesterpm.net>2022-03-23 08:22:38 -0700
committerJesse Morgan <jesse@jesterpm.net>2022-03-23 08:22:38 -0700
commit3605650a90c0710aeee93930ba2622bf00a88b70 (patch)
tree80344b3717c3483cb1b07c9d1f7c8b6aa2a3199a /examples
parent5ac0b170be23a2af4b93cb2287da1f7393db8165 (diff)
Add support for token extensionsv0.2.0
Diffstat (limited to 'examples')
-rw-r--r--examples/demo/main.rs53
1 files changed, 53 insertions, 0 deletions
diff --git a/examples/demo/main.rs b/examples/demo/main.rs
new file mode 100644
index 0000000..7fddcb2
--- /dev/null
+++ b/examples/demo/main.rs
@@ -0,0 +1,53 @@
+use actix_middleware_rfc7662::indieauth::IndieAuthToken;
+use actix_middleware_rfc7662::{
+ AnyScope, RequireAuthorization, RequireAuthorizationConfig, RequireScope,
+};
+use actix_web::{get, HttpResponse, HttpServer, Responder};
+
+#[get("/read")]
+async fn handle_read(auth: RequireAuthorization<AnyScope, IndieAuthToken>) -> impl Responder {
+ HttpResponse::Ok().body(format!(
+ "Hello {}!\n",
+ auth.introspection().extra_fields().me()
+ ))
+}
+
+struct WriteScope;
+impl RequireScope for WriteScope {
+ fn scope() -> &'static str {
+ "write"
+ }
+}
+
+#[get("/write")]
+async fn handle_write(_auth: RequireAuthorization<WriteScope, IndieAuthToken>) -> impl Responder {
+ HttpResponse::Ok().body("Success!\n")
+}
+
+#[actix_web::main]
+async fn main() -> std::io::Result<()> {
+ let bind = std::env::var("BIND").unwrap_or_else(|_| "127.0.0.1:8182".to_string());
+
+ let oauth_config = RequireAuthorizationConfig::<IndieAuthToken>::new(
+ std::env::var("CLIENT_ID").expect("Missing CLIENT_ID"),
+ std::env::var("CLIENT_SECRET").ok(),
+ std::env::var("AUTH_ENDPOINT")
+ .expect("Missing AUTH_ENDPOINT")
+ .parse()
+ .expect("AUTH_ENDPOINT: invalid url"),
+ std::env::var("INTROSPECT_ENDPOINT")
+ .expect("Missing INTROSPECT_ENDPOINT")
+ .parse()
+ .expect("INTROSPECT_ENDPOINT: invalid url"),
+ );
+
+ HttpServer::new(move || {
+ actix_web::App::new()
+ .app_data(oauth_config.clone())
+ .service(handle_read)
+ .service(handle_write)
+ })
+ .bind(bind)?
+ .run()
+ .await
+}