/*\ title: $:/core/modules/server/authenticators/header.js type: application/javascript module-type: authenticator Authenticator for trusted header authentication \*/ (function(){ /*jslint node: true, browser: true */ /*global $tw: false */ "use strict"; function HeaderAuthenticator(server) { this.server = server; this.header = server.get("authenticated-user-header") ? server.get("authenticated-user-header").toLowerCase() : undefined; } /* Returns true if the authenticator is active, false if it is inactive, or a string if there is an error */ HeaderAuthenticator.prototype.init = function() { return !!this.header; }; /* Returns true if the request is authenticated and assigns the "authenticatedUsername" state variable. Returns false if the request couldn't be authenticated having sent an appropriate response to the browser */ HeaderAuthenticator.prototype.authenticateRequest = function(request,response,state) { // Otherwise, authenticate as the username in the specified header var username = request.headers[this.header]; if(!username && !state.allowAnon) { response.writeHead(401,"Authorization header required to login to '" + state.server.servername + "'"); response.end(); return false; } else { // authenticatedUsername will be undefined for anonymous users state.authenticatedUsername = username; return true; } }; exports.AuthenticatorClass = HeaderAuthenticator; })();