summaryrefslogtreecommitdiffstats
path: root/models/invitationCodes.js
diff options
context:
space:
mode:
Diffstat (limited to 'models/invitationCodes.js')
-rw-r--r--models/invitationCodes.js87
1 files changed, 60 insertions, 27 deletions
diff --git a/models/invitationCodes.js b/models/invitationCodes.js
index 53163f06..5cdfc744 100644
--- a/models/invitationCodes.js
+++ b/models/invitationCodes.js
@@ -1,45 +1,78 @@
InvitationCodes = new Mongo.Collection('invitation_codes');
-InvitationCodes.attachSchema(new SimpleSchema({
- code: {
- type: String,
- },
- email: {
- type: String,
- unique: true,
- regEx: SimpleSchema.RegEx.Email,
- },
- createdAt: {
- type: Date,
- denyUpdate: false,
- },
- // always be the admin if only one admin
- authorId: {
- type: String,
- },
- boardsToBeInvited: {
- type: [String],
- optional: true,
- },
- valid: {
- type: Boolean,
- defaultValue: true,
- },
-}));
+InvitationCodes.attachSchema(
+ new SimpleSchema({
+ code: {
+ type: String,
+ },
+ email: {
+ type: String,
+ unique: true,
+ regEx: SimpleSchema.RegEx.Email,
+ },
+ createdAt: {
+ type: Date,
+ denyUpdate: false,
+ optional: true,
+ // eslint-disable-next-line consistent-return
+ autoValue() {
+ if (this.isInsert) {
+ return 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();
+ }
+ },
+ },
+ // always be the admin if only one admin
+ authorId: {
+ type: String,
+ },
+ boardsToBeInvited: {
+ type: [String],
+ optional: true,
+ },
+ valid: {
+ type: Boolean,
+ defaultValue: true,
+ },
+ })
+);
InvitationCodes.helpers({
- author(){
+ author() {
return Users.findOne(this.authorId);
},
});
+InvitationCodes.before.update((userId, doc, fieldNames, modifier, options) => {
+ modifier.$set = modifier.$set || {};
+ modifier.$set.modifiedAt = Date.now();
+});
+
// InvitationCodes.before.insert((userId, doc) => {
// doc.createdAt = new Date();
// doc.authorId = userId;
// });
if (Meteor.isServer) {
+ Meteor.startup(() => {
+ InvitationCodes._collection._ensureIndex({ modifiedAt: -1 });
+ });
Boards.deny({
fetch: ['members'],
});
}
+
+export default InvitationCodes;