|
@@ -306,19 +306,26 @@ const AuthenticationController = {
|
|
|
return doRequest
|
|
return doRequest
|
|
|
},
|
|
},
|
|
|
|
|
|
|
|
- requireOauth() {
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @param {string} scope
|
|
|
|
|
+ * @return {import('express').Handler}
|
|
|
|
|
+ */
|
|
|
|
|
+ requireOauth(scope) {
|
|
|
|
|
+ if (typeof scope !== 'string' || !scope) {
|
|
|
|
|
+ throw new Error(
|
|
|
|
|
+ "requireOauth() expects a non-empty string as 'scope' parameter"
|
|
|
|
|
+ )
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
// require this here because module may not be included in some versions
|
|
// require this here because module may not be included in some versions
|
|
|
const Oauth2Server = require('../../../../modules/oauth2-server/app/src/Oauth2Server')
|
|
const Oauth2Server = require('../../../../modules/oauth2-server/app/src/Oauth2Server')
|
|
|
return function (req, res, next) {
|
|
return function (req, res, next) {
|
|
|
- if (next == null) {
|
|
|
|
|
- next = function () {}
|
|
|
|
|
- }
|
|
|
|
|
const request = new Oauth2Server.Request(req)
|
|
const request = new Oauth2Server.Request(req)
|
|
|
const response = new Oauth2Server.Response(res)
|
|
const response = new Oauth2Server.Response(res)
|
|
|
- return Oauth2Server.server.authenticate(
|
|
|
|
|
|
|
+ Oauth2Server.server.authenticate(
|
|
|
request,
|
|
request,
|
|
|
response,
|
|
response,
|
|
|
- {},
|
|
|
|
|
|
|
+ { scope },
|
|
|
function (err, token) {
|
|
function (err, token) {
|
|
|
if (err) {
|
|
if (err) {
|
|
|
// use a 401 status code for malformed header for git-bridge
|
|
// use a 401 status code for malformed header for git-bridge
|
|
@@ -329,14 +336,15 @@ const AuthenticationController = {
|
|
|
err.code = 401
|
|
err.code = 401
|
|
|
}
|
|
}
|
|
|
// send all other errors
|
|
// send all other errors
|
|
|
- return res
|
|
|
|
|
|
|
+ res
|
|
|
.status(err.code)
|
|
.status(err.code)
|
|
|
.json({ error: err.name, error_description: err.message })
|
|
.json({ error: err.name, error_description: err.message })
|
|
|
|
|
+ } else {
|
|
|
|
|
+ req.oauth = { access_token: token.accessToken }
|
|
|
|
|
+ req.oauth_token = token
|
|
|
|
|
+ req.oauth_user = token.user
|
|
|
|
|
+ next()
|
|
|
}
|
|
}
|
|
|
- req.oauth = { access_token: token.accessToken }
|
|
|
|
|
- req.oauth_token = token
|
|
|
|
|
- req.oauth_user = token.user
|
|
|
|
|
- return next()
|
|
|
|
|
}
|
|
}
|
|
|
)
|
|
)
|
|
|
}
|
|
}
|