avatars.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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. const os = require('os');
  8. let avatarsBucket;
  9. if (Meteor.isServer) {
  10. avatarsBucket = createBucket('avatars');
  11. }
  12. Avatars = new FilesCollection({
  13. debug: false, // Change to `true` for debugging
  14. collectionName: 'avatars',
  15. storagePath: os.tmpdir(),
  16. allowClientCode: true,
  17. onBeforeUpload(file) {
  18. if (file.size <= 72000 && file.type.startsWith('image/')) {
  19. return true;
  20. }
  21. return 'avatar-too-big';
  22. },
  23. onAfterUpload: createOnAfterUpload(avatarsBucket),
  24. interceptDownload: createInterceptDownload(avatarsBucket),
  25. onAfterRemove: createOnAfterRemove(avatarsBucket),
  26. });
  27. function isOwner(userId, doc) {
  28. return userId && userId === doc.userId;
  29. }
  30. if (Meteor.isServer) {
  31. Avatars.allow({
  32. insert: isOwner,
  33. update: isOwner,
  34. remove: isOwner,
  35. fetch: ['userId'],
  36. });
  37. }
  38. export default Avatars;