Skip to main content

wekan_cli/command_result/users/
tokens.rs

1use secrecy::{ExposeSecret, SecretString};
2use serde::{Serialize, Serializer};
3
4#[derive(Debug, Serialize)]
5pub struct UserTokenCreateSuccess {
6    pub user_id: String,
7    #[serde(serialize_with = "serialize_issued_token")]
8    auth_token: SecretString,
9}
10
11impl UserTokenCreateSuccess {
12    pub fn new(user_id: String, auth_token: SecretString) -> Self {
13        Self {
14            user_id,
15            auth_token,
16        }
17    }
18
19    pub fn auth_token(&self) -> &SecretString {
20        &self.auth_token
21    }
22}
23
24impl PartialEq for UserTokenCreateSuccess {
25    fn eq(&self, other: &Self) -> bool {
26        self.user_id == other.user_id
27            && self.auth_token.expose_secret() == other.auth_token.expose_secret()
28    }
29}
30impl Eq for UserTokenCreateSuccess {}
31
32fn serialize_issued_token<S: Serializer>(token: &SecretString, s: S) -> Result<S::Ok, S::Error> {
33    s.serialize_str(token.expose_secret())
34}
35
36#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize)]
37#[serde(rename_all = "snake_case")]
38pub enum UserTokenDeleteScope {
39    Single,
40    All,
41}
42
43#[derive(Debug, Eq, PartialEq, Serialize)]
44pub struct UserTokenDeleteSuccess {
45    pub user_id: String,
46    pub scope: UserTokenDeleteScope,
47    pub message: String,
48}