Skip to main content

nodedb_types/protocol/
auth.rs

1// SPDX-License-Identifier: Apache-2.0
2
3//! Authentication method types.
4
5use serde::{Deserialize, Serialize};
6
7/// Authentication method in an `Auth` request.
8#[derive(
9    Debug, Clone, Serialize, Deserialize, zerompk::ToMessagePack, zerompk::FromMessagePack,
10)]
11#[serde(tag = "method", rename_all = "snake_case")]
12#[non_exhaustive]
13pub enum AuthMethod {
14    #[serde(rename = "trust")]
15    Trust {
16        #[serde(default = "default_username")]
17        username: String,
18    },
19    #[serde(rename = "password")]
20    Password { username: String, password: String },
21    #[serde(rename = "api_key")]
22    ApiKey { token: String },
23    /// OIDC bearer token (native / HTTP clients only; NOT pgwire).
24    #[serde(rename = "oidc_bearer")]
25    OidcBearer {
26        token: String,
27        /// Optional provider name hint. When absent the provider is resolved by
28        /// the `iss` claim in the token.
29        #[serde(default)]
30        provider: Option<String>,
31    },
32}
33
34fn default_username() -> String {
35    "admin".into()
36}
37
38/// Successful auth response payload.
39#[derive(
40    Debug, Clone, Serialize, Deserialize, zerompk::ToMessagePack, zerompk::FromMessagePack,
41)]
42pub struct AuthResponse {
43    pub username: String,
44    pub tenant_id: u64,
45}