140 lines
3.4 KiB
JavaScript
Raw Normal View History

2017-11-17 11:17:20 +01:00
'use strict';
/**
* An asynchronous bootstrap function that runs before
* your application gets started.
*
* This gives you an opportunity to set up your data model,
* run jobs, or perform some special logic.
*/
2017-12-04 16:43:24 +01:00
const path = require('path');
const fs = require('fs');
const _ = require('lodash');
2017-12-04 16:43:24 +01:00
const uuid = require('uuid/v4');
module.exports = async cb => {
2017-12-04 16:43:24 +01:00
if (!_.get(strapi.plugins['users-permissions'], 'config.jwtSecret')) {
try {
2017-12-12 15:13:27 +01:00
const jwtSecret = uuid();
2017-12-04 16:43:24 +01:00
fs.writeFileSync(path.join(strapi.config.appPath, 'plugins', 'users-permissions', 'config', 'jwt.json'), JSON.stringify({
2017-12-12 15:13:27 +01:00
jwtSecret
2017-12-04 16:43:24 +01:00
}, null, 2), 'utf8');
2017-12-12 15:13:27 +01:00
2018-01-15 11:29:38 +01:00
_.set(strapi.plugins['users-permissions'], 'config.jwtSecret', jwtSecret);
2017-12-04 16:43:24 +01:00
} catch(err) {
strapi.log.error(err);
}
}
const pluginStore = strapi.store({
environment: '',
type: 'plugin',
name: 'users-permissions'
});
2018-04-24 22:18:21 +08:00
const grantConfig = {
email: {
enabled: true,
icon: 'envelope'
},
discord: {
enabled: false,
2018-07-31 16:17:41 +02:00
icon: 'comments',
key: '',
secret: '',
callback: '/auth/discord/callback',
scope: [
'identify',
'email'
]
},
facebook: {
enabled: false,
icon: 'facebook-official',
key: '',
secret: '',
callback: '/auth/facebook/callback',
scope: ['email']
},
google: {
enabled: false,
icon: 'google',
key: '',
secret: '',
callback: '/auth/google/callback',
scope: ['email']
},
github: {
enabled: false,
icon: 'github',
key: '',
secret: '',
redirect_uri: '/auth/github/callback',
scope: [
'user',
'user:email'
]
},
twitter: {
enabled: false,
icon: 'twitter',
key: '',
secret: '',
callback: '/auth/twitter/callback'
}
};
const prevGrantConfig = await pluginStore.get({key: 'grant'}) || {};
// store grant auth config to db
// when plugin_users-permissions_grant is not existed in db
// or we have added/deleted provider here.
2018-04-24 22:18:21 +08:00
if (!prevGrantConfig || !_.isEqual(_.keys(prevGrantConfig), _.keys(grantConfig))) {
// merge with the previous provider config.
_.keys(grantConfig).forEach((key) => {
if (key in prevGrantConfig) {
grantConfig[key] = _.merge(grantConfig[key], prevGrantConfig[key]);
}
});
await pluginStore.set({key: 'grant', value: grantConfig});
2018-01-12 15:20:13 +01:00
}
if (!await pluginStore.get({key: 'email'})) {
const value = {
'reset_password': {
display: 'Email.template.reset_password',
icon: 'refresh',
options: {
from: {
name: 'Administration Panel',
email: 'no-reply@strapi.io'
},
response_email: '',
2018-04-16 09:48:43 +02:00
object: '­Reset password',
message: `<p>We heard that you lost your password. Sorry about that!</p>
<p>But dont worry! You can use the following link to reset your password:</p>
<p><%= URL %>?code=<%= TOKEN %></p>
<p>Thanks.</p>`
2018-01-15 11:29:38 +01:00
}
}
};
2018-01-15 11:29:38 +01:00
await pluginStore.set({key: 'email', value});
2018-01-15 11:29:38 +01:00
}
if (!await pluginStore.get({key: 'advanced'})) {
const value = {
unique_email: true,
2018-03-12 15:56:25 +01:00
allow_register: true,
default_role: 'authenticated'
};
2018-01-15 15:01:21 +01:00
await pluginStore.set({key: 'advanced', value});
2018-01-15 15:01:21 +01:00
}
2018-05-09 15:11:55 +02:00
strapi.plugins['users-permissions'].services.userspermissions.initialize(cb);
2017-11-17 11:17:20 +01:00
};