headless_lms_models/library/oauth/
pkce.rs

1//! pkce.rs — PKCE types for database serialization
2//!
3//! This module provides the minimal `PkceMethod` enum needed for sqlx database queries.
4//! The full PKCE implementation (CodeVerifier, CodeChallenge, etc.) has been moved to
5//! `headless_lms_server::domain::oauth::pkce`.
6
7use serde::{Deserialize, Serialize};
8use sqlx::Type;
9
10/// PKCE method (RFC 7636 §4.3). Mirrors Postgres enum: `pkce_method = ('plain','S256')`.
11///
12/// This type is kept in models for sqlx compatibility. The full implementation
13/// including validation logic is in `headless_lms_server::domain::oauth::pkce`.
14#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Type)]
15#[sqlx(type_name = "pkce_method")]
16pub enum PkceMethod {
17    #[serde(rename = "plain")]
18    #[sqlx(rename = "plain")]
19    Plain,
20    #[serde(rename = "S256")]
21    #[sqlx(rename = "S256")]
22    S256,
23}
24
25impl PkceMethod {
26    pub fn parse(s: &str) -> Option<Self> {
27        match s {
28            "plain" => Some(Self::Plain),
29            "S256" => Some(Self::S256),
30            _ => None,
31        }
32    }
33}