From bab993a099837c6bce0931d4ccc64a9b7539a462 Mon Sep 17 00:00:00 2001 From: DylanBulmer Date: Fri, 9 Dec 2022 15:35:54 -0500 Subject: [PATCH 1/2] fix email bug in signin --- src/services/auth.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/services/auth.ts b/src/services/auth.ts index f33b7b3..0611a54 100644 --- a/src/services/auth.ts +++ b/src/services/auth.ts @@ -41,7 +41,7 @@ class Authentication { }); try { - const user = await User.findOne({ email }); + const user = await User.findOne({ email: email.email }); if (!user) { // is user cannot be found, then they are not allowed in. throw new Error({ @@ -54,7 +54,7 @@ class Authentication { // init access token const accessToken = uuidv4(); await User.findOneAndUpdate( - { email }, + { email: email.email }, { accessToken: { value: accessToken, @@ -87,7 +87,10 @@ class Authentication { new Date(user.accessToken?.createdAt).getTime() + 5 * 60 * 1000 ) { const token = generateToken(user.toJSON()); - await User.findOneAndUpdate({ email }, { "accessToken.used": true }); + await User.findOneAndUpdate( + { email: email.email }, + { "accessToken.used": true }, + ); return new Response<{ token: string }>({ message: `Welcome, ${user.name}`, details: { token }, From 23e57991a6ee32b6b0b0adbedb7b6e2109bccf17 Mon Sep 17 00:00:00 2001 From: DylanBulmer Date: Fri, 9 Dec 2022 15:44:19 -0500 Subject: [PATCH 2/2] create admin user start --- src/models/User.ts | 4 ++++ src/services/app.ts | 21 ++++++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/models/User.ts b/src/models/User.ts index ceb6ad5..020ee6c 100644 --- a/src/models/User.ts +++ b/src/models/User.ts @@ -56,6 +56,10 @@ const UserSchema = new Schema( providers: { type: [UserProvider], }, + isAdmin: { + type: Boolean, + default: false, + }, }, { timestamps: true, diff --git a/src/services/app.ts b/src/services/app.ts index 268b340..035e47f 100644 --- a/src/services/app.ts +++ b/src/services/app.ts @@ -5,6 +5,7 @@ */ import { accessibleRecordsPlugin } from "@casl/mongoose"; +import User from "models/User"; import mongoose, { Mongoose } from "mongoose"; interface AppOptions { @@ -48,10 +49,28 @@ class App implements AppOptions { private async connect() { try { + // connect to the database. this.database = await mongoose.connect(this.databaseUri); this.database.plugin(accessibleRecordsPlugin); + + // try to create an admin user. + try { + const email = process.env.ADMIN_EMAIL; + if (email) { + const user = await User.findOne({ email }); + if (!user) { + User.create({ email, isAdmin: true }); + } + } else { + console.log("An admin email could not be found.") + } + } catch (e) { + console.error("Could not create an admin user."); + console.error(e); + } } catch (e) { - // + console.error("Cannot connect to MongoDB server."); + console.error(e); } } }