+10
-5
guard/guard.go
+10
-5
guard/guard.go
···
10
10
"os/exec"
11
11
"strings"
12
12
13
+
"github.com/bluesky-social/indigo/atproto/identity"
13
14
securejoin "github.com/cyphar/filepath-securejoin"
14
15
"github.com/urfave/cli/v3"
15
16
"tangled.sh/tangled.sh/core/appview/idresolver"
···
113
114
}
114
115
115
116
didOrHandle := components[0]
116
-
did := resolveToDid(ctx, l, didOrHandle)
117
+
identity := resolveIdentity(ctx, l, didOrHandle)
118
+
did := identity.DID.String()
117
119
repoName := components[1]
118
120
qualifiedRepoName, _ := securejoin.SecureJoin(did, repoName)
119
121
···
173
175
return nil
174
176
}
175
177
176
-
func resolveToDid(ctx context.Context, l *slog.Logger, didOrHandle string) string {
178
+
func resolveIdentity(ctx context.Context, l *slog.Logger, didOrHandle string) *identity.Identity {
177
179
resolver := idresolver.DefaultResolver()
178
180
ident, err := resolver.ResolveIdent(ctx, didOrHandle)
179
181
if err != nil {
···
181
183
fmt.Fprintf(os.Stderr, "error resolving handle: %v\n", err)
182
184
os.Exit(1)
183
185
}
184
-
185
-
// did:plc:foobarbaz/repo
186
-
return ident.DID.String()
186
+
if ident.Handle.IsInvalidHandle() {
187
+
l.Error("Error resolving handle", "invalid handle", didOrHandle)
188
+
fmt.Fprintf(os.Stderr, "error resolving handle: invalid handle\n")
189
+
os.Exit(1)
190
+
}
191
+
return ident
187
192
}
188
193
189
194
func isPushPermitted(l *slog.Logger, user, qualifiedRepoName, endpoint string) bool {