accountSettings.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. AccountSettings = new Mongo.Collection('accountSettings');
  2. AccountSettings.attachSchema(
  3. new SimpleSchema({
  4. _id: {
  5. type: String,
  6. },
  7. booleanValue: {
  8. type: Boolean,
  9. optional: true,
  10. },
  11. sort: {
  12. type: Number,
  13. decimal: true,
  14. },
  15. createdAt: {
  16. type: Date,
  17. optional: true,
  18. // eslint-disable-next-line consistent-return
  19. autoValue() {
  20. if (this.isInsert) {
  21. return new Date();
  22. } else {
  23. this.unset();
  24. }
  25. },
  26. },
  27. modifiedAt: {
  28. type: Date,
  29. denyUpdate: false,
  30. // eslint-disable-next-line consistent-return
  31. autoValue() {
  32. if (this.isInsert || this.isUpsert || this.isUpdate) {
  33. return new Date();
  34. } else {
  35. this.unset();
  36. }
  37. },
  38. },
  39. }),
  40. );
  41. AccountSettings.allow({
  42. update(userId) {
  43. const user = Users.findOne(userId);
  44. return user && user.isAdmin;
  45. },
  46. });
  47. if (Meteor.isServer) {
  48. Meteor.startup(() => {
  49. AccountSettings._collection._ensureIndex({ modifiedAt: -1 });
  50. AccountSettings.upsert(
  51. { _id: 'accounts-allowEmailChange' },
  52. {
  53. $setOnInsert: {
  54. booleanValue: false,
  55. sort: 0,
  56. },
  57. },
  58. );
  59. AccountSettings.upsert(
  60. { _id: 'accounts-allowUserNameChange' },
  61. {
  62. $setOnInsert: {
  63. booleanValue: false,
  64. sort: 1,
  65. },
  66. },
  67. );
  68. });
  69. }
  70. export default AccountSettings;