Fix logging in repo, fix stale auth

This commit is contained in:
2026-02-26 11:23:09 -06:00
parent 385b6ea67c
commit ea7b733767
6 changed files with 84 additions and 58 deletions

View File

@@ -60,6 +60,8 @@ type Pds struct {
recordIdsToNSID map[string]syntax.NSID
Records map[string]map[string]any
TIDClock syntax.TIDClock
RefreshTime time.Time
}

View File

@@ -67,6 +67,11 @@ func NewRepo() (*Repo, error) {
func (r *Repo) SetLogFunc(l func(string, ...any)) {
r.logFunc = l
r.handler = NewAppLogHandler(r.logFunc)
if viper.GetBool(KeyDebug) {
r.handler.SetLevel(slog.LevelDebug)
} else {
r.handler.SetLevel(slog.LevelWarn)
}
slog.SetDefault(slog.New(r.handler))
r.Logger = slog.Default()
r.Logger.Debug("New Log Func Set for slog")

View File

@@ -29,14 +29,17 @@ type AuthRepo struct {
authUrl string
authError error
refreshes map[syntax.DID]time.Time
Logger *slog.Logger
}
func NewAuthRepo(r *Repo) (*AuthRepo, error) {
a := &AuthRepo{
r: r,
context: r.context,
Logger: r.Logger,
r: r,
context: r.context,
Logger: r.Logger,
refreshes: make(map[syntax.DID]time.Time),
}
var err error
a.oauthConfig, a.oauthClient, a.store, err = a.buildOAuthClient()
@@ -131,6 +134,20 @@ func (r *AuthRepo) ListenForCallback(res chan url.Values) (int, error) {
func (r *AuthRepo) HasAuth(did syntax.DID) bool {
sess, err := r.GetSession(did)
if err != nil || sess == nil {
return false
}
exp := time.Now().Add(time.Hour * -12)
if tm, ok := r.refreshes[did]; ok && tm.After(exp) {
return true
}
_, err = sess.RefreshTokens(r.context)
if err != nil {
r.Logger.Debug("Failed to refresh tokens")
return false
}
r.refreshes[did] = time.Now()
return err == nil && sess != nil
}

View File

@@ -1,6 +1,7 @@
package data
import (
"fmt"
"time"
"git.bullercodeworks.com/brian/expds/data/models"
@@ -49,7 +50,7 @@ func (r *Repo) SendToPDS(did syntax.DID) error {
if err := c.Post(r.context, "com.atproto.repo.createRecord", body, &resp); err != nil {
return err
}
r.Logger.Debug("posted: %s :: %s", resp.Uri.Authority(), resp.Uri.RecordKey())
r.Logger.Debug(fmt.Sprintf("posted: %s :: %s", resp.Uri.Authority(), resp.Uri.RecordKey()))
return nil
}
@@ -68,10 +69,11 @@ func (r *Repo) DeleteRecord(did syntax.DID, collection syntax.NSID, rkey string)
Cid syntax.CID `json:"cid"`
Rev syntax.TID `json:"rev"`
}
r.Logger.Debug("deleting record (%s)", rkey)
r.Logger.Debug(fmt.Sprintf("deleting record (%s)", rkey))
if err := c.Post(r.context, "com.atproto.repo.deleteRecord", body, &resp); err != nil {
r.Logger.Warn(fmt.Sprintf("error deleting record: %s", err.Error()))
return err
}
r.Logger.Debug("posted: %s :: %s", resp.Cid.String(), resp.Rev.String())
r.Logger.Debug(fmt.Sprintf("posted: %s :: %s", resp.Cid.String(), resp.Rev.String()))
return nil
}