mirror of
https://github.com/wekan/wekan.git
synced 2026-02-02 22:51:47 +01:00
Add a new SessionData collection and limit user fields
* Add new SessionData collection to store user session data available to server and client * Limit the Users fields sent to the client by `myCards`, `dueCards`, `brokenCards`, and `globalSearch` using new `Users.safeFields` * clean-up
This commit is contained in:
parent
ab183acac3
commit
ff626fb559
5 changed files with 113 additions and 81 deletions
|
|
@ -1914,14 +1914,6 @@ Cards.globalSearch = queryParams => {
|
|||
// eslint-disable-next-line no-console
|
||||
// console.log('count:', cards.count());
|
||||
|
||||
if (Meteor.isServer) {
|
||||
Users.update(userId, {
|
||||
$set: {
|
||||
'sessionData.totalHits': cards.count(),
|
||||
'sessionData.lastHit': cards.count() > 50 ? 50 : cards.count(),
|
||||
},
|
||||
});
|
||||
}
|
||||
return { cards, errors };
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -377,6 +377,14 @@ Users.initEasySearch(searchInFields, {
|
|||
returnFields: [...searchInFields, 'profile.avatarUrl'],
|
||||
});
|
||||
|
||||
Users.safeFields = {
|
||||
_id: 1,
|
||||
username: 1,
|
||||
'profile.fullname': 1,
|
||||
'profile.avatarUrl': 1,
|
||||
'profile.initials': 1,
|
||||
};
|
||||
|
||||
if (Meteor.isClient) {
|
||||
Users.helpers({
|
||||
isBoardMember() {
|
||||
|
|
|
|||
73
models/usersessiondata.js
Normal file
73
models/usersessiondata.js
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
SessionData = new Mongo.Collection('sessiondata');
|
||||
|
||||
/**
|
||||
* A UserSessionData in Wekan. Organization in Trello.
|
||||
*/
|
||||
SessionData.attachSchema(
|
||||
new SimpleSchema({
|
||||
_id: {
|
||||
/**
|
||||
* the organization id
|
||||
*/
|
||||
type: Number,
|
||||
optional: true,
|
||||
// eslint-disable-next-line consistent-return
|
||||
autoValue() {
|
||||
if (this.isInsert && !this.isSet) {
|
||||
return incrementCounter('counters', 'orgId', 1);
|
||||
}
|
||||
},
|
||||
},
|
||||
userId: {
|
||||
/**
|
||||
* userId of the user
|
||||
*/
|
||||
type: String,
|
||||
optional: false,
|
||||
},
|
||||
totalHits: {
|
||||
/**
|
||||
* total number of hits in the last report query
|
||||
*/
|
||||
type: Number,
|
||||
optional: true,
|
||||
},
|
||||
lastHit: {
|
||||
/**
|
||||
* the last hit returned from a report query
|
||||
*/
|
||||
type: Number,
|
||||
optional: true,
|
||||
},
|
||||
createdAt: {
|
||||
/**
|
||||
* creation date of the team
|
||||
*/
|
||||
type: Date,
|
||||
// eslint-disable-next-line consistent-return
|
||||
autoValue() {
|
||||
if (this.isInsert) {
|
||||
return new Date();
|
||||
} else if (this.isUpsert) {
|
||||
return { $setOnInsert: new Date() };
|
||||
} else {
|
||||
this.unset();
|
||||
}
|
||||
},
|
||||
},
|
||||
modifiedAt: {
|
||||
type: Date,
|
||||
denyUpdate: false,
|
||||
// eslint-disable-next-line consistent-return
|
||||
autoValue() {
|
||||
if (this.isInsert || this.isUpsert || this.isUpdate) {
|
||||
return new Date();
|
||||
} else {
|
||||
this.unset();
|
||||
}
|
||||
},
|
||||
},
|
||||
}),
|
||||
);
|
||||
|
||||
export default SessionData;
|
||||
Loading…
Add table
Add a link
Reference in a new issue