Skip to content
This repository has been archived by the owner on Sep 27, 2022. It is now read-only.

Commit

Permalink
feat(notifications): add user notifications
Browse files Browse the repository at this point in the history
  • Loading branch information
NicolasGeraud committed Feb 28, 2018
1 parent a100dd0 commit ca80b8c
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 0 deletions.
5 changes: 5 additions & 0 deletions upgrades/1.14.0/README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,8 @@ Before running any script, please create a dump of your existing database.
upgrades/1.14.0/mongodb/1-users-migration.js::
This script remove plain username reference and prefer UUID.

upgrades/1.14.0/mongodb/2-init-email-notifications ::
This script create a default email notifier for each Application and API Primary Owner.

*This script is not mandatory !*
If you don't need/want email notification on your existing APIs/Applications, just ignore it.
59 changes: 59 additions & 0 deletions upgrades/1.14.0/mongodb/2-init-email-notifications.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
var now = new Date();

function guid() {
function s4() {
return Math.floor((1 + Math.random()) * 0x10000)
.toString(16)
.substring(1);
}
return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
s4() + '-' + s4() + s4() + s4();
}

function getConfig(membership, user) {
var hooks = [];
if ("API" === membership._id.referenceType) {
hooks = [
"APIKEY_EXPIRED",
"APIKEY_REVOKED",
"SUBSCRIPTION_NEW",
"SUBSCRIPTION_ACCEPTED",
"SUBSCRIPTION_CLOSED",
"SUBSCRIPTION_REJECTED"
];
} else {
hooks = [
"SUBSCRIPTION_NEW",
"SUBSCRIPTION_ACCEPTED",
"SUBSCRIPTION_CLOSED",
"SUBSCRIPTION_REJECTED"
];
}
return {
_id: guid(),
_class: 'io.gravitee.repository.mongodb.management.internal.model.GenericNotificationConfigMongo',
name: "Default Mail Notifications",
referenceType: membership._id.referenceType,
referenceId: membership._id.referenceId,
notifier: "default-email",
config: user.email,
hooks: hooks,
createdAt: now,
updatedAt: now
}
}

db.memberships.find({'roles': {$in: ['3:PRIMARY_OWNER', '4:PRIMARY_OWNER']}}).forEach(
function (membership) {
user = db.users.findOne({'_id': membership._id.userId});
if (user && user.email) {
print ("Create an email notification for "
+ user.email
+ " and " + membership._id.referenceType
+ " " + membership._id.referenceId);

db.genericnotificationconfigs.insert(getConfig())
}
}
);

0 comments on commit ca80b8c

Please sign in to comment.