Dive into secure and efficient coding practices with our curated list of the top 10 examples showcasing 'keystone' in functional components in JavaScript. Our advanced machine learning engine meticulously scans each line of code, cross-referencing millions of open source libraries to ensure your implementation is not just functional, but also robust and secure. Elevate your React applications to new heights by mastering the art of handling side effects, API calls, and asynchronous operations with confidence and precision.
var keystone = require('keystone'),
Types = keystone.Field.Types;
var User = new keystone.List('User');
User.add({
name: { type: Types.Text, required: true, initial: true },
token: { type: Types.Text, restEditable: false },
password: { type: Types.Password, required: true, initial: true, restSelected: false },
posts: { type: Types.Relationship, ref: 'Post', many: true }
});
// Register User
User.register();
module.exports = exports = User;
var async = require('async'),
_ = require('underscore');
var passport = require('passport'),
passportGoogleStrategy = require('passport-google-oauth').OAuth2Strategy;
var keystone = require('keystone'),
User = keystone.list('User');
var credentials = {
clientID: process.env.GOOGLE_CLIENT_ID,
clientSecret: process.env.GOOGLE_CLIENT_SECRET,
callbackURL: process.env.GOOGLE_CALLBACK_URL,
scope: 'profile email'
};
exports.authenticateUser = function(req, res, next)
{
// Begin process
console.log('============================================================');
console.log('[services.google] - Triggered authentication process...');
console.log('------------------------------------------------------------');
var topic = this;
if (!topic._bubbleUpdate) {
return;
}
if (topic.author) {
keystone.list('User').model.findById(topic.author).exec(function(err, user) {
return user && user.wasActive().save();
});
}
// touch the topic's tags to make them update their topic count
if (topic.tags) {
keystone.list('Tag').model.find().where('_id').in(topic.tags).exec(function(err, tags) {
if (err) {
console.error(err)
} else {
tags.forEach(function(tag) {
tag.save();
});
}
});
}
// archive the topic's replies when it's archived
if (topic.state == 'archived') {
keystone.list('Reply').model.find().where( 'topic', topic.id ).exec(function(err, results) {
if (err) {
console.error(err)
} else {
fs.readFile('public/js/publicsettings.json', 'utf8', function(err, data) {
//debugger;
if(err) {
console.log('Error in keystone.js while trying to read publicsettings.json file.');
console.log(err);
} else {
var publicSettings = JSON.parse(data);
if(typeof(publicSettings.superUsers) == "string") {
keystone.set('superusers', [publicSettings.superUsers]);
} else {
keystone.set('superusers', publicSettings.superUsers);
}
if(typeof(publicSettings.adminUsers) == "string") {
keystone.set('admins', [publicSettings.adminUsers]);
} else {
keystone.set('admins', publicSettings.adminUsers);
}
// Start Keystone to connect to your database and initialise the web server
// Need to be inside the readFile function handler.
keystone.start();
}
});
const mainHash = 'ad807fa5016f97e62e7d';
const vendorHash = '158ebf10428e11d2ccc7';
import React from 'react';
import { renderToString } from 'react-dom/server';
import { match, RouterContext } from 'react-router';
import { Provider } from 'react-redux';
import store from '../app/src/store/store.js';
import { routes } from '../app/src/utils/routes.jsx';
const serverApiRoutes = {
api: importRoutes('./api')
};
if (isDeveloping) {
keystone.pre('routes', webpackMiddleware(compiler, {
noInfo: true,
publicPath: config.output.publicPath
}));
keystone.pre('routes', webpackHotMiddleware(compiler, {
log: console.log // eslint-disable-line
}));
}
exports = module.exports = function (app) {
app.use(webpackMiddleware(compiler, {
noInfo: true,
publicPath: config.output.publicPath
}));
app.use(webpackHotMiddleware(compiler, {
onMount: () => {
console.info('----\n==> ✅ %s is running with Keystone.', config.app.title);
console.info('==> 💻 Open http://localhost:%s in a browser to view the app.', config.port);
const app = Keystone.app;
app.use(compression());
app.use(favicon(path.join(__dirname, '../../', 'static', 'favicon.ico')));
app.use(require('serve-static')(path.join(__dirname, '../../', 'static')));
app.use(cookieParser(process.env.COOKIE_SECRET));
app.use((req, res) => {
if (__DEVELOPMENT__) {
// Do not cache webpack stats: the script file would change since
// hot module replacement is enabled in the development env
webpackIsomorphicTools.refresh();
res.header('Access-Control-Allow-Origin', '*');
}
const client = new ApiClient(req);
import keystone from 'keystone'
import _ from 'lodash'
import server from './server'
keystone.init({
name: 'Keystone Boilerplate',
brand: 'Keystone Boilerplate',
static: 'public',
logger: ':method :url :status :response-time ms - :res[content-length]',
'auto update': false,
session: true,
auth: true,
'user model': 'User',
compress: true,
headless: false // true to disable admin
})
keystone.import('../server/models')
keystone.set('locals', {
_,
// Keystone import
import Keystone from 'keystone';
import cookieParser from 'cookie-parser';
import { ReduxRouter } from 'redux-router';
import createHistory from 'history/lib/createMemoryHistory';
import { reduxReactRouter, match } from 'redux-router/server';
import { Provider } from 'react-redux';
import qs from 'query-string';
import getRoutes from '../routes';
import getStatusFromRoutes from '../helpers/getStatusFromRoutes';
const pretty = new PrettyError();
Keystone.init({
'name': config.app.title,
'brand': config.app.title,
'signin logo': ['/logo.jpg', 100, 100],
'view engine': 'jade',
'emails': 'templates/emails',
'session': false,
'updates': 'updates',
'auth': true,
'user model': 'User',
'auto update': true,
'cookie secret': process.env.COOKIE_SECRET,
'headless': process.env.DISABLE_KEYSTONE
});
Keystone.set('routes', require('./routes'));
Keystone.set('port', config.port);
Keystone.import('models');
if(process.env.NODE_ENV === 'production') {
// keystoneInit['ssl port'] = process.env.SSL_PORT || 443;
// keystoneInit['ssl'] = 'force';
// keystoneInit['ssl key'] = process.env.SSL_KEY || '/etc/letsencrypt/live/test.org/privkey.pem';
// keystoneInit['ssl cert'] = process.env.SSL_CERT || '/etc/letsencrypt/live/test.org/fullchain.pem';
// This automatic letsencrypt isn't working right now for me
// keystoneInit['letsencrypt'] = {
// email: 'email@test.com',
// domains: ['www.test.com', 'test.com'],
// register: true,
// tos: true,
// };
}
keystone.init(keystoneInit);
// Load your project's Models
keystone.import('models');
// Setup common locals for your templates. The following are required for the
// bundled templates and layouts. Any runtime locals (that should be set uniquely
// for each request) should be added to ./routes/middleware.js
keystone.set('locals', {
_: require('lodash'),
env: keystone.get('env'),
utils: keystone.utils,
editable: keystone.content.editable,
});
// Load your project's Routes
keystone.set('routes', require('./routes'));
Reply.schema.methods.notifyTopicWatchers = function(req, res, next) {
var reply = this;
var data = {};
// TODO find a better way to populate/get the reply author
keystone.list('Reply').model.findById(reply.id).populate('author', 'name').exec(function(err, result) {
if (err || !result) return next(err);
data.author = result.author;
});
keystone.list('Topic').model.findById(reply.topic).populate('watchedBy').exec(function(err, topic) {
if (err || !topic.watchedBy.length) return next(err);
topic.watchedBy.forEach(function(watcher) {
new keystone.Email('new-reply').send({
subject: 'Re: ' + topic.name,
topic: topic,
reply: reply,
baseURL: req.protocol + '://' + req.get('host'),
to: watcher.email,
from: {