rustauth_plugins/bearer/
mod.rs1mod request;
4mod response;
5
6use rustauth_core::plugin::AuthPlugin;
7use serde_json::json;
8
9pub const UPSTREAM_PLUGIN_ID: &str = "bearer";
10
11#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
13pub struct BearerOptions {
14 pub require_signature: bool,
16}
17
18impl BearerOptions {
19 #[must_use]
20 pub fn builder() -> BearerOptionsBuilder {
21 BearerOptionsBuilder::default()
22 }
23}
24
25#[derive(Debug, Clone, Copy, Default)]
26pub struct BearerOptionsBuilder {
27 require_signature: Option<bool>,
28}
29
30impl BearerOptionsBuilder {
31 #[must_use]
32 pub fn require_signature(mut self, require_signature: bool) -> Self {
33 self.require_signature = Some(require_signature);
34 self
35 }
36
37 #[must_use]
38 pub fn build(self) -> BearerOptions {
39 let defaults = BearerOptions::default();
40 BearerOptions {
41 require_signature: self.require_signature.unwrap_or(defaults.require_signature),
42 }
43 }
44}
45
46#[must_use]
48pub fn bearer(options: BearerOptions) -> AuthPlugin {
49 AuthPlugin::new(UPSTREAM_PLUGIN_ID)
50 .with_version(crate::VERSION)
51 .with_options(json!({
52 "requireSignature": options.require_signature,
53 }))
54 .with_on_request(move |context, request| request::handle(context, request, options))
55 .with_on_response(response::handle)
56}