06e8ee96a5
- 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
25 lines
668 B
Rust
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(())
|
|
}
|