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}