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

deny null #1020

Merged
merged 9 commits into from
Jun 19, 2019
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.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
16 changes: 8 additions & 8 deletions src/server/models/page.js
Original file line number Diff line number Diff line change
Expand Up @@ -468,12 +468,12 @@ module.exports = function(crowi) {
};

pageSchema.methods.applyScope = function(user, grant, grantUserGroupId) {
this.grant = grant;

// reset
this.grantedUsers = [];
this.grantedGroup = null;

this.grant = grant || GRANT_PUBLIC;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

null, undefined の場合に public にするのは最後の砦であるこのメソッドで行う


if (grant !== GRANT_PUBLIC && grant !== GRANT_USER_GROUP) {
this.grantedUsers.push(user._id);
}
Expand Down Expand Up @@ -934,7 +934,7 @@ module.exports = function(crowi) {
.cursor();
};

async function pushRevision(pageData, newRevision, user, grant, grantUserGroupId) {
async function pushRevision(pageData, newRevision, user) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

これはただのゴミ掃除

await newRevision.save();
debug('Successfully saved new revision', newRevision);

Expand Down Expand Up @@ -973,7 +973,7 @@ module.exports = function(crowi) {
// sanitize path
path = crowi.xss.process(path); // eslint-disable-line no-param-reassign

let grant = options.grant || GRANT_PUBLIC;
let grant = options.grant;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Page.create に渡ってきたものはそのまま使う(portal の場合だけ public にする)

// force public
if (isPortalPath(path)) {
grant = GRANT_PUBLIC;
Expand All @@ -997,7 +997,7 @@ module.exports = function(crowi) {

let savedPage = await page.save();
const newRevision = Revision.prepareRevision(savedPage, body, null, user, { format });
const revision = await pushRevision(savedPage, newRevision, user, grant, grantUserGroupId);
const revision = await pushRevision(savedPage, newRevision, user);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

これはただのゴミ掃除

savedPage = await this.findByPath(revision.path)
.populate('revision')
.populate('creator');
Expand All @@ -1012,8 +1012,8 @@ module.exports = function(crowi) {
validateCrowi();

const Revision = crowi.model('Revision');
const grant = options.grant || null;
const grantUserGroupId = options.grantUserGroupId || null;
const grant = options.grant || pageData.grant; // use the previous data if absence
const grantUserGroupId = options.grantUserGroupId || pageData.grantUserGroupId; // use the previous data if absence
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

update 時は指定がなければ元の値を使う

const isSyncRevisionToHackmd = options.isSyncRevisionToHackmd;
const socketClientId = options.socketClientId || null;

Expand All @@ -1023,7 +1023,7 @@ module.exports = function(crowi) {
// update existing page
let savedPage = await pageData.save();
const newRevision = await Revision.prepareRevision(pageData, body, previousBody, user);
const revision = await pushRevision(savedPage, newRevision, user, grant, grantUserGroupId);
const revision = await pushRevision(savedPage, newRevision, user);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

これはただのゴミ掃除

savedPage = await this.findByPath(revision.path)
.populate('revision')
.populate('creator');
Expand Down
13 changes: 8 additions & 5 deletions src/server/routes/page.js
Original file line number Diff line number Diff line change
Expand Up @@ -567,9 +567,12 @@ module.exports = function(crowi, app) {
return res.json(ApiResponse.error('Page exists', 'already_exists'));
}

const options = {
grant, grantUserGroupId, overwriteScopesOfDescendants, socketClientId, pageTags,
};
const options = { socketClientId };
if (grant != null) {
options.grant = grant;
options.grantUserGroupId = grantUserGroupId;
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • router の create では、API body で指定がなければ options にも入れない
    • router の update での仕様に揃えた
    • undefied, null 値でも model の applyScope がよしなにやってくれるので router のスコープ外という考え方


const createdPage = await Page.create(pagePath, body, req.user, options);

let savedTags;
Expand Down Expand Up @@ -648,8 +651,6 @@ module.exports = function(crowi, app) {
const options = { isSyncRevisionToHackmd, socketClientId };
if (grant != null) {
options.grant = grant;
}
if (grantUserGroupId != null) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

applyScope が賢くなったので、ここは grant が指定されているかどうかだけ見て grantUserGroupId も options に入れた。仮に grant: 1grantUserGroupId に値が入っている不正な状態でも、applyScode が是正してくれる。

options.grantUserGroupId = grantUserGroupId;
}

Expand Down Expand Up @@ -1116,6 +1117,8 @@ module.exports = function(crowi, app) {
req.body.path = newPagePath;
req.body.body = page.revision.body;
req.body.grant = page.grant;
req.body.grantedUsers = page.grantedUsers;
req.body.grantedGroup = page.grantedGroup;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

duplicate 時に元々バグがあった部分。コピー元データを使うように修正。

req.body.pageTags = originTags;

return api.create(req, res);
Expand Down