avatars.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import { Meteor } from 'meteor/meteor';
  2. import { FilesCollection } from 'meteor/ostrio:files';
  3. import { createBucket } from './lib/grid/createBucket';
  4. import { createOnAfterUpload } from './lib/fsHooks/createOnAfterUpload';
  5. import { createInterceptDownload } from './lib/fsHooks/createInterceptDownload';
  6. import { createOnAfterRemove } from './lib/fsHooks/createOnAfterRemove';
  7. let avatarsBucket;
  8. if (Meteor.isServer) {
  9. avatarsBucket = createBucket('avatars');
  10. }
  11. Avatars = new FilesCollection({
  12. debug: false, // Change to `true` for debugging
  13. collectionName: 'avatars',
  14. allowClientCode: true,
  15. onBeforeUpload(file) {
  16. if (file.size <= 72000 && file.type.startsWith('image/')) {
  17. return true;
  18. }
  19. return 'avatar-too-big';
  20. },
  21. onAfterUpload: createOnAfterUpload(avatarsBucket),
  22. interceptDownload: createInterceptDownload(avatarsBucket),
  23. onAfterRemove: createOnAfterRemove(avatarsBucket),
  24. });
  25. function isOwner(userId, doc) {
  26. return userId && userId === doc.userId;
  27. }
  28. if (Meteor.isServer) {
  29. Avatars.allow({
  30. insert: isOwner,
  31. update: isOwner,
  32. remove: isOwner,
  33. fetch: ['userId'],
  34. });
  35. }
  36. export default Avatars;