Skip to content

Commit 2ef06a6

Browse files
committed
include 403 as well
1 parent ea5590a commit 2ef06a6

1 file changed

Lines changed: 16 additions & 9 deletions

File tree

src/outline/manager.js

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2191,28 +2191,35 @@ export default function (context) {
21912191
!UI.widgets.isVideo(subject)
21922192
) {
21932193
const docUri = (subject.doc() && subject.doc().uri) ? subject.doc().uri : '' + subject.doc()
2194-
/* handle 401 errors more gracefully. For now just display a friendlier message
2194+
/* handle auth errors more gracefully. For now just display a friendlier message
21952195
perhaps we can have a different page that gets shown in the future */
2196-
const unauthorizedOutlineMessage = function () {
2196+
const outlineAuthMessage = function (statusCode) {
21972197
const isRootResource = !!(subject && subject.uri && subject.site && subject.site().uri === subject.uri)
2198+
if (statusCode === 403) {
2199+
return isRootResource
2200+
? 'This root resource is not accessible with your current permissions. Try logging in with an authorized account or opening a public profile document.'
2201+
: 'This resource is not accessible with your current permissions.'
2202+
}
21982203
return isRootResource
21992204
? 'This root resource is not publicly readable. Try logging in or opening a profile document.'
22002205
: 'This resource is not publicly readable. Try logging in or opening a different public resource.'
22012206
}
2202-
const isUnauthorizedOutlineError = function (detail, errObj) {
2207+
const authErrorStatus = function (detail, errObj) {
22032208
const detailText = typeof detail === 'string' ? detail : String(detail || '')
2204-
return errObj?.status === 401 ||
2205-
errObj?.response?.status === 401 ||
2206-
detailText.includes('status: 401') ||
2207-
detailText.includes('status 401')
2209+
const statusCode = errObj?.status || errObj?.response?.status
2210+
if (statusCode === 401 || statusCode === 403) return statusCode
2211+
if (detailText.includes('status: 403') || detailText.includes('status 403')) return 403
2212+
if (detailText.includes('status: 401') || detailText.includes('status 401')) return 401
2213+
return null
22082214
}
22092215
const appendOutlineError = function (detail, errObj) {
22102216
if (p.querySelector && docUri) {
22112217
const existing = p.querySelector('[data-outline-error-for="' + docUri + '"]')
22122218
if (existing) return
22132219
}
2214-
const friendlyDetail = isUnauthorizedOutlineError(detail, errObj)
2215-
? unauthorizedOutlineMessage()
2220+
const statusCode = authErrorStatus(detail, errObj)
2221+
const friendlyDetail = statusCode
2222+
? outlineAuthMessage(statusCode)
22162223
: detail
22172224
const message = UI.widgets.errorMessageBlock(
22182225
dom,

0 commit comments

Comments
 (0)