Skip to content

Commit bbe04ab

Browse files
committed
OAuth provider trait extraction (OAuthProviderConfig)
1 parent 4043524 commit bbe04ab

33 files changed

Lines changed: 353 additions & 455 deletions

CHANGELOG.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,20 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [0.4.4] - 2026-02-08
9+
10+
### Refactored
11+
12+
- **OAuth provider trait extraction (`OAuthProviderConfig`)**
13+
- Unified duplicate Google/GitHub OAuth logic (URL generation, token exchange, service layer) into `OAuthProviderConfig` trait with generic functions
14+
- Added `generate_auth_url<P>()`, `exchange_code<P>()`, `service_generate_oauth_url<P>()` generic functions
15+
- Reorganized provider-specific code into `google/` and `github/` folders (config, client, generate_url, sign_in, link)
16+
- `provider/` now contains only shared infrastructure (trait + generic functions)
17+
- Added `OAUTH_STATE_TTL_SECONDS` constant to `axumkit-constants` (replaced hardcoded value)
18+
- Deleted 6 legacy flat service files and old provider subdirectories
19+
20+
---
21+
822
## [0.4.3] - 2026-02-06
923

1024
### Improved

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ resolver = "2"
33
members = ["crates/*"]
44

55
[workspace.package]
6-
version = "0.4.3"
6+
version = "0.4.4"
77
authors = ["Levi Laine <shiueo.csh@gmail.com>"]
88
repository = "https://github.com/levish0/AxumKit"
99
edition = "2024"

crates/axumkit-constants/src/cache_keys.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1-
/// Redis cache key prefixes and helpers
2-
/// Centralized constants for cache key naming to ensure consistency across codebase
1+
//! Redis cache key prefixes and helpers
2+
//! Centralized constants for cache key naming to ensure consistency across codebase
3+
4+
/// OAuth state TTL in seconds (5 minutes)
5+
pub const OAUTH_STATE_TTL_SECONDS: u64 = 300;
36

47
/// OAuth state key prefix (stores PKCE verifier)
58
/// Format: "oauth:state:{uuid}"

crates/axumkit-constants/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ pub use action_log_actions::{
88
};
99
pub use cache_keys::{
1010
oauth_pending_key, oauth_state_key, OAUTH_PENDING_PREFIX, OAUTH_STATE_PREFIX,
11+
OAUTH_STATE_TTL_SECONDS,
1112
};
1213
pub use nats_subjects::REALTIME_EVENTS_SUBJECT;
1314
pub use storage_keys::{

crates/axumkit-server/src/api/v0/routes/auth/oauth/github/github_authorize.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::service::oauth::generate_github_oauth_url::service_generate_github_oauth_url;
1+
use crate::service::oauth::github::service_generate_github_oauth_url;
22
use crate::state::AppState;
33
use axum::extract::State;
44
use axumkit_dto::oauth::response::OAuthUrlResponse;

crates/axumkit-server/src/api/v0/routes/auth/oauth/github/github_link.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::extractors::RequiredSession;
2-
use crate::service::oauth::link_github::service_link_github_oauth;
2+
use crate::service::oauth::github::service_link_github_oauth;
33
use crate::state::AppState;
44
use axum::extract::State;
55
use axum::http::StatusCode;

crates/axumkit-server/src/api/v0/routes/auth/oauth/github/github_login.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::service::oauth::github_sign_in::service_github_sign_in;
1+
use crate::service::oauth::github::service_github_sign_in;
22
use crate::state::AppState;
33
use crate::utils::extract::extract_ip_address::extract_ip_address;
44
use crate::utils::extract::extract_user_agent::extract_user_agent;

crates/axumkit-server/src/api/v0/routes/auth/oauth/google/google_authorize.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::service::oauth::generate_google_oauth_url::service_generate_google_oauth_url;
1+
use crate::service::oauth::google::service_generate_google_oauth_url;
22
use crate::state::AppState;
33
use axum::extract::State;
44
use axumkit_dto::oauth::response::OAuthUrlResponse;

crates/axumkit-server/src/api/v0/routes/auth/oauth/google/google_link.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::extractors::RequiredSession;
2-
use crate::service::oauth::link_google::service_link_google_oauth;
2+
use crate::service::oauth::google::service_link_google_oauth;
33
use crate::state::AppState;
44
use axum::extract::State;
55
use axum::http::StatusCode;

crates/axumkit-server/src/api/v0/routes/auth/oauth/google/google_login.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::service::oauth::google_sign_in::service_google_sign_in;
1+
use crate::service::oauth::google::service_google_sign_in;
22
use crate::state::AppState;
33
use crate::utils::extract::extract_ip_address::extract_ip_address;
44
use crate::utils::extract::extract_user_agent::extract_user_agent;

0 commit comments

Comments
 (0)