This commit is contained in:
2025-09-17 07:51:18 +02:00
parent c49ce44481
commit 63782e673a
2 changed files with 5 additions and 4 deletions

View File

@@ -27,7 +27,7 @@ pub fn (mut server HeroServer) auth_request(pubkey string) !AuthResponse {
challenge := md5.hexhash(challenge_data) challenge := md5.hexhash(challenge_data)
// Store challenge with expiration // Store challenge with expiration
challenges[pubkey] = AuthChallenge{ server.challenges[pubkey] = AuthChallenge{
pubkey: pubkey pubkey: pubkey
challenge: challenge challenge: challenge
created_at: time.now() created_at: time.now()
@@ -42,13 +42,13 @@ pub fn (mut server HeroServer) auth_request(pubkey string) !AuthResponse {
// Submit signed challenge for authentication // Submit signed challenge for authentication
pub fn (mut server HeroServer) auth_submit(pubkey string, signature string) !AuthSubmitResponse { pub fn (mut server HeroServer) auth_submit(pubkey string, signature string) !AuthSubmitResponse {
// Get stored challenge // Get stored challenge
challenge_data := challenges[pubkey] or { challenge_data := server.challenges[pubkey] or {
return error('No active challenge for this public key') return error('No active challenge for this public key')
} }
// Check if challenge expired // Check if challenge expired
if time.now() > challenge_data.expires_at { if time.now() > challenge_data.expires_at {
challenges.delete(pubkey) server.challenges.delete(pubkey)
return error('Challenge expired') return error('Challenge expired')
} }
@@ -78,7 +78,7 @@ pub fn (mut server HeroServer) auth_submit(pubkey string, signature string) !Aut
server.sessions[session_key] = session server.sessions[session_key] = session
// Clean up challenge // Clean up challenge
challenges.delete(pubkey) server.challenges.delete(pubkey)
return AuthSubmitResponse{ return AuthSubmitResponse{
session_key: session_key session_key: session_key

View File

@@ -22,6 +22,7 @@ pub fn new(config HeroServerConfig) !&HeroServer {
sessions: map[string]Session{} sessions: map[string]Session{}
handlers: map[string]openrpc.OpenRPCHandler{} handlers: map[string]openrpc.OpenRPCHandler{}
app: app app: app
challenges: map[string]AuthChallenge{}
} }
return server return server