Fix various bugs
This commit is contained in:
parent
40cd19c5f0
commit
79c9738b96
|
@ -62,6 +62,11 @@ func FetchSnippets(
|
|||
}
|
||||
iSnippetIDs := itSnippetIDs.ToSlice()
|
||||
|
||||
// special early-out: no snippets found for these tags at all
|
||||
if len(iSnippetIDs) == 0 {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
q.IDs = make([]int, len(iSnippetIDs))
|
||||
for i := range iSnippetIDs {
|
||||
q.IDs[i] = iSnippetIDs[i].(*snippetIDRow).SnippetID
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
<img alt="{{ .Project.Name }}" src="{{ .Project.Logo }}">
|
||||
{{ else }}
|
||||
<div class="bg--dim w-100 aspect-ratio--1x1 relative">
|
||||
<div class="aspect-ratio--object flex justify-center items-center f3 b c--dimmest">{{ .Project.Name }}</div>
|
||||
<div class="aspect-ratio--object flex justify-center items-center f3 b c--dimmest tc">{{ .Project.Name }}</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
|
|
|
@ -39,10 +39,7 @@ func PodcastIndex(c *RequestContext) ResponseData {
|
|||
return FourOhFour(c)
|
||||
}
|
||||
|
||||
canEdit, err := CanEditProject(c, c.CurrentUser, podcastResult.Podcast.ProjectID)
|
||||
if err != nil {
|
||||
return c.ErrorResponse(http.StatusInternalServerError, err)
|
||||
}
|
||||
canEdit := c.CurrentUserCanEditCurrentProject
|
||||
|
||||
baseData := getBaseDataAutocrumb(c, podcastResult.Podcast.Title)
|
||||
|
||||
|
@ -78,10 +75,7 @@ func PodcastEdit(c *RequestContext) ResponseData {
|
|||
return c.ErrorResponse(http.StatusInternalServerError, err)
|
||||
}
|
||||
|
||||
canEdit, err := CanEditProject(c, c.CurrentUser, podcastResult.Podcast.ProjectID)
|
||||
if err != nil {
|
||||
return c.ErrorResponse(http.StatusInternalServerError, err)
|
||||
}
|
||||
canEdit := c.CurrentUserCanEditCurrentProject
|
||||
|
||||
if podcastResult.Podcast == nil || !canEdit {
|
||||
return FourOhFour(c)
|
||||
|
@ -112,10 +106,7 @@ func PodcastEditSubmit(c *RequestContext) ResponseData {
|
|||
return c.ErrorResponse(http.StatusInternalServerError, err)
|
||||
}
|
||||
|
||||
canEdit, err := CanEditProject(c, c.CurrentUser, podcastResult.Podcast.ProjectID)
|
||||
if err != nil {
|
||||
return c.ErrorResponse(http.StatusInternalServerError, err)
|
||||
}
|
||||
canEdit := c.CurrentUserCanEditCurrentProject
|
||||
|
||||
if podcastResult.Podcast == nil || !canEdit {
|
||||
return FourOhFour(c)
|
||||
|
@ -218,11 +209,7 @@ func PodcastEpisode(c *RequestContext) ResponseData {
|
|||
return FourOhFour(c)
|
||||
}
|
||||
|
||||
canEdit, err := CanEditProject(c, c.CurrentUser, podcastResult.Podcast.ProjectID)
|
||||
if err != nil {
|
||||
c.Logger.Error().Err(err).Msg("Failed to check if user can edit podcast. Assuming they can't.") // NOTE(asaf): No need to return an error response here if it failed.
|
||||
canEdit = false
|
||||
}
|
||||
canEdit := c.CurrentUserCanEditCurrentProject
|
||||
|
||||
editUrl := ""
|
||||
if canEdit {
|
||||
|
@ -268,10 +255,7 @@ func PodcastEpisodeNew(c *RequestContext) ResponseData {
|
|||
return c.ErrorResponse(http.StatusInternalServerError, err)
|
||||
}
|
||||
|
||||
canEdit, err := CanEditProject(c, c.CurrentUser, podcastResult.Podcast.ProjectID)
|
||||
if err != nil {
|
||||
return c.ErrorResponse(http.StatusInternalServerError, err)
|
||||
}
|
||||
canEdit := c.CurrentUserCanEditCurrentProject
|
||||
|
||||
if podcastResult.Podcast == nil || !canEdit {
|
||||
return FourOhFour(c)
|
||||
|
@ -311,10 +295,7 @@ func PodcastEpisodeEdit(c *RequestContext) ResponseData {
|
|||
return c.ErrorResponse(http.StatusInternalServerError, err)
|
||||
}
|
||||
|
||||
canEdit, err := CanEditProject(c, c.CurrentUser, podcastResult.Podcast.ProjectID)
|
||||
if err != nil {
|
||||
return c.ErrorResponse(http.StatusInternalServerError, err)
|
||||
}
|
||||
canEdit := c.CurrentUserCanEditCurrentProject
|
||||
|
||||
if podcastResult.Podcast == nil || len(podcastResult.Episodes) == 0 || !canEdit {
|
||||
return FourOhFour(c)
|
||||
|
@ -360,10 +341,7 @@ func PodcastEpisodeSubmit(c *RequestContext) ResponseData {
|
|||
return c.ErrorResponse(http.StatusInternalServerError, err)
|
||||
}
|
||||
|
||||
canEdit, err := CanEditProject(c, c.CurrentUser, podcastResult.Podcast.ProjectID)
|
||||
if err != nil {
|
||||
return c.ErrorResponse(http.StatusInternalServerError, err)
|
||||
}
|
||||
canEdit := c.CurrentUserCanEditCurrentProject
|
||||
|
||||
if podcastResult.Podcast == nil || (isEdit && len(podcastResult.Episodes) == 0) || !canEdit {
|
||||
return FourOhFour(c)
|
||||
|
|
|
@ -692,7 +692,7 @@ func updateProject(ctx context.Context, tx pgx.Tx, user *models.User, payload *P
|
|||
blurb = $?,
|
||||
description = $?,
|
||||
descparsed = $?,
|
||||
lifecycle = $?,
|
||||
lifecycle = $?
|
||||
`,
|
||||
payload.Name,
|
||||
payload.Blurb,
|
||||
|
@ -701,7 +701,7 @@ func updateProject(ctx context.Context, tx pgx.Tx, user *models.User, payload *P
|
|||
payload.Lifecycle,
|
||||
)
|
||||
if user.IsStaff {
|
||||
qb.Add(`hidden = $?`, payload.Hidden)
|
||||
qb.Add(`, hidden = $?`, payload.Hidden)
|
||||
}
|
||||
qb.Add(`WHERE id = $?`, payload.ProjectID)
|
||||
|
||||
|
@ -857,21 +857,17 @@ func GetFormImage(c *RequestContext, fieldName string) (FormImage, error) {
|
|||
return res, nil
|
||||
}
|
||||
|
||||
func CanEditProject(c *RequestContext, user *models.User, projectId int) (bool, error) {
|
||||
func CanEditProject(user *models.User, owners []*models.User) bool {
|
||||
if user != nil {
|
||||
if user.IsStaff {
|
||||
return true, nil
|
||||
return true
|
||||
} else {
|
||||
owners, err := hmndata.FetchProjectOwners(c.Context(), c.Conn, projectId)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
for _, owner := range owners {
|
||||
if owner.ID == user.ID {
|
||||
return true, nil
|
||||
return true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false, nil
|
||||
return false
|
||||
}
|
||||
|
|
|
@ -311,6 +311,7 @@ func NewWebsiteRoutes(longRequestContext context.Context, conn *pgxpool.Pool) ht
|
|||
|
||||
c.CurrentProject = &p.Project
|
||||
c.UrlContext = hmndata.UrlContextForProject(c.CurrentProject)
|
||||
c.CurrentUserCanEditCurrentProject = CanEditProject(c.CurrentUser, p.Owners)
|
||||
|
||||
if !p.Project.Personal {
|
||||
return c.Redirect(c.UrlContext.RewriteProjectUrl(c.URL()), http.StatusSeeOther)
|
||||
|
@ -485,7 +486,6 @@ func LoadCommonWebsiteData(c *RequestContext) (bool, ResponseData) {
|
|||
panic(oops.New(err, "failed to fetch HMN project"))
|
||||
}
|
||||
c.CurrentProject = &dbProject.Project
|
||||
owners = dbProject.Owners
|
||||
}
|
||||
|
||||
if c.CurrentProject == nil {
|
||||
|
@ -494,11 +494,12 @@ func LoadCommonWebsiteData(c *RequestContext) (bool, ResponseData) {
|
|||
|
||||
canEditProject := false
|
||||
if c.CurrentUser != nil {
|
||||
canEditProject = c.CurrentUser.IsStaff
|
||||
if !canEditProject {
|
||||
if c.CurrentUser.IsStaff {
|
||||
canEditProject = true
|
||||
} else {
|
||||
for _, o := range owners {
|
||||
if o.ID == c.CurrentUser.ID {
|
||||
c.CurrentUserCanEditCurrentProject = true
|
||||
canEditProject = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
|
Reference in New Issue