Fix missing hostname when publishing via API

This fixes a bug that occurred only when publishing via API and
authenticating via token (rather than cookie).

Previously, the instance's hostname wouldn't be added to the Collection
that got passed around after retrieving the owned post, meaning an
incomplete URL was returned in the API response, and federation failed due
to the missing host.
pull/144/head
Matt Baer 5 years ago
parent ba3cb4b4ff
commit f6f116d672
  1. 5
      database.go
  2. 2
      posts.go

@ -73,7 +73,7 @@ type writestore interface {
GetAnonymousPosts(u *User) (*[]PublicPost, error) GetAnonymousPosts(u *User) (*[]PublicPost, error)
GetUserPosts(u *User) (*[]PublicPost, error) GetUserPosts(u *User) (*[]PublicPost, error)
CreateOwnedPost(post *SubmittedPost, accessToken, collAlias string) (*PublicPost, error) CreateOwnedPost(post *SubmittedPost, accessToken, collAlias, hostName string) (*PublicPost, error)
CreatePost(userID, collID int64, post *SubmittedPost) (*Post, error) CreatePost(userID, collID int64, post *SubmittedPost) (*Post, error)
UpdateOwnedPost(post *AuthenticatedPost, userID int64) error UpdateOwnedPost(post *AuthenticatedPost, userID int64) error
GetEditablePost(id, editToken string) (*PublicPost, error) GetEditablePost(id, editToken string) (*PublicPost, error)
@ -541,7 +541,7 @@ func (db *datastore) GetTemporaryOneTimeAccessToken(userID int64, validSecs int,
return u.String(), nil return u.String(), nil
} }
func (db *datastore) CreateOwnedPost(post *SubmittedPost, accessToken, collAlias string) (*PublicPost, error) { func (db *datastore) CreateOwnedPost(post *SubmittedPost, accessToken, collAlias, hostName string) (*PublicPost, error) {
var userID, collID int64 = -1, -1 var userID, collID int64 = -1, -1
var coll *Collection var coll *Collection
var err error var err error
@ -555,6 +555,7 @@ func (db *datastore) CreateOwnedPost(post *SubmittedPost, accessToken, collAlias
if err != nil { if err != nil {
return nil, err return nil, err
} }
coll.hostName = hostName
if coll.OwnerID != userID { if coll.OwnerID != userID {
return nil, ErrForbiddenCollection return nil, ErrForbiddenCollection
} }

@ -556,7 +556,7 @@ func newPost(app *App, w http.ResponseWriter, r *http.Request) error {
var coll *Collection var coll *Collection
var err error var err error
if accessToken != "" { if accessToken != "" {
newPost, err = app.db.CreateOwnedPost(p, accessToken, collAlias) newPost, err = app.db.CreateOwnedPost(p, accessToken, collAlias, app.cfg.App.Host)
} else { } else {
//return ErrNotLoggedIn //return ErrNotLoggedIn
// TODO: verify user is logged in // TODO: verify user is logged in

Loading…
Cancel
Save