better_auth_api/plugins/endpoint_context/
owned.rs1use super::EndpointContext;
2use better_auth_core::{AuthContext, AuthRequest, AuthResponse, AuthSchema};
3use std::{collections::HashMap, sync::Arc};
4
5pub struct OwnedEndpointContext<S: AuthSchema> {
9 input_request: Option<AuthRequest>,
10 request: Option<AuthRequest>,
11 path: Option<String>,
12 params: HashMap<String, String>,
13 body: better_auth_core::FieldValue,
14 auth: AuthContext<S>,
15 transaction: Option<Arc<dyn better_auth_core::store::AuthTransaction<S>>>,
16 session: Option<(
17 better_auth_core::wire::UserView,
18 better_auth_core::wire::SessionView,
19 )>,
20 response: Option<AuthResponse>,
21}
22impl<S: AuthSchema> OwnedEndpointContext<S> {
23 pub fn as_endpoint(&self) -> EndpointContext<'_, S> {
25 EndpointContext {
26 input_request: self.input_request.as_ref(),
27 request: self.request.as_ref(),
28 path: self.path.as_deref(),
29 params: self.params.clone(),
30 body: self.body.clone(),
31 auth: &self.auth,
32 transaction: self.transaction.as_deref(),
33 session: self.session.clone(),
34 response: self.response.as_ref(),
35 }
36 }
37}
38impl<S: AuthSchema> EndpointContext<'_, S> {
39 pub fn to_owned(&self) -> OwnedEndpointContext<S> {
41 OwnedEndpointContext {
42 input_request: self.input_request.cloned(),
43 request: self.request.cloned(),
44 path: self.path.map(str::to_owned),
45 params: self.params.clone(),
46 body: self.body.clone(),
47 auth: self.auth.clone(),
48 transaction: self.transaction.map(|tx| tx.clone_handle()),
49 session: self.session.clone(),
50 response: self.response.cloned(),
51 }
52 }
53}