Skip to content

Instantly share code, notes, and snippets.

View tonyspiro's full-sized avatar
🚀
Building and shipping

Tony Spiro tonyspiro

🚀
Building and shipping
View GitHub Profile
// logout.js
module.exports = (app, config, partials) => {
app.get('/logout', (req, res) => {
req.session.destroy()
return res.redirect('/')
})
}
app.post('/users', (req, res) => {
const data = req.body
async.series([
callback => {
let user_found = false
Cosmic.getObjectType({ bucket: { slug: config.COSMIC_BUCKET } }, { type_slug: 'users' }, (err, response) => {
_.forEach(response.objects.all, user => {
if (_.find(user.metafields, { key: 'email', value: data.email.trim() }))
user_found = true
})
app.get('/users', (req, res) => {
if(!req.session.user)
return res.redirect('/?message=unauthorized')
res.locals.user = req.session.user
async.series([
callback => {
Cosmic.getObjectType({ bucket: { slug: config.COSMIC_BUCKET } }, { type_slug: 'users' }, (err, response) => {
res.locals.users = response.objects.all
callback()
})
// auth.js
import Cosmic from 'cosmicjs'
import async from 'async'
import _ from 'lodash'
import bcrypt from 'bcrypt'
const saltRounds = 10
module.exports = (app, config, partials) => {
// Submit form
app.post('/auth', (req, res) => {
const data = req.body
// home.js
import Cosmic from 'cosmicjs'
module.exports = (app, config, partials) => {
app.get('/', (req, res) => {
Cosmic.getObjects({ bucket: { slug: config.COSMIC_BUCKET } }, (err, response) => {
res.locals.cosmic = response
if (req.query.message === 'unauthorized')
res.locals.unauthorized_message = true
return res.render('index.html', {
partials
// Routes
module.exports = (app, config, partials) => {
require('./home')(app, config, partials)
require('./signup')(app, config, partials)
require('./users')(app, config, partials)
require('./auth')(app, config, partials)
require('./logout')(app, config, partials)
require('./404')(app, config, partials)
}
// app-server.js
import express from 'express'
import hogan from 'hogan-express'
import http_module from 'http'
import bodyParser from 'body-parser'
import compression from 'compression'
import session from 'express-session'
import config from './config'
import cors from 'cors'
const app = express()
@tonyspiro
tonyspiro / staticgen-archive.json
Created July 8, 2020 19:01
STATICGEN.COM DATA ARCHIVE
[]
@tonyspiro
tonyspiro / advanced-queries.js
Created June 9, 2020 16:39
Cosmic Advanced Queries
// To keep things concise, use the following bucket variable for the examples.
const bucket = Cosmic.bucket({
slug: 'bucket-slug',
read_key: "your-read-key-found-in-bucket-settings"
})
// Matches Objects with exact title
bucket.getObjects({
type: 'posts',
props: 'slug,title,content',
@tonyspiro
tonyspiro / cosmic-deno-test.ts
Last active May 14, 2020 03:49
Get Cosmic content using Deno and fetch https://cosmicjs.com
/* To run
1. Follow Deno Guide to install https://deno.land/#installation
2. Add the following code to a file called cosmic-deno-test.ts
3. run the following command: deno run --allow-net=127.0.0.1:8000,api.cosmicjs.com cosmic-deno-test.ts
*/
import { serve } from "https://deno.land/std@0.50.0/http/server.ts";
const s = serve({ port: 8000 });
const bucket_slug = `cosmic-js`;
const object_type = `articles`;
const limit = 10;