pub struct PostgresAccountStore { /* private fields */ }Expand description
PostgreSQL-backed account store.
Persists user accounts and their linked provider identities, so account linking survives a process restart. See the module-level documentation for the schema and RLS posture.
Implementations§
Source§impl PostgresAccountStore
impl PostgresAccountStore
Sourcepub const fn new(db: PgPool) -> Self
pub const fn new(db: PgPool) -> Self
Create a new store over an existing pool.
The pool’s role must own (or BYPASSRLS) the core.tb_user /
core.tb_auth_identity tables — it runs the trusted login path and must not be
constrained by the deny-by-default RLS. Calling init once on
startup creates the tables (so the connecting role owns them by construction).
Sourcepub async fn init(&self) -> Result<()>
pub async fn init(&self) -> Result<()>
Create the core.tb_user / core.tb_auth_identity schema (idempotent).
Call once on startup. Safe to re-run and safe on a database that predates this
store (the CREATE … IF NOT EXISTS form is the back-compat path for existing
deployments that have no user table).
§Errors
Returns AuthError::DatabaseError if the DDL fails.
Trait Implementations§
Source§impl AccountStore for PostgresAccountStore
impl AccountStore for PostgresAccountStore
Source§fn link_or_create_user<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
email: Option<&'life1 str>,
email_verified: bool,
provider: &'life2 str,
provider_id: &'life3 str,
) -> Pin<Box<dyn Future<Output = Result<AccountLinkResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn link_or_create_user<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
email: Option<&'life1 str>,
email_verified: bool,
provider: &'life2 str,
provider_id: &'life3 str,
) -> Pin<Box<dyn Future<Output = Result<AccountLinkResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
user_id for the given identity, creating or linking as needed. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for PostgresAccountStore
impl !UnwindSafe for PostgresAccountStore
impl Freeze for PostgresAccountStore
impl Send for PostgresAccountStore
impl Sync for PostgresAccountStore
impl Unpin for PostgresAccountStore
impl UnsafeUnpin for PostgresAccountStore
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more