appview: state: fix panics in repoindex #142

closed
opened by anirudh.fi targeting master from push-yynslowxntql

Language percentages was using user.Did instead of f.OwnerDid which caused repo index to crash when unauthed.

Changed files
+8 -5
appview
state
+8 -5
appview/state/repo.go
··· 127 secret, err := db.GetRegistrationKey(s.db, f.Knot) 128 if err != nil { 129 log.Printf("failed to get registration key for %s: %s", f.Knot, err) 130 - s.pages.Notice(w, "resubmit-error", "Failed to create pull request. Try again later.") 131 } 132 133 signedClient, err := knotclient.NewSignedClient(f.Knot, secret, s.config.Core.Dev) 134 if err != nil { 135 log.Printf("failed to create signed client for %s: %s", f.Knot, err) 136 return 137 } 138 139 var forkInfo *types.ForkInfo 140 if user != nil && (repoInfo.Roles.IsOwner() || repoInfo.Roles.IsCollaborator()) { 141 - forkInfo, err = getForkInfo(repoInfo, s, f, w, user, signedClient) 142 if err != nil { 143 - log.Printf("Failed to fetch fork information: %v", err) 144 return 145 } 146 } 147 148 - repoLanguages, err := signedClient.RepoLanguages(user.Did, string(f.RepoAt), repoInfo.Name, f.Ref) 149 if err != nil { 150 log.Printf("failed to compute language percentages: %s", err) 151 - return 152 } 153 154 s.pages.RepoIndexPage(w, pages.RepoIndexParams{
··· 127 secret, err := db.GetRegistrationKey(s.db, f.Knot) 128 if err != nil { 129 log.Printf("failed to get registration key for %s: %s", f.Knot, err) 130 + s.pages.Error500(w) 131 + return 132 } 133 134 signedClient, err := knotclient.NewSignedClient(f.Knot, secret, s.config.Core.Dev) 135 if err != nil { 136 log.Printf("failed to create signed client for %s: %s", f.Knot, err) 137 + s.pages.Error500(w) 138 return 139 } 140 141 var forkInfo *types.ForkInfo 142 if user != nil && (repoInfo.Roles.IsOwner() || repoInfo.Roles.IsCollaborator()) { 143 + forkInfo, err = getForkInfo(repoInfo, s, f, w, user, signedClient) 144 if err != nil { 145 + log.Printf("failed to fetch fork information: %v", err) 146 + s.pages.Error500(w) 147 return 148 } 149 } 150 151 + repoLanguages, err := signedClient.RepoLanguages(f.OwnerDid(), f.RepoAt.String(), repoInfo.Name, f.Ref) 152 if err != nil { 153 + // non-fatal 154 log.Printf("failed to compute language percentages: %s", err) 155 } 156 157 s.pages.RepoIndexPage(w, pages.RepoIndexParams{