Skip to main content

rbp_auth/
identity.rs

1use super::*;
2use rbp_core::ID;
3use rbp_core::Unique;
4
5/// User represents authentication state: anonymous or authenticated.
6#[derive(Debug, Clone, PartialEq, Eq, Hash)]
7pub enum User {
8    Anon(Lurker),
9    Auth(Member),
10}
11
12impl User {
13    pub fn id(&self) -> Option<ID<Member>> {
14        match self {
15            Self::Auth(m) => Some(m.id()),
16            Self::Anon(_) => None,
17        }
18    }
19}
20
21impl From<Lurker> for User {
22    fn from(lurker: Lurker) -> Self {
23        Self::Anon(lurker)
24    }
25}
26
27impl From<Member> for User {
28    fn from(member: Member) -> Self {
29        Self::Auth(member)
30    }
31}