From 1d7431552be8ba96c58477f7743f0f875c317b8c Mon Sep 17 00:00:00 2001 From: Bryan Newbold Date: Mon, 19 Dec 2022 20:00:22 -0800 Subject: pds: implement com.atproto.session.refresh --- adenosine-pds/src/lib.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/adenosine-pds/src/lib.rs b/adenosine-pds/src/lib.rs index d40058e..c9f9e0a 100644 --- a/adenosine-pds/src/lib.rs +++ b/adenosine-pds/src/lib.rs @@ -599,6 +599,29 @@ fn xrpc_post_handler( &keypair )?)) } + "com.atproto.session.refresh" => { + // actually just returns current session, because we don't implement refresh + let mut srv = srv.lock().unwrap(); + let did = xrpc_check_auth_header(&mut srv, request, None)?; + let header = request + .header("Authorization") + .ok_or(XrpcError::Forbidden("require auth header".to_string()))?; + if !header.starts_with("Bearer ") { + Err(XrpcError::Forbidden("require bearer token".to_string()))?; + } + let jwt = header.split(' ').nth(1).unwrap(); + let handle = srv + .atp_db + .resolve_did(&did)? + .expect("DID matches to a handle"); + + Ok(json!(AtpSession { + did: did.to_string(), + name: handle.to_string(), + accessJwt: jwt.to_string(), + refreshJwt: jwt.to_string(), + })) + } "com.atproto.session.delete" => { let mut srv = srv.lock().unwrap(); let _did = xrpc_check_auth_header(&mut srv, request, None)?; -- cgit v1.2.3