Files
zhenyi 06e8ee96a5 feat(auth): add authentication protocol definitions and build configuration
- Add TokenClaims message for JWT payload structure with user id, issuer, timestamps, and scopes
- Implement IssueTokenRequest/Response for creating access and refresh tokens with TTL support
- Create RefreshTokenRequest/Response for token rotation functionality
- Define RevokeTokenRequest/Response with support for single token or user-wide revocation
- Add VerifyTokenRequest/Response for validating JWT tokens with detailed claims information
- Implement signing key distribution system with GetSigningKeysRequest/Response
- Create TokenService gRPC service with IssueToken, RefreshToken, RevokeToken, VerifyToken, and GetSigningKeys methods
- Add build.rs configuration to compile proto files using tonic_prost_build
- Include channel, channel_settings, member, and permission protocol definitions for IM services
- Generate Rust code bindings through pb/core.rs and pb/im.rs modules
2026-06-10 23:45:40 +08:00

25 lines
668 B
Rust

use std::path::Path;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let proto_dir = Path::new("proto/core");
let protos: Vec<_> = walkdir::WalkDir::new(proto_dir)
.into_iter()
.filter_map(|e| e.ok())
.filter(|e| e.path().extension().is_some_and(|ext| ext == "proto"))
.map(|e| e.path().to_owned())
.collect();
for proto in &protos {
println!("cargo:rerun-if-changed={}", proto.display());
}
let includes = vec![proto_dir.to_path_buf()];
tonic_prost_build::configure()
.build_server(false)
.build_client(true)
.compile_protos(&protos, &includes)?;
Ok(())
}