Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Some improvement for lockdown performance #2048

Merged
merged 1 commit into from
Feb 24, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 17 additions & 1 deletion controllers/discussion.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ var modelQuery = require('../libs/modelQuery');

var cleanFilename = require('../libs/helpers').cleanFilename;
var execQueryTask = require('../libs/tasks').execQueryTask;
var statusCodePage = require('../libs/templateHelpers').statusCodePage;
var pageMetadata = require('../libs/templateHelpers').pageMetadata;
var orderDir = require('../libs/templateHelpers').orderDir;
var statusCodePage = require('../libs/templateHelpers').statusCodePage;

//--- Configuration inclusions

Expand Down Expand Up @@ -144,6 +144,14 @@ exports.categoryListPage = function (aReq, aRes, aNext) {
// discussionListQuery: Defaults
modelQuery.applyDiscussionListQueryDefaults(discussionListQuery, options, aReq);

if (options.authToSearch) {
statusCodePage(aReq, aRes, aNext, {
statusCode: 403, // Forbidden
statusMessage: 'Please Sign In to Search'
});
return;
}

// discussionListQuery: Pagination
pagination = options.pagination; // is set in modelQuery.apply___ListQueryDefaults

Expand Down Expand Up @@ -235,6 +243,14 @@ exports.list = function (aReq, aRes, aNext) {
// discussionListQuery: Defaults
modelQuery.applyDiscussionListQueryDefaults(discussionListQuery, options, aReq);

if (options.authToSearch) {
statusCodePage(aReq, aRes, aNext, {
statusCode: 403, // Forbidden
statusMessage: 'Please Sign In to Search'
});
return;
}

// discussionListQuery: Pagination
pagination = options.pagination; // is set in modelQuery.apply___ListQueryDefaults

Expand Down
19 changes: 18 additions & 1 deletion controllers/group.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ var getRating = require('../libs/collectiveRating').getRating;
var execQueryTask = require('../libs/tasks').execQueryTask;
var pageMetadata = require('../libs/templateHelpers').pageMetadata;
var orderDir = require('../libs/templateHelpers').orderDir;
var statusCodePage = require('../libs/templateHelpers').statusCodePage;

//--- Configuration inclusions

Expand Down Expand Up @@ -188,7 +189,7 @@ exports.addScriptToGroups = function (aScript, aGroupNames, aCallback) {
};

// list groups
exports.list = function (aReq, aRes) {
exports.list = function (aReq, aRes, aNext) {
function preRender() {
// groupList
options.groupList = _.map(options.groupList, modelParser.parseGroup);
Expand Down Expand Up @@ -238,6 +239,14 @@ exports.list = function (aReq, aRes) {
// groupListQuery: Defaults
modelQuery.applyGroupListQueryDefaults(groupListQuery, options, aReq);

if (options.authToSearch) {
statusCodePage(aReq, aRes, aNext, {
statusCode: 403, // Forbidden
statusMessage: 'Please Sign In to Search'
});
return;
}

// groupListQuery: Pagination
var pagination = options.pagination; // is set in modelQuery.apply___ListQueryDefaults

Expand Down Expand Up @@ -374,6 +383,14 @@ exports.view = function (aReq, aRes, aNext) {
// scriptListQuery: Defaults
modelQuery.applyScriptListQueryDefaults(scriptListQuery, options, aReq);

if (options.authToSearch) {
statusCodePage(aReq, aRes, aNext, {
statusCode: 403, // Forbidden
statusMessage: 'Please Sign In to Search'
});
return;
}

// scriptListQuery: Pagination
pagination = options.pagination; // is set in modelQuery.apply___ListQueryDefaults

Expand Down
10 changes: 9 additions & 1 deletion controllers/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ var strategies = require('./strategies.json');
//---

// The site home page has scriptList, and groups in a sidebar
exports.home = function (aReq, aRes) {
exports.home = function (aReq, aRes, aNext) {
function preRender() {
// scriptList
options.scriptList = _.map(options.scriptList, modelParser.parseScript);
Expand Down Expand Up @@ -159,6 +159,14 @@ exports.home = function (aReq, aRes) {
modelQuery.applyScriptListQueryDefaults(scriptListQuery, options, aReq);
}

if (options.authToSearch) {
statusCodePage(aReq, aRes, aNext, {
statusCode: 403, // Forbidden
statusMessage: 'Please Sign In to Search'
});
return;
}

// scriptListQuery: Pagination
pagination = options.pagination; // is set in modelQuery.apply___ListQueryDefaults

Expand Down
20 changes: 18 additions & 2 deletions controllers/issue.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ var modelQuery = require('../libs/modelQuery');

var execQueryTask = require('../libs/tasks').execQueryTask;
var countTask = require('../libs/tasks').countTask;
var statusCodePage = require('../libs/templateHelpers').statusCodePage;
var pageMetadata = require('../libs/templateHelpers').pageMetadata;
var orderDir = require('../libs/templateHelpers').orderDir;
var statusCodePage = require('../libs/templateHelpers').statusCodePage;

//--- Configuration inclusions

Expand Down Expand Up @@ -159,11 +159,19 @@ exports.list = function (aReq, aRes, aNext) {
// discussionListQuery: Defaults
modelQuery.applyDiscussionListQueryDefaults(discussionListQuery, options, aReq);

if (options.authToSearch) {
statusCodePage(aReq, aRes, aNext, {
statusCode: 403, // Forbidden
statusMessage: 'Please Sign In to Search'
});
return;
}

// discussionListQuery: Pagination
pagination = options.pagination; // is set in modelQuery.apply___ListQueryDefaults

// SearchBar
options.searchBarPlaceholder = 'Search Issues';
options.searchBarPlaceholder = options.searchBarPlaceholder.replace(/Topics/, 'Issues');

//--- Tasks

Expand Down Expand Up @@ -286,6 +294,14 @@ exports.view = function (aReq, aRes, aNext) {
// commentListQuery: Defaults
modelQuery.applyCommentListQueryDefaults(commentListQuery, options, aReq);

if (options.authToSearch) {
statusCodePage(aReq, aRes, aNext, {
statusCode: 403, // Forbidden
statusMessage: 'Please Sign In to Search'
});
return;
}

// commentListQuery: Pagination
pagination = options.pagination; // is set in modelQuery.apply___ListQueryDefaults

Expand Down
10 changes: 9 additions & 1 deletion controllers/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,11 +53,11 @@ var github = require('./../libs/githubClient');

var renderMd = require('../libs/markdown').renderMd;
var getDefaultPagination = require('../libs/templateHelpers').getDefaultPagination;
var statusCodePage = require('../libs/templateHelpers').statusCodePage;
var execQueryTask = require('../libs/tasks').execQueryTask;
var countTask = require('../libs/tasks').countTask;
var pageMetadata = require('../libs/templateHelpers').pageMetadata;
var orderDir = require('../libs/templateHelpers').orderDir;
var statusCodePage = require('../libs/templateHelpers').statusCodePage;

var getSessionDataList = require('../libs/modifySessions').getSessionDataList;
var extendSession = require('../libs/modifySessions').extend;
Expand Down Expand Up @@ -492,6 +492,14 @@ exports.userListPage = function (aReq, aRes, aNext) {
// userListQuery: Defaults
modelQuery.applyUserListQueryDefaults(userListQuery, options, aReq);

if (options.authToSearch) {
statusCodePage(aReq, aRes, aNext, {
statusCode: 403, // Forbidden
statusMessage: 'Please Sign In to Search'
});
return;
}

// userListQuery: Pagination
pagination = options.pagination; // is set in modelQuery.apply___ListQueryDefaults

Expand Down
37 changes: 32 additions & 5 deletions libs/modelQuery.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,11 @@ var isDbg = require('../libs/debug').isDbg;
//
var _ = require('underscore');

//--
var getDefaultPagination = require('../libs/templateHelpers').getDefaultPagination;

var lockdown = process.env.FORCE_BUSY_UPDATEURL_CHECK === 'true';

// Transform a "tri-state" value condition to null for true/false/null stored DB values
// See also #701
var findOrDefaultToNull = function (aQuery, aKey, aValue, aDefaultValue) {
Expand Down Expand Up @@ -257,17 +260,27 @@ exports.applyModelListQueryFlaggedFilter = applyModelListQueryFlaggedFilter;

var applyModelListQueryDefaults = function (aModelListQuery, aOptions, aReq, aDefaultOptions) {
var orders = null;
var authedUser = aReq.session.user;
var authRequired = 'Sign In to ';

// Search
if (aReq.query.q) {
aOptions.searchBarValue = aReq.query.q;
if (authedUser || !aOptions.authToSearch) {
authRequired = '';
aOptions.authToSearch = false;

if (aReq.query.q) {
aOptions.searchBarValue = aReq.query.q;

if (aDefaultOptions.parseSearchQueryFn) {
aDefaultOptions.parseSearchQueryFn(aModelListQuery, aReq.query.q);
if (aDefaultOptions.parseSearchQueryFn) {
aDefaultOptions.parseSearchQueryFn(aModelListQuery, aReq.query.q);
}
}
} else if (!aReq.query.q) {
aOptions.authToSearch = false;
}
aOptions.searchBarFormAction = aDefaultOptions.searchBarFormAction || '';
aOptions.searchBarPlaceholder = aDefaultOptions.searchBarPlaceholder || 'Search';
aOptions.searchBarPlaceholder = authRequired
+ aDefaultOptions.searchBarPlaceholder || 'Search';
aOptions.searchBarFormHiddenVariables = aDefaultOptions.searchBarFormHiddenVariables || [];

// flagged
Expand Down Expand Up @@ -336,6 +349,8 @@ var applyModelListQueryDefaults = function (aModelListQuery, aOptions, aReq, aDe
};

exports.applyCommentListQueryDefaults = function (aCommentListQuery, aOptions, aReq) {
aOptions.authToSearch = lockdown;

applyModelListQueryDefaults(aCommentListQuery, aOptions, aReq, {
defaultSort: 'created',
parseSearchQueryFn: parseCommentSearchQuery,
Expand All @@ -352,6 +367,8 @@ exports.applyCommentListQueryDefaults = function (aCommentListQuery, aOptions, a
};

exports.applySyncListQueryDefaults = function (aSyncListQuery, aOptions, aReq) {
aOptions.authToSearch = lockdown;

applyModelListQueryDefaults(aSyncListQuery, aOptions, aReq, {
defaultSort: '-created',
parseSearchQueryFn: parseSyncSearchQuery,
Expand All @@ -361,6 +378,8 @@ exports.applySyncListQueryDefaults = function (aSyncListQuery, aOptions, aReq) {
};

exports.applyDiscussionListQueryDefaults = function (aDiscussionListQuery, aOptions, aReq) {
aOptions.authToSearch = lockdown;

applyModelListQueryDefaults(aDiscussionListQuery, aOptions, aReq, {
defaultSort: '-updated -created',
parseSearchQueryFn: parseDiscussionSearchQuery,
Expand All @@ -370,6 +389,8 @@ exports.applyDiscussionListQueryDefaults = function (aDiscussionListQuery, aOpti
};

exports.applyGroupListQueryDefaults = function (aGroupListQuery, aOptions, aReq) {
aOptions.authToSearch = lockdown;

applyModelListQueryDefaults(aGroupListQuery, aOptions, aReq, {
defaultSort: '-rating name',
parseSearchQueryFn: parseGroupSearchQuery,
Expand All @@ -387,6 +408,8 @@ var scriptListQueryDefaults = {
};
exports.scriptListQueryDefaults = scriptListQueryDefaults;
exports.applyScriptListQueryDefaults = function (aScriptListQuery, aOptions, aReq) {
aOptions.authToSearch = lockdown;

applyModelListQueryDefaults(aScriptListQuery, aOptions, aReq, scriptListQueryDefaults);
};

Expand All @@ -402,10 +425,14 @@ var libraryListQueryDefaults = {
};
exports.libraryListQueryDefaults = libraryListQueryDefaults;
exports.applyLibraryListQueryDefaults = function (aLibraryListQuery, aOptions, aReq) {
aOptions.authToSearch = lockdown;

applyModelListQueryDefaults(aLibraryListQuery, aOptions, aReq, libraryListQueryDefaults);
};

exports.applyUserListQueryDefaults = function (aUserListQuery, aOptions, aReq) {
aOptions.authToSearch = lockdown;

applyModelListQueryDefaults(aUserListQuery, aOptions, aReq, {
defaultSort: 'name',
parseSearchQueryFn: parseUserSearchQuery,
Expand Down
6 changes: 3 additions & 3 deletions views/includes/searchBar.html
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
<form action="{{{searchBarFormAction}}}" method="get">
{{#searchBarFormHiddenVariables}}
<input type="hidden" name="{{name}}" value="{{value}}">
<input type="hidden" name="{{name}}" value="{{value}}"{{#authToSearch}} readonly="readonly"{{/authToSearch}}>
{{/searchBarFormHiddenVariables}}
<div class="input-group col-xs-12">
<div class="form-group has-feedback has-clear">
<input name="q" type="text" placeholder="{{searchBarPlaceholder}}" class="search form-control" value="{{searchBarValue}}" spellcheck="false" autocomplete="off" autocorrect="off" autocapitalize="off" />
<input name="q" type="text" placeholder="{{searchBarPlaceholder}}" class="search form-control" value="{{searchBarValue}}" spellcheck="false" autocomplete="off" autocorrect="off" autocapitalize="off"{{#authToSearch}} readonly="readonly"{{/authToSearch}} />
<span class="form-control-feedback form-control-clear fa fa-times hidden"></span>
</div>
<span class="input-group-btn">
<button class="btn btn-default" type="submit">
<button class="btn btn-default" type="submit"{{#authToSearch}} disabled="disabled"{{/authToSearch}}>
<i class="fa fa-search"></i>
</button>
</span>
Expand Down