mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-01-06 22:40:14 -05:00
0a744c2781
* 🎨 use updateClient function to update redirectUri refs #7654 * 🎨 name instead of clientName * 🎨 config.get('theme:title') for client name - initial read can happen from config * ✨ register public client: client name and description - no update yet - for initial client creation - we forward title/description to Ghost Auth - TODO: use settings-cache when merged * ✨ store blog_uri in db * 🎨 passport logic changes - use updateClient instead of changeCallbackURL - be able to update: blog title, blog description, redirectUri and blogUri - remove retries, they get implemented in passport-ghost soon - reorder logic a bit * 🛠 passport-ghost 1.2.0 * 🎨 tests: extend DataGenerator createClient - set some defaults * 🎨 tests - extend tests - 👻 * ✨ run auth.init in background - no need to block the bootstrap process - if client can't be registered, you will see an error - ensure Ghost-Admin renders correctly * 🛠 passport-ghost 1.3.0 - retries * 🎨 use client_uri in Client Schema - adapt changes - use blog_uri only when calling the passport-ghost instance - Ghost uses the client_uri notation to improve readability * ✨ read blog title/description from settings cache * 🚨 Ghost Auth returns email instead of email_address - adapt Ghost
93 lines
3 KiB
JavaScript
93 lines
3 KiB
JavaScript
// # Configuration API
|
|
// RESTful API for browsing the configuration
|
|
var _ = require('lodash'),
|
|
config = require('../config'),
|
|
ghostVersion = require('../utils/ghost-version'),
|
|
models = require('../models'),
|
|
Promise = require('bluebird'),
|
|
|
|
configuration;
|
|
|
|
function fetchAvailableTimezones() {
|
|
var timezones = require('../data/timezones.json');
|
|
return timezones;
|
|
}
|
|
|
|
function getAboutConfig() {
|
|
return {
|
|
version: ghostVersion.full,
|
|
environment: config.get('env'),
|
|
database: config.get('database').client,
|
|
mail: _.isObject(config.get('mail')) ? config.get('mail').transport : ''
|
|
};
|
|
}
|
|
|
|
function getBaseConfig() {
|
|
return {
|
|
fileStorage: config.get('fileStorage') !== false,
|
|
useGravatar: !config.isPrivacyDisabled('useGravatar'),
|
|
publicAPI: config.get('publicAPI') === true,
|
|
blogUrl: config.get('url').replace(/\/$/, ''),
|
|
blogTitle: config.get('theme').title,
|
|
routeKeywords: config.get('routeKeywords')
|
|
};
|
|
}
|
|
|
|
/**
|
|
* ## Configuration API Methods
|
|
*
|
|
* We need to load the client credentials dynamically.
|
|
* For example: on bootstrap ghost-auth get's created and if we load them here in parallel,
|
|
* it can happen that we won't get any client credentials or wrong credentials.
|
|
*
|
|
* **See:** [API Methods](index.js.html#api%20methods)
|
|
*/
|
|
configuration = {
|
|
|
|
/**
|
|
* Always returns {configuration: []}
|
|
* Sometimes the array contains configuration items
|
|
* @param {Object} options
|
|
* @returns {Promise<Object>}
|
|
*/
|
|
read: function read(options) {
|
|
options = options || {};
|
|
var ops = {};
|
|
|
|
if (!options.key) {
|
|
ops.ghostAdmin = models.Client.findOne({slug: 'ghost-admin'});
|
|
|
|
if (config.get('auth:type') === 'ghost') {
|
|
ops.ghostAuth = models.Client.findOne({slug: 'ghost-auth'});
|
|
}
|
|
|
|
return Promise.props(ops)
|
|
.then(function (result) {
|
|
var configuration = getBaseConfig();
|
|
|
|
configuration.clientId = result.ghostAdmin.get('slug');
|
|
configuration.clientSecret = result.ghostAdmin.get('secret');
|
|
|
|
if (config.get('auth:type') === 'ghost') {
|
|
configuration.ghostAuthId = result.ghostAuth && result.ghostAuth.get('uuid') || 'not-available';
|
|
configuration.ghostAuthUrl = config.get('auth:url');
|
|
}
|
|
|
|
return {configuration: [configuration]};
|
|
});
|
|
}
|
|
|
|
if (options.key === 'about') {
|
|
return Promise.resolve({configuration: [getAboutConfig()]});
|
|
}
|
|
|
|
// Timezone endpoint
|
|
if (options.key === 'timezones') {
|
|
return Promise.resolve({configuration: [fetchAvailableTimezones()]});
|
|
}
|
|
|
|
return Promise.resolve({configuration: []});
|
|
}
|
|
};
|
|
|
|
module.exports = configuration;
|