Skip to content

Instantly share code, notes, and snippets.

View TaylorAckley's full-sized avatar

Taylor Ackley TaylorAckley

View GitHub Profile
@TaylorAckley
TaylorAckley / account.controller.js
Last active October 8, 2018 01:06
MVC - Controller
const AccountStore = require('../stores/account.store');
class AccountController {
static async register(req, res) {
try {
let payload = await AccountStore.register(req);
res.send(payload);
} catch(exception) {
res.status(500).send(exception)
}
@TaylorAckley
TaylorAckley / routes.unauth.js
Created October 8, 2018 00:10
MVC - Routes
const express = require('express');
const AccountCtrl = require('../controllers/account.controller');
const unauth = express.Router();
unauth
.post('/account/register', AccountCtrl.register)
.post('/account/login', AccountCtrl.login)
module.exports = unauth;
@TaylorAckley
TaylorAckley / routes.auth.js
Created October 8, 2018 00:08
MVC - Auth Routes
const express = require('express');
const AccountCtrl = require('../controllers/account.controller');
const auth = express.Router();
auth
.get('/account/self', AccountCtrl.self)
.put('/account/:_id', AccountCtrl.update)
.delete('/account/:_id', AccountCtrl.remove)
module.exports = auth;
@TaylorAckley
TaylorAckley / auth.store.js
Last active October 8, 2018 00:46
MVC - AuthStore
const moment = require('moment');
class AuthenticationStore {
static async authenticate(req, res, next) {
const payload = await AuthenticationStore.consumeToken(req);
if (payload.status && payload.status !== 200) {
return res.status(payload.status).send(payload.message);
}
req.user = payload.sub;
@TaylorAckley
TaylorAckley / routes.index.js
Last active October 8, 2018 00:39
MVC - Routes
const AuthStore = require('../stores/authentication.store');
module.exports = function(app) {
app.use('/api/v1', require('./routes.unauth'));
app.use('/api/v1', [AuthStore.authenticate], require('./routes.auth'));
app.use('/api/v1/admin', [AuthStore.authenticate, AuthStore.isAdmin], require('./routes.admin'));
};
@TaylorAckley
TaylorAckley / server.js
Last active October 8, 2018 00:38
MVC - Index.js
const express = require('express');
// other libs and middleware
const app = express();
// pass the instance of our app to the routes.
require('./routes/routes.index.js')(app);
app.listen(5050);
const strToEval = '/hello'
const eval = (arg) => {
switch(arg.charAt(0)) {
case '\'':
// handle single quote
break;
case ' ':
@TaylorAckley
TaylorAckley / pager.js
Last active August 15, 2021 04:54
Simple Paging Example
require('dotenv').config();
const request = require('request-promise');
// Hoist our users array.
let users = [];
const API_ENDPOINT = `https://publicapi.knowledgeanywhere.com`;
const CLIENT_ID = process.env.LMS_CLIENT_ID; // Loaded from our .env file
const CLIENT_SECRET = process.env.LMS_CLIENT_SECRET; // Loaded from our .env file
const PAGE_SIZE = 1000; // How many records the API returns in a page.
@TaylorAckley
TaylorAckley / api-keys.script.js
Last active May 13, 2018 03:44
Api Keys Script
const ApiKey = require('../../lib/models/api-key.model');
// Bootstrap default AO
ApiKey.findOneAndUpdate({
origin: 'https://localhost:4200'
}, {
$set: {
// This is our default allowed origin, typically where your front-end is served from, ie myapp.com. In this case we use Angular's default serve port.
origin: 'https://localhost:4200'
@TaylorAckley
TaylorAckley / allowed-origins.middleware.js
Last active August 15, 2021 05:14
Allowed Origins Middleware
const express = require('express');
const app = new Express();
const cache = require('origin-cache');
require('api-keys.script');
const allowedOrigins = cache.get();
// see full example: https://github.com/TaylorAckley/cors-app/blob/main/api/index.js
/** Use CORS. If RESTRICT_ORIGINS is enabled, only certain domains can call the API. **/