Skip to main content

mz_authenticator/
lib.rs

1// Copyright Materialize, Inc. and contributors. All rights reserved.
2//
3// Use of this software is governed by the Business Source License
4// included in the LICENSE file.
5//
6// As of the Change Date specified in that file, in accordance with
7// the Business Source License, use of this software will be governed
8// by the Apache License, Version 2.0.
9
10pub mod oidc;
11
12use mz_adapter::Client as AdapterClient;
13use mz_frontegg_auth::Authenticator as FronteggAuthenticator;
14
15pub use oidc::{GenericOidcAuthenticator, OidcClaims, OidcError, ValidatedClaims};
16
17use mz_auth::AuthenticatorKind;
18
19#[derive(Debug, Clone)]
20pub enum Authenticator {
21    Frontegg(FronteggAuthenticator),
22    Password(AdapterClient),
23    Sasl(AdapterClient),
24    Oidc(GenericOidcAuthenticator),
25    None,
26}
27
28impl Authenticator {
29    pub fn kind(&self) -> AuthenticatorKind {
30        match self {
31            Authenticator::Frontegg(_) => AuthenticatorKind::Frontegg,
32            Authenticator::Password(_) => AuthenticatorKind::Password,
33            Authenticator::Sasl(_) => AuthenticatorKind::Sasl,
34            Authenticator::Oidc(_) => AuthenticatorKind::Oidc,
35            Authenticator::None => AuthenticatorKind::None,
36        }
37    }
38}