Skip to main content

require_auth

Function require_auth 

Source
pub fn require_auth(ctx: &Context) -> Result<&Identity, Error>
Examples found in repository?
examples/homepage.rs (line 70)
50async fn main() -> std::io::Result<()> {
51    let addr: SocketAddr = ([127, 0, 0, 1], 3000).into();
52    let db = Db::memory().await.expect("db connect");
53    auth::ensure_core_tables(&db)
54        .await
55        .expect("create auth tables");
56    auth::user::create(&db, "admin@example.com", "admin", "admin")
57        .await
58        .expect("seed admin user");
59
60    let router = with_defaults(Router::new())
61        .get("/whoami", |req, _params| async move {
62            let id = req
63                .ctx()
64                .get::<RequestId>()
65                .map(|r| r.0.to_string())
66                .unwrap_or_else(|| "unknown".into());
67            Ok::<Response, Error>(text(format!("your request id is req-{id}\n")))
68        })
69        .get("/me", |req, _params| async move {
70            let id = require_auth(req.ctx())?;
71            Ok::<Response, Error>(text(format!("hello {}\n", id.email)))
72        })
73        .get("/admin-only", |req, _params| async move {
74            let id = require_admin(req.ctx())?;
75            Ok::<Response, Error>(text(format!("hello admin {}\n", id.email)))
76        })
77        .get("/crash", |_req, _params| async {
78            Err::<Response, Error>(Error::Internal("simulated failure".into()))
79        })
80        .get("/unauth", |_req, _params| async {
81            Err::<Response, Error>(Error::Unauthorized)
82        })
83        .wrap(request_id)
84        .wrap(authenticate(db))
85        .wrap(logger);
86    Server::bind(addr).serve_router(router).await
87}