X-Git-Url: http://git.squeep.com/?p=squeep-authentication-module;a=blobdiff_plain;f=lib%2Fauthenticator.js;h=efa3d844e7502cd024c6c99da830342dfe04954f;hp=15089a020f5a977f09239537e210c40c6ca61173;hb=1e2d8a7bdb0df28d08258ee813ee6db77168d59e;hpb=dd173e6b450cbba8100883514610c9fde83d050a diff --git a/lib/authenticator.js b/lib/authenticator.js index 15089a0..efa3d84 100644 --- a/lib/authenticator.js +++ b/lib/authenticator.js @@ -335,6 +335,26 @@ class Authenticator { return this.sessionCheck(req, res, ctx, undefined, false); } + + /** + * Require auth for an API endpoint. + * Check for valid local identifier in session, or Authentication header. + * Prompts for Basic auth if not valid. + * @param {http.ClientRequest} req + * @param {http.ServerResponse} res + * @param {Object} ctx + * @param {Boolean} sessionAlsoValid + */ + async apiRequiredLocal(req, res, ctx, sessionAlsoValid = true) { + const validSession = sessionAlsoValid && this.sessionCheck(req, res, ctx, undefined, false, false); + const authorizationHeader = req.getHeader(Enum.Header.Authorization); + const validAuthorization = authorizationHeader && this.isValidAuthorization(authorizationHeader, ctx); + if (validSession || validAuthorization) { + return true; + } + this.requestBasic(res); + } + } module.exports = Authenticator; \ No newline at end of file