Skip to content

Commit 27d88c2

Browse files
corrected some stuff and added some hooks
1 parent 98ca5a3 commit 27d88c2

File tree

6 files changed

+74
-34
lines changed

6 files changed

+74
-34
lines changed

server/helper/seed-helpers.js

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -48,16 +48,6 @@ module.exports = {
4848
let randomIds = _.shuffle(ids);
4949
return items[randomIds.pop()];
5050
},
51-
randomAdmin: (items, filter) => {
52-
let ids = filter
53-
? Object.keys(items)
54-
.filter(id => {
55-
return filter(items[id]);
56-
})
57-
: _.keys(items);
58-
let randomIds = _.shuffle(ids);
59-
return items[randomIds.pop()];
60-
},
6151
randomItems: (items, key = '_id', min = 1, max = 1) => {
6252
let randomIds = _.shuffle(_.keys(items));
6353
let res = [];

server/hooks/create-excerpt.js

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,23 @@
33
// https://github.com/yangsibai/node-html-excerpt
44
const excerpt = require('html-excerpt');
55

6-
module.exports = function (options = {}) { // eslint-disable-line no-unused-vars
6+
module.exports = function (options = {
7+
field: 'content',
8+
length: 120
9+
}) { // eslint-disable-line no-unused-vars
710
return function (hook) {
8-
if(!hook.data || !hook.data.content) {
11+
console.log('TRY TO CREATE EXCERPT');
12+
console.log('field', options.field);
13+
if(!options.field || !hook.data[options.field]) return hook;
14+
15+
if(!hook.data || !hook.data[options.field]) {
916
return hook;
1017
}
1118
/* eslint no-use-before-define: 0 */ // --> OFF
12-
const content = hook.data.content
13-
.replace(/\<br\>|\<\/br\>|\<\/ br\>|\<\/(strong|b|h[1-6])>/ig, "\n")
19+
const text = hook.data[options.field]
20+
.replace(/\<br\>|\<\/br\>|\<\/ br\>|<br \/\>|\<\/(strong|b|h[1-6])>/ig, "\n")
1421
.replace(/(<([^>]+)>)/ig, '');
15-
hook.data.contentExcerpt = excerpt.text(content, 120, '...');
22+
hook.data[`${options.field}Excerpt`] = excerpt.text(text, options.length, '...');
1623
return Promise.resolve(hook);
1724
};
1825
};

server/models/organizations.model.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,23 @@ module.exports = function (app) {
77
const { Schema } = mongooseClient;
88
const organizations = new Schema({
99
name: { type: String, required: true },
10-
slug: { type: String },
10+
slug: { type: String, required: true, unique: true },
1111
followerIds: [],
1212
categoryIds: { type: Array },
1313
logo: { type: String },
1414
coverImg: { type: String },
1515
userId: { type: String, required: true },
1616
description: { type: String, required: true },
17+
// will be generated automatically
18+
descriptionExcerpt: { type: String },
1719
addresses: { type: Array, default: [] },
1820
content: { type: String, required: true },
1921
createdAt: { type: Date, default: Date.now },
2022
updatedAt: { type: Date, default: Date.now },
23+
isEnabled: {
24+
type: Boolean,
25+
default: true
26+
},
2127
wasSeeded: { type: Boolean }
2228
});
2329

server/seeder/development/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ module.exports = function () {
77
require('./users'),
88
require('./moderators'),
99
require('./contributions'),
10+
require('./organizations'),
1011
require('./candos'),
1112
require('./users-candos'),
12-
require('./organizations'),
1313
require('./projects'),
1414
require('./follows'),
1515
require('./comments'),

server/seeder/development/organizations.js

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,19 @@ module.exports = (seederstore) => {
77
path: 'organizations',
88
count: 30,
99
template: {
10-
slug: '{{lorem.slug}}',
11-
name: '{{lorem.text}}',
10+
name: '{{company.companyName}}',
1211
followerIds: [],
1312
logo: () => seedHelpers.randomLogo(),
1413
coverImg: () => seedHelpers.randomUnsplashUrl(),
1514
categoryIds: () => seedHelpers.randomCategories(seederstore),
16-
userId: () => seedHelpers.randomAdmin(seederstore.users, filter)._id,
15+
userId: () => seedHelpers.randomItem(seederstore.users, filter)._id,
1716
addresses: () => seedHelpers.randomAddresses(),
1817
description: '{{lorem.text}}',
1918
content: '{{lorem.text}} {{lorem.text}} {{lorem.text}} {{lorem.text}}',
20-
isVerified : true,
21-
role : 'user',
22-
doiToken: null,
23-
confirmedAt: null,
19+
isVerified: () => seedHelpers.randomItem([true, false]),
2420
deletedAt: null,
21+
createdAt: '{{date.recent}}',
22+
updatedAt: '{{date.recent}}',
2523
wasSeeded: true
2624
}
2725
}]

server/services/organizations/organizations.hooks.js

Lines changed: 49 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
1+
const { unless, isProvider } = require('feathers-hooks-common');
2+
const { isVerified } = require('feathers-authentication-management').hooks;
13
const { authenticate } = require('feathers-authentication').hooks;
4+
const { associateCurrentUser, restrictToOwner } = require('feathers-authentication-hooks');
25
const createSlug = require('../../hooks/create-slug');
36
const saveRemoteImages = require('../../hooks/save-remote-images');
4-
const saveAvatar = require('./hooks/save-avatar');
7+
const createExcerpt = require('../../hooks/create-excerpt');
8+
const isModerator = require('../../hooks/is-moderator-boolean');
9+
const excludeDisabled = require('../../hooks/exclude-disabled');
510
const thumbnails = require('../../hooks/thumbnails');
611

712
const thumbnailOptions = {
@@ -20,27 +25,61 @@ const thumbnailOptions = {
2025
module.exports = {
2126
before: {
2227
all: [],
23-
find: [],
24-
get: [],
28+
find: [
29+
unless(isModerator(),
30+
excludeDisabled()
31+
)
32+
],
33+
get: [
34+
unless(isModerator(),
35+
excludeDisabled()
36+
)
37+
],
2538
create: [
2639
authenticate('jwt'),
40+
// Allow seeder to seed contributions
41+
unless(isProvider('server'),
42+
isVerified()
43+
),
44+
associateCurrentUser(),
2745
createSlug({ field: 'name' }),
28-
saveRemoteImages(['logo', 'coverImg']),
29-
saveAvatar()
46+
createExcerpt({ field: 'description '}),
47+
saveRemoteImages(['logo', 'coverImg'])
3048
],
3149
update: [
3250
authenticate('jwt'),
51+
unless(isProvider('server'),
52+
isVerified()
53+
),
54+
unless(isModerator(),
55+
excludeDisabled(),
56+
restrictToOwner()
57+
),
3358
createSlug({ field: 'name' }),
34-
saveRemoteImages(['logo', 'coverImg']),
35-
saveAvatar()
59+
createExcerpt({ field: 'description '}),
60+
saveRemoteImages(['logo', 'coverImg'])
3661
],
3762
patch: [
3863
authenticate('jwt'),
64+
unless(isProvider('server'),
65+
isVerified()
66+
),
67+
unless(isModerator(),
68+
excludeDisabled(),
69+
restrictToOwner()
70+
),
3971
createSlug({ field: 'name' }),
40-
saveRemoteImages(['logo', 'coverImg']),
41-
saveAvatar()
72+
createExcerpt({ field: 'description' }),
73+
saveRemoteImages(['logo', 'coverImg'])
4274
],
43-
remove: [ authenticate('jwt') ]
75+
remove: [
76+
authenticate('jwt'),
77+
isVerified(),
78+
unless(isModerator(),
79+
excludeDisabled(),
80+
restrictToOwner()
81+
)
82+
]
4483
},
4584

4685
after: {

0 commit comments

Comments
 (0)