implement auth and a simple admin-follows whitelist
Some checks failed
Go / build (push) Has been cancelled

This commit is contained in:
2025-09-07 19:08:29 +01:00
parent f5a8c094e4
commit 5edb7a3b09
27 changed files with 458 additions and 117 deletions

View File

@@ -1 +1,50 @@
package app
import (
"encoders.orly/envelopes/authenvelope"
"encoders.orly/envelopes/okenvelope"
"lol.mleku.dev/chk"
"lol.mleku.dev/log"
"protocol.orly/auth"
)
func (l *Listener) HandleAuth(b []byte) (err error) {
var rem []byte
env := authenvelope.NewResponse()
if rem, err = env.Unmarshal(b); chk.E(err) {
return
}
if len(rem) > 0 {
log.I.F("extra '%s'", rem)
}
var valid bool
if valid, err = auth.Validate(
env.Event, l.challenge.Load(),
l.ServiceURL(l.req),
); err != nil {
e := err.Error()
if err = Ok.Error(l, env, e); chk.E(err) {
return
}
return
} else if !valid {
if err = Ok.Error(
l, env, "auth response event is invalid",
); chk.E(err) {
return
}
return
} else {
if err = okenvelope.NewFrom(
env.Event.ID, true,
).Write(l); chk.E(err) {
return
}
log.D.F(
"%s authed to pubkey,%0x", l.remote,
env.Event.Pubkey,
)
l.authedPubkey.Store(env.Event.Pubkey)
}
return
}