Skip to content

Instantly share code, notes, and snippets.

View georgeben's full-sized avatar
🎯
Focusing

George Kurobara Benjamin georgeben

🎯
Focusing
  • Nigeria
View GitHub Profile
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "http://fintrac-canafe.gc.ca/reporting-gen2/api/str/v1/schema#",
"title": "Suspicious Transaction Report Schema",
"type": "object",
"additionalProperties": false,
"properties": {
"reportDetails": {
"type": "object",
"minItems": 1,
/* eslint-disable prefer-destructuring */
const { promisify } = require("util");
function scanRedis(pattern) {
const scan = promisify(redisClient.scan).bind(redisClient);
const result = [];
let cursor = "0";
do {
// eslint-disable-next-line no-await-in-loop
@georgeben
georgeben / rbac.js
Created September 9, 2022 21:18
Implementing RBAC authorization
const express = require('express')
const app = express()
app.use(express.json())
// Ideally, roles should be stored in your database (as a table or collection)
const roles = [
{
id: 1,
@georgeben
georgeben / multi-factor-authentication.js
Last active September 14, 2022 15:46
Multi factor authentication using Redis
const express = require('express')
const redis = require('redis')
const app = express()
app.use(express.json())
const redisClient = redis.createClient({
legacyMode: true,
url: 'your-redis-url-from-redis-cloud'
})
const express = require('express');
const redis = require('redis');
const rateLimit = require('express-rate-limit');
const RedisStore = require('rate-limit-redis');
const app = express()
const redisClient = redis.createClient({ legacyMode: true })
redisClient.connect()
redisClient.on("ready", () => console.log("Successfully connected to redis"));
@georgeben
georgeben / sessions.js
Last active September 9, 2022 22:02
Implementing sessions for authentication using redis
const express = require('express')
const session = require('express-session')
const redis = require('redis')
const RedisStore = require('connect-redis')(session);
const uuid = require("uid-safe");
const app = express()
const redisClient = redis.createClient({ legacyMode: true, url: 'your-redis-url-from-redis-cloud' })
redisClient.connect()
@georgeben
georgeben / login.js
Last active September 8, 2022 22:35
unvalidated input
async function checkIfEmailExist(request, response) {
const email = request.body.email;
/**
** We want to get users with the email specified in the request.
*/
const user = await UserModel.find({ email: email })
return response.json(user)
}
curl https://api.paystack.co/plan
-H "Authorization: Bearer YOUR_SECRET_KEY"
-H "Content-Type: application/json"
-d '{ "name": "Monthly Retainer",
"interval": "monthly",
"amount": 500000
}'
-X POST
const amqp = require("amqplib");
const dayjs = require("dayjs");
const DELAY_EXCHANGE = "my-delay-exchange";
const routingKey = "myapp.message.post";
const queueName = "message-queue";
// Connects to RabbitMQ
async function connectToRabbitMQ() {
const conn = await amqp.connect(process.env.RABBITMQ_CONN_STRING);
const DELAY_EXCHANGE_NAME = "my_delay_exchange";
const options = {
autoDelete: false,
durable: true,
passive: true,
arguments: {
"x-delayed-type": "direct",
},
};