Skip to content

Commit 830f884

Browse files
jaxoncreedTallTedbourgeoa
authored
[WIP] Auth-Upgrade (#1611)
* Changed error page to display the Databrowser instead * Fixed error page tests * Updated more tests * Fix tests * Fixed test suite tests * Update test/resources/accounts/localhost/index.html Co-authored-by: Ted Thibodeau Jr <tthibodeau@openlinksw.com> * Update test/resources/accounts/single-user/index.html Co-authored-by: Ted Thibodeau Jr <tthibodeau@openlinksw.com> * upgrade to mashlib@1.7.5-alpha * Cleared user from session when not authenticated * Fixed tests * Added request to dependencies * Hackily removed sendFile so that test suite passes * Made the logout route remove the user * mashlib@1.7.5-alpha-2-98ed3958 * mashlib@1.7.5-alpha-3-98ed3958 * v5.6.9-alpha-d9bd19aa * v5.6.9-alpha-23942afd * v5.6.9-beta * mashlib@1.7.5-beta-1 * add solid-auth-client * mashlib@1.7.5-beta.2 Co-authored-by: Ted Thibodeau Jr <tthibodeau@openlinksw.com> Co-authored-by: bourgeoa <alain.bourgeois10@gmail.com>
1 parent e3b12fd commit 830f884

22 files changed

+566
-38
lines changed

lib/create-app.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,9 @@ function initWebId (argv, app, ldp) {
236236
// Ensure this modified session is not saved
237237
req.session.save = (done) => done()
238238
}
239+
if (isLogoutRequest(req)) {
240+
delete req.session.userId
241+
}
239242
next()
240243
})
241244

lib/handlers/error-pages.js

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,24 @@ function sendErrorPage (statusCode, res, err, ldp) {
125125
})
126126
}
127127

128+
/**
129+
* Renders the databrowser
130+
*
131+
* @param req {IncomingRequest}
132+
* @param res {ServerResponse}
133+
*/
134+
function renderDataBrowser (req, res) {
135+
res.set('Content-Type', 'text/html')
136+
const ldp = req.app.locals.ldp
137+
const defaultDataBrowser = require.resolve('mashlib/dist/databrowser.html')
138+
const dataBrowserPath = ldp.dataBrowserPath === 'default' ? defaultDataBrowser : ldp.dataBrowserPath
139+
debug(' sending data browser file: ' + dataBrowserPath)
140+
const dataBrowserHtml = fs.readFileSync(dataBrowserPath, 'utf8')
141+
// Note: This must be done instead of sendFile because the test suite doesn't accept 412 responses
142+
res.set('content-type', 'text/html')
143+
res.send(dataBrowserHtml)
144+
}
145+
128146
/**
129147
* Renders a 401 response explaining that a login is required.
130148
*
@@ -136,7 +154,11 @@ function renderLoginRequired (req, res, err) {
136154
debug(`Display login-required for ${currentUrl}`)
137155
res.statusMessage = err.message
138156
res.status(401)
139-
res.render('auth/login-required', { currentUrl })
157+
if (req.accepts('html')) {
158+
renderDataBrowser(req, res)
159+
} else {
160+
res.send('Not Authenticated')
161+
}
140162
}
141163

142164
/**
@@ -147,12 +169,14 @@ function renderLoginRequired (req, res, err) {
147169
*/
148170
function renderNoPermission (req, res, err) {
149171
const currentUrl = util.fullUrlForReq(req)
150-
let webId = ''
151-
if (req.session) webId = req.session.userId
152172
debug(`Display no-permission for ${currentUrl}`)
153173
res.statusMessage = err.message
154174
res.status(403)
155-
res.render('auth/no-permission', { currentUrl, webId })
175+
if (req.accepts('html')) {
176+
renderDataBrowser(req, res)
177+
} else {
178+
res.send('Not Authorized')
179+
}
156180
}
157181

158182
/**

0 commit comments

Comments
 (0)