Skip to content

Commit b5db3f5

Browse files
committed
Modify errs.ForbiddenErr to always return an error to the cli.
1 parent 4f84cef commit b5db3f5

File tree

8 files changed

+23
-18
lines changed

8 files changed

+23
-18
lines changed

api/api.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,7 @@ func (h *caHandler) ProvisionerKey(w http.ResponseWriter, r *http.Request) {
348348
func (h *caHandler) Roots(w http.ResponseWriter, r *http.Request) {
349349
roots, err := h.Authority.GetRoots()
350350
if err != nil {
351-
WriteError(w, errs.ForbiddenErr(err))
351+
WriteError(w, errs.ForbiddenErr(err, "error getting roots"))
352352
return
353353
}
354354

@@ -366,7 +366,7 @@ func (h *caHandler) Roots(w http.ResponseWriter, r *http.Request) {
366366
func (h *caHandler) Federation(w http.ResponseWriter, r *http.Request) {
367367
federated, err := h.Authority.GetFederation()
368368
if err != nil {
369-
WriteError(w, errs.ForbiddenErr(err))
369+
WriteError(w, errs.ForbiddenErr(err, "error getting federated roots"))
370370
return
371371
}
372372

api/revoke.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ func (h *caHandler) Revoke(w http.ResponseWriter, r *http.Request) {
9696
}
9797

9898
if err := h.Authority.Revoke(ctx, opts); err != nil {
99-
WriteError(w, errs.ForbiddenErr(err))
99+
WriteError(w, errs.ForbiddenErr(err, "error revoking certificate"))
100100
return
101101
}
102102

api/sign.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ func (h *caHandler) Sign(w http.ResponseWriter, r *http.Request) {
7474

7575
certChain, err := h.Authority.Sign(body.CsrPEM.CertificateRequest, opts, signOpts...)
7676
if err != nil {
77-
WriteError(w, errs.ForbiddenErr(err))
77+
WriteError(w, errs.ForbiddenErr(err, "error signing certificate"))
7878
return
7979
}
8080
certChainPEM := certChainToPEM(certChain)

api/ssh.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -293,15 +293,15 @@ func (h *caHandler) SSHSign(w http.ResponseWriter, r *http.Request) {
293293

294294
cert, err := h.Authority.SignSSH(ctx, publicKey, opts, signOpts...)
295295
if err != nil {
296-
WriteError(w, errs.ForbiddenErr(err))
296+
WriteError(w, errs.ForbiddenErr(err, "error signing ssh certificate"))
297297
return
298298
}
299299

300300
var addUserCertificate *SSHCertificate
301301
if addUserPublicKey != nil && authority.IsValidForAddUser(cert) == nil {
302302
addUserCert, err := h.Authority.SignSSHAddUser(ctx, addUserPublicKey, cert)
303303
if err != nil {
304-
WriteError(w, errs.ForbiddenErr(err))
304+
WriteError(w, errs.ForbiddenErr(err, "error signing ssh certificate"))
305305
return
306306
}
307307
addUserCertificate = &SSHCertificate{addUserCert}
@@ -326,7 +326,7 @@ func (h *caHandler) SSHSign(w http.ResponseWriter, r *http.Request) {
326326

327327
certChain, err := h.Authority.Sign(cr, provisioner.SignOptions{}, signOpts...)
328328
if err != nil {
329-
WriteError(w, errs.ForbiddenErr(err))
329+
WriteError(w, errs.ForbiddenErr(err, "error signing identity certificate"))
330330
return
331331
}
332332
identityCertificate = certChainToPEM(certChain)

api/sshRekey.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ func (h *caHandler) SSHRekey(w http.ResponseWriter, r *http.Request) {
6868

6969
newCert, err := h.Authority.RekeySSH(ctx, oldCert, publicKey, signOpts...)
7070
if err != nil {
71-
WriteError(w, errs.ForbiddenErr(err))
71+
WriteError(w, errs.ForbiddenErr(err, "error signing ssh certificate"))
7272
return
7373
}
7474

@@ -78,7 +78,7 @@ func (h *caHandler) SSHRekey(w http.ResponseWriter, r *http.Request) {
7878

7979
identity, err := h.renewIdentityCertificate(r, notBefore, notAfter)
8080
if err != nil {
81-
WriteError(w, errs.ForbiddenErr(err))
81+
WriteError(w, errs.ForbiddenErr(err, "error signing identity certificate"))
8282
return
8383
}
8484

api/sshRenew.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ func (h *caHandler) SSHRenew(w http.ResponseWriter, r *http.Request) {
6060

6161
newCert, err := h.Authority.RenewSSH(ctx, oldCert)
6262
if err != nil {
63-
WriteError(w, errs.ForbiddenErr(err))
63+
WriteError(w, errs.ForbiddenErr(err, "error signing ssh certificate"))
6464
return
6565
}
6666

@@ -70,7 +70,7 @@ func (h *caHandler) SSHRenew(w http.ResponseWriter, r *http.Request) {
7070

7171
identity, err := h.renewIdentityCertificate(r, notBefore, notAfter)
7272
if err != nil {
73-
WriteError(w, errs.ForbiddenErr(err))
73+
WriteError(w, errs.ForbiddenErr(err, "error signing identity certificate"))
7474
return
7575
}
7676

api/sshRevoke.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ func (h *caHandler) SSHRevoke(w http.ResponseWriter, r *http.Request) {
7575
opts.OTT = body.OTT
7676

7777
if err := h.Authority.Revoke(ctx, opts); err != nil {
78-
WriteError(w, errs.ForbiddenErr(err))
78+
WriteError(w, errs.ForbiddenErr(err, "error revoking ssh certificate"))
7979
return
8080
}
8181

errs/error.go

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,8 @@ func StatusCodeError(code int, e error, opts ...Option) error {
169169
case http.StatusUnauthorized:
170170
return UnauthorizedErr(e, opts...)
171171
case http.StatusForbidden:
172-
return ForbiddenErr(e, opts...)
172+
opts = append(opts, withDefaultMessage(ForbiddenDefaultMsg))
173+
return NewErr(http.StatusForbidden, e, opts...)
173174
case http.StatusInternalServerError:
174175
return InternalServerErr(e, opts...)
175176
case http.StatusNotImplemented:
@@ -199,12 +200,18 @@ var (
199200
// BadRequestPrefix is the prefix added to the bad request messages that are
200201
// directly sent to the cli.
201202
BadRequestPrefix = "The request could not be completed: "
203+
204+
// ForbiddenPrefix is the prefix added to the forbidden messates that are
205+
// sent to the cli.
206+
ForbiddenPrefix = "The request was forbidden by the certificate authority: "
202207
)
203208

204209
func formatMessage(status int, msg string) string {
205210
switch status {
206211
case http.StatusBadRequest:
207212
return BadRequestPrefix + msg + "."
213+
case http.StatusForbidden:
214+
return ForbiddenPrefix + msg + "."
208215
default:
209216
return msg
210217
}
@@ -356,14 +363,12 @@ func UnauthorizedErr(err error, opts ...Option) error {
356363

357364
// Forbidden creates a 403 error with the given format and arguments.
358365
func Forbidden(format string, args ...interface{}) error {
359-
args = append(args, withDefaultMessage(ForbiddenDefaultMsg))
360-
return Errorf(http.StatusForbidden, format, args...)
366+
return New(http.StatusForbidden, format, args...)
361367
}
362368

363369
// ForbiddenErr returns an 403 error with the given error.
364-
func ForbiddenErr(err error, opts ...Option) error {
365-
opts = append(opts, withDefaultMessage(ForbiddenDefaultMsg))
366-
return NewErr(http.StatusForbidden, err, opts...)
370+
func ForbiddenErr(err error, format string, args ...interface{}) error {
371+
return NewError(http.StatusForbidden, err, format, args...)
367372
}
368373

369374
// NotFound creates a 404 error with the given format and arguments.

0 commit comments

Comments
 (0)