pub struct StudentNumberVerificationTokenPreview {Show 14 fields
pub student_number: String,
pub sisu_full_name: Option<String>,
pub course_name: Option<String>,
pub emailed_to_masked: String,
pub expires_at: DateTime<Utc>,
pub expired: bool,
pub already_used: bool,
pub already_used_by_this_account: bool,
pub conflicts_with_other_account: bool,
pub current_student_number: Option<String>,
pub target_account_email: String,
pub target_account_name: Option<String>,
pub name_change: Option<NameReplacement>,
pub claimable: bool,
}Expand description
What a mailed link would do, without doing it. Read-only on purpose: a mail scanner must not be able to spend the token.
Fields§
§student_number: String§sisu_full_name: Option<String>The name Sisu holds for the student number. Sisu does not verify the address the link was
mailed to, so the name is what tells someone they are about to link someone else’s number.
None unless claimable.
course_name: Option<String>§emailed_to_masked: String§expires_at: DateTime<Utc>§expired: bool§already_used: bool§already_used_by_this_account: boolSo the page can say “you already used this link” rather than accusing someone else.
conflicts_with_other_account: boolA support case, not something the student can resolve: moving a number between accounts on mailbox access alone would let anyone detach another account’s link.
current_student_number: Option<String>What this account is linked to now. Claiming replaces it.
target_account_email: StringShown in the confirmation: being signed in to the wrong account is the common mistake.
target_account_name: Option<String>The signed-in account’s name, None when it has none.
name_change: Option<NameReplacement>The name the account must take on claiming; None when it already uses Sisu’s or the link is
not claimable.
claimable: boolTrait Implementations§
Source§impl Clone for StudentNumberVerificationTokenPreview
impl Clone for StudentNumberVerificationTokenPreview
Source§fn clone(&self) -> StudentNumberVerificationTokenPreview
fn clone(&self) -> StudentNumberVerificationTokenPreview
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl ComposeSchema for StudentNumberVerificationTokenPreview
impl ComposeSchema for StudentNumberVerificationTokenPreview
Source§impl<'de> Deserialize<'de> for StudentNumberVerificationTokenPreview
impl<'de> Deserialize<'de> for StudentNumberVerificationTokenPreview
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for StudentNumberVerificationTokenPreview
impl PartialEq for StudentNumberVerificationTokenPreview
Source§fn eq(&self, other: &StudentNumberVerificationTokenPreview) -> bool
fn eq(&self, other: &StudentNumberVerificationTokenPreview) -> bool
self and other values to be equal, and is used by ==.Source§impl ToSchema for StudentNumberVerificationTokenPreview
impl ToSchema for StudentNumberVerificationTokenPreview
impl StructuralPartialEq for StudentNumberVerificationTokenPreview
Auto Trait Implementations§
impl Freeze for StudentNumberVerificationTokenPreview
impl RefUnwindSafe for StudentNumberVerificationTokenPreview
impl Send for StudentNumberVerificationTokenPreview
impl Sync for StudentNumberVerificationTokenPreview
impl Unpin for StudentNumberVerificationTokenPreview
impl UnsafeUnpin for StudentNumberVerificationTokenPreview
impl UnwindSafe for StudentNumberVerificationTokenPreview
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> 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§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].