pub struct User {Show 16 fields
pub id: Uuid,
pub username: String,
pub email: String,
pub password_hash: String,
pub api_token: Option<String>,
pub is_verified: bool,
pub is_admin: bool,
pub two_factor_enabled: bool,
pub two_factor_secret: Option<String>,
pub two_factor_backup_codes: Option<Vec<String>>,
pub two_factor_verified_at: Option<DateTime<Utc>>,
pub email_notifications: bool,
pub security_alerts: bool,
pub preferences: Value,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}Fields§
§id: Uuid§username: String§email: String§password_hash: String§api_token: Option<String>§is_verified: bool§is_admin: bool§two_factor_enabled: bool§two_factor_secret: Option<String>§two_factor_backup_codes: Option<Vec<String>>§two_factor_verified_at: Option<DateTime<Utc>>§email_notifications: bool§security_alerts: bool§preferences: Value§created_at: DateTime<Utc>§updated_at: DateTime<Utc>Implementations§
Source§impl User
impl User
Sourcepub fn placeholder(id: Uuid) -> User
pub fn placeholder(id: Uuid) -> User
Build an “unknown user” placeholder for the given id. Used by read handlers when the referenced user has been deleted but we still need to render the surrounding record (reviews, plugins, templates, etc.).
Source§impl User
impl User
Sourcepub async fn find_by_email(
pool: &Pool<Postgres>,
email: &str,
) -> Result<Option<User>, Error>
pub async fn find_by_email( pool: &Pool<Postgres>, email: &str, ) -> Result<Option<User>, Error>
Find user by email
Sourcepub async fn find_by_username(
pool: &Pool<Postgres>,
username: &str,
) -> Result<Option<User>, Error>
pub async fn find_by_username( pool: &Pool<Postgres>, username: &str, ) -> Result<Option<User>, Error>
Find user by username
Sourcepub async fn find_by_id(
pool: &Pool<Postgres>,
id: Uuid,
) -> Result<Option<User>, Error>
pub async fn find_by_id( pool: &Pool<Postgres>, id: Uuid, ) -> Result<Option<User>, Error>
Find user by ID
Sourcepub async fn find_by_ids(
pool: &Pool<Postgres>,
ids: &[Uuid],
) -> Result<Vec<User>, Error>
pub async fn find_by_ids( pool: &Pool<Postgres>, ids: &[Uuid], ) -> Result<Vec<User>, Error>
Find multiple users by IDs (batch lookup to avoid N+1 queries)
Sourcepub async fn create(
pool: &Pool<Postgres>,
username: &str,
email: &str,
password_hash: &str,
) -> Result<User, Error>
pub async fn create( pool: &Pool<Postgres>, username: &str, email: &str, password_hash: &str, ) -> Result<User, Error>
Create a new user
Sourcepub async fn set_api_token(
pool: &Pool<Postgres>,
user_id: Uuid,
token: &str,
) -> Result<(), Error>
pub async fn set_api_token( pool: &Pool<Postgres>, user_id: Uuid, token: &str, ) -> Result<(), Error>
Set API token
Sourcepub async fn enable_2fa(
pool: &Pool<Postgres>,
user_id: Uuid,
secret: &str,
backup_codes: &[String],
) -> Result<(), Error>
pub async fn enable_2fa( pool: &Pool<Postgres>, user_id: Uuid, secret: &str, backup_codes: &[String], ) -> Result<(), Error>
Enable 2FA for a user
Sourcepub async fn disable_2fa(
pool: &Pool<Postgres>,
user_id: Uuid,
) -> Result<(), Error>
pub async fn disable_2fa( pool: &Pool<Postgres>, user_id: Uuid, ) -> Result<(), Error>
Disable 2FA for a user
Trait Implementations§
Source§impl<'de> Deserialize<'de> for User
impl<'de> Deserialize<'de> for User
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<User, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<User, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl<'a, R> FromRow<'a, R> for Userwhere
R: Row,
&'a str: ColumnIndex<R>,
Uuid: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
String: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
Option<String>: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
bool: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
Option<Vec<String>>: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
Option<DateTime<Utc>>: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
Value: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
DateTime<Utc>: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
impl<'a, R> FromRow<'a, R> for Userwhere
R: Row,
&'a str: ColumnIndex<R>,
Uuid: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
String: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
Option<String>: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
bool: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
Option<Vec<String>>: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
Option<DateTime<Utc>>: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
Value: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
DateTime<Utc>: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
Source§impl Serialize for User
impl Serialize for User
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
Auto Trait Implementations§
impl Freeze for User
impl RefUnwindSafe for User
impl Send for User
impl Sync for User
impl Unpin for User
impl UnsafeUnpin for User
impl UnwindSafe for User
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
Converts
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>
Converts
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 moreCreates a shared type from an unshared type.