some minimal authorisation system

This commit is contained in:
Nikola Bjelo committed 2018-10-20 06:27:18 +02:00
1 parent 6583ea7c33
commit d291366d5f
10 files changed
+50 -27

No files matched your search

+4
View File
@@ -2,3 +2,7 @@ PORT=3000
DB_USERNAME=example_name
DB_PASSWORD=example_password
DB_DOMAIN=example.com:1234/example_name
AUTH0_DOMAIN=auth0-domain
AUTH0_AUDIENCE=auth0-audience
AUTH0_ISSUER=auth0-issuer
+24 -1
View File
@@ -4,6 +4,8 @@ import cors from 'cors'
import mongoose from 'mongoose'
import graphqlHTTP from 'express-graphql'
import expressPlayground from 'graphql-playground-middleware-express'
import jwt from 'express-jwt'
import jwksRsa from 'jwks-rsa'
import schema from './schema'
@@ -29,9 +31,30 @@ db.on('error', () => { console.error.bind(console, 'MongoDB connection error:')
db.once('open', () => { console.log('Connected to the DB.') })
/* -------------------------------------------------
----------------- Graphql setup --------------------
------------- Authentification setup ---------------
------------------------------------------------- */
app.use('/graphql',
jwt({
secret: jwksRsa.expressJwtSecret({
cache: true,
rateLimit: true,
jwksRequestsPerMinute: 1,
jwksUri: `https://${process.env.AUTH0_DOMAIN}/.well-known/jwks.json`
}),
credentialsRequired: false,
audience: process.env.AUTH0_AUDIENCE,
issuer: process.env.AUTH0_ISSUER,
algorithms: [`RS256`]
}),
function (req, res, next) {
return next()
}
)
/* -------------------------------------------------
----------------- Graphql setup --------------------
------------------------------------------------- */
app.use('/graphql', graphqlHTTP(req => {
return {
schema: schema,
+4 -4
View File
@@ -14,11 +14,11 @@ const args = {
}
const resolve = (parent, { competitionCodeName, position, algoPrize }, context) => {
// let authIdOnSession = context.user.sub
return new Promise((resolve, reject) => {
Competition.findOne({ codeName: competitionCodeName }).exec((err, competition) => {
if (err) reject(err)
else {
Competition.findOne({ codeName: competitionCodeName, host: context.user.sub }).exec((err, competition) => {
if (err || !competition) {
reject(err)
} else {
if (competition.prizes.some(prize => prize.position === position)) {
// need to add an error message here TODO
resolve(competition)
+4 -5
View File
@@ -13,13 +13,12 @@ const args = {
}
const resolve = (parent, { competitionCodeName, title, description }, context) => {
// let authIdOnSession = context.user.sub
return new Promise((resolve, reject) => {
Competition.findOne({ codeName: competitionCodeName }).exec((err, competition) => {
if (err) reject(err)
else {
Competition.findOne({ codeName: competitionCodeName, host: context.user.sub }).exec((err, competition) => {
if (err || !competition) {
reject(err)
} else {
if (competition.rules.some(rule => rule.title === title)) {
// need to add an error message here TODO
resolve(competition)
} else {
let number = 1
@@ -22,11 +22,11 @@ const args = {
const resolve = (parent, { codeName, displayName, description, startDatetime, finishDatetime,
formula, plotterCodeName, plotterHost, plotterRepo, plotterModuleName }, context) => {
// let authIdOnSession = context.user.sub
return new Promise((resolve, reject) => {
Competition.findOne({ codeName }).exec((err, competition) => {
if (err) reject(err)
else {
Competition.findOne({ codeName, host: context.user.sub }).exec((err, competition) => {
if (err || !competition) {
reject(err)
} else {
competition.displayName = displayName || competition.displayName
competition.description = description || competition.description
competition.startDatetime = startDatetime || competition.startDatetime
@@ -14,7 +14,6 @@ const args = {
}
const resolve = (parent, { competitionCodeName, devTeam, bot, release }, context) => {
// let authIdOnSession = context.user.sub
return new Promise((resolve, reject) => {
Competition.findOne({ codeName: competitionCodeName }).exec((err, competition) => {
if (err) reject(err)
+4 -4
View File
@@ -14,11 +14,11 @@ const args = {
}
const resolve = (parent, { competitionCodeName, title, newtitle, description }, context) => {
// let authIdOnSession = context.user.sub
return new Promise((resolve, reject) => {
Competition.findOne({ codeName: competitionCodeName }).exec((err, competition) => {
if (err) reject(err)
else {
Competition.findOne({ codeName: competitionCodeName, host: context.user.sub }).exec((err, competition) => {
if (err || !competition) {
reject(err)
} else {
let ruleIndex
competition.rules.find((rule, index) => {
if (rule.title === title) {
@@ -16,10 +16,9 @@ const args = {
}
const resolve = (parent, { displayName, description, startDatetime, finishDatetime, formula }, context) => {
// let authIdOnSession = context.user.sub
let authIdOnSession = 'some-id'
const host = context.user.sub
let newCompetition = new Competition({
host: authIdOnSession,
host,
displayName,
description,
startDatetime,
@@ -14,7 +14,6 @@ const args = {
}
const resolve = (parent, { codeName, devTeam, bot, release }, context) => {
// let authIdOnSession = context.user.sub
return new Promise((resolve, reject) => {
Competition.findOne({ codeName }).exec((err, competition) => {
if (err) reject(err)
+4 -4
View File
@@ -14,11 +14,11 @@ const args = {
}
const resolve = (parent, { competitionCodeName, fromNumber, toNumber }, context) => {
// let authIdOnSession = context.user.sub
return new Promise((resolve, reject) => {
Competition.findOne({ codeName: competitionCodeName }).exec((err, competition) => {
if (err) reject(err)
else {
Competition.findOne({ codeName: competitionCodeName, host: context.user.sub }).exec((err, competition) => {
if (err || !competition) {
reject(err)
} else {
const delta = fromNumber > toNumber ? 1 : -1
competition.rules.forEach((part) => {
if (part.number === fromNumber) {