Skip to content

Commit 54b09d9

Browse files
authored
fix: show an error banner if the user does not have permission to view the audit page (coder#16637)
1 parent f670559 commit 54b09d9

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

coderd/coderd.go

+19
Original file line numberDiff line numberDiff line change
@@ -930,6 +930,25 @@ func New(options *Options) *API {
930930
r.Route("/audit", func(r chi.Router) {
931931
r.Use(
932932
apiKeyMiddleware,
933+
// This middleware only checks the site and orgs for the audit_log read
934+
// permission.
935+
// In the future if it makes sense to have this permission on the user as
936+
// well we will need to update this middleware to include that check.
937+
func(next http.Handler) http.Handler {
938+
return http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
939+
if api.Authorize(r, policy.ActionRead, rbac.ResourceAuditLog) {
940+
next.ServeHTTP(rw, r)
941+
return
942+
}
943+
944+
if api.Authorize(r, policy.ActionRead, rbac.ResourceAuditLog.AnyOrganization()) {
945+
next.ServeHTTP(rw, r)
946+
return
947+
}
948+
949+
httpapi.Forbidden(rw)
950+
})
951+
},
933952
)
934953

935954
r.Get("/", api.auditLogs)

site/src/pages/AuditPage/AuditPage.tsx

+9
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { paginatedAudits } from "api/queries/audits";
2+
import { ErrorAlert } from "components/Alert/ErrorAlert";
23
import { useFilter } from "components/Filter/Filter";
34
import { useUserFilterMenu } from "components/Filter/UserFilter";
45
import { isNonInitialPage } from "components/PaginationWidget/utils";
@@ -67,6 +68,14 @@ const AuditPage: FC = () => {
6768
}),
6869
});
6970

71+
if (auditsQuery.error) {
72+
return (
73+
<div className="p-6">
74+
<ErrorAlert error={auditsQuery.error} />
75+
</div>
76+
);
77+
}
78+
7079
return (
7180
<>
7281
<Helmet>

0 commit comments

Comments
 (0)