diff options
| author | Sam Wilkins <abdullah_ahmed@brown.edu> | 2019-02-26 18:58:07 -0500 |
|---|---|---|
| committer | Sam Wilkins <abdullah_ahmed@brown.edu> | 2019-02-26 18:58:07 -0500 |
| commit | 042eb977ad7733919daf468001b17dbee4e1fa9f (patch) | |
| tree | f4ed1faca8e6fb794290146e79827500d4cab4e8 /src/server/authentication | |
| parent | ab110ba8cc8bbf5a633fc5488458be038b06ec24 (diff) | |
beginning multiple workspaces backend and ui
Diffstat (limited to 'src/server/authentication')
| -rw-r--r-- | src/server/authentication/config/passport.ts | 2 | ||||
| -rw-r--r-- | src/server/authentication/controllers/user_controller.ts (renamed from src/server/authentication/controllers/user.ts) | 40 | ||||
| -rw-r--r-- | src/server/authentication/models/user_model.ts (renamed from src/server/authentication/models/User.ts) | 22 |
3 files changed, 43 insertions, 21 deletions
diff --git a/src/server/authentication/config/passport.ts b/src/server/authentication/config/passport.ts index 9f1303135..d90bedb18 100644 --- a/src/server/authentication/config/passport.ts +++ b/src/server/authentication/config/passport.ts @@ -2,7 +2,7 @@ import * as passport from 'passport' import * as passportLocal from 'passport-local'; import * as mongodb from 'mongodb'; import * as _ from "lodash"; -import { default as User } from '../models/User'; +import { default as User } from '../models/user_model'; import { Request, Response, NextFunction } from "express"; const LocalStrategy = passportLocal.Strategy; diff --git a/src/server/authentication/controllers/user.ts b/src/server/authentication/controllers/user_controller.ts index 6c4139b2e..899912ab7 100644 --- a/src/server/authentication/controllers/user.ts +++ b/src/server/authentication/controllers/user_controller.ts @@ -1,4 +1,4 @@ -import { default as User, UserModel, AuthToken } from "../models/User"; +import { default as User, DashUserModel, AuthToken } from "../models/user_model"; import { Request, Response, NextFunction } from "express"; import * as passport from "passport"; import { IVerifyOptions } from "passport-local"; @@ -71,11 +71,7 @@ export let postSignup = (req: Request, res: Response, next: NextFunction) => { User.findOne({ email }, (err, existingUser) => { if (err) { return next(err); } if (existingUser) { - if (existingUser) { - // existingUser.update({ $set: { email: please_work } }, (err, res) => { }); - } - req.flash("errors", "Account with that email address already exists."); - return res.redirect("/signup"); + return res.redirect("/login"); } user.save((err) => { if (err) { return next(err); } @@ -83,7 +79,7 @@ export let postSignup = (req: Request, res: Response, next: NextFunction) => { if (err) { return next(err); } - res.redirect("/"); + res.redirect("/home"); }); }); }); @@ -122,25 +118,41 @@ export let postLogin = (req: Request, res: Response, next: NextFunction) => { return res.redirect("/signup"); } - passport.authenticate("local", (err: Error, user: UserModel, info: IVerifyOptions) => { + passport.authenticate("local", (err: Error, user: DashUserModel, info: IVerifyOptions) => { if (err) { return next(err); } if (!user) { return res.redirect("/signup"); } req.logIn(user, (err) => { if (err) { return next(err); } - req.flash("success", "Success! You are logged in."); res.redirect("/home"); }); })(req, res, next); }; +export let getWorkspaces = (req: Request, res: Response) => { + const user: DashUserModel = req.user; + if (!user) { + return res.redirect("/login"); + } + res.render("workspace.pug", { + ids: user.allWorkspaceIds + }); +} + /** * GET /logout * Invokes the logout function on the request * and destroys the user's current session. */ export let getLogout = (req: Request, res: Response) => { + const dashUser: DashUserModel | undefined = req.user; + if (dashUser) { + dashUser.update({ $set: { didSelectSessionWorkspace: false } }, () => { }) + console.log("UPDATED :)"); + } else { + console.log("NO USER BY LOGOUT"); + } req.logout(); const sess = req.session; if (sess) { @@ -170,7 +182,7 @@ export let postForgot = function (req: Request, res: Response, next: NextFunctio }) }, function (token: string, done: any) { - User.findOne({ email }, function (err, user: UserModel) { + User.findOne({ email }, function (err, user: DashUserModel) { if (!user) { // NO ACCOUNT WITH SUBMITTED EMAIL return res.redirect('/forgot'); @@ -182,7 +194,7 @@ export let postForgot = function (req: Request, res: Response, next: NextFunctio }); }); }, - function (token: Uint16Array, user: UserModel, done: any) { + function (token: Uint16Array, user: DashUserModel, done: any) { const smtpTransport = nodemailer.createTransport({ service: 'Gmail', auth: { @@ -211,7 +223,7 @@ export let postForgot = function (req: Request, res: Response, next: NextFunctio } export let getReset = function (req: Request, res: Response) { - User.findOne({ passwordResetToken: req.params.token, passwordResetExpires: { $gt: Date.now() } }, function (err, user: UserModel) { + User.findOne({ passwordResetToken: req.params.token, passwordResetExpires: { $gt: Date.now() } }, function (err, user: DashUserModel) { if (!user || err) { return res.redirect('/forgot'); } @@ -225,7 +237,7 @@ export let getReset = function (req: Request, res: Response) { export let postReset = function (req: Request, res: Response) { async.waterfall([ function (done: any) { - User.findOne({ passwordResetToken: req.params.token, passwordResetExpires: { $gt: Date.now() } }, function (err, user: UserModel) { + User.findOne({ passwordResetToken: req.params.token, passwordResetExpires: { $gt: Date.now() } }, function (err, user: DashUserModel) { if (!user || err) { return res.redirect('back'); } @@ -254,7 +266,7 @@ export let postReset = function (req: Request, res: Response) { }); }); }, - function (user: UserModel, done: any) { + function (user: DashUserModel, done: any) { const smtpTransport = nodemailer.createTransport({ service: 'Gmail', auth: { diff --git a/src/server/authentication/models/User.ts b/src/server/authentication/models/user_model.ts index 433e2f6c3..dfd104ef8 100644 --- a/src/server/authentication/models/User.ts +++ b/src/server/authentication/models/user_model.ts @@ -15,12 +15,15 @@ mongoose.connection.on('error', function (error) { mongoose.connection.on('disconnected', function () { console.log('connection closed'); }); -export type UserModel = mongoose.Document & { +export type DashUserModel = mongoose.Document & { email: string, password: string, passwordResetToken: string | undefined, passwordResetExpires: Date | undefined, - tokens: AuthToken[], + + allWorkspaceIds: Array<String>, + activeWorkspaceId: String, + didSelectSessionWorkspace: Boolean, profile: { name: string, @@ -46,12 +49,19 @@ const userSchema = new mongoose.Schema({ passwordResetToken: String, passwordResetExpires: Date, - userDocumentId: String, + allWorkspaceIds: { + type: Array, + default: [] + }, + activeWorkspaceId: String, + didSelectSessionWorkspace: { + type: Boolean, + default: false + }, facebook: String, twitter: String, google: String, - tokens: Array, profile: { name: String, @@ -66,7 +76,7 @@ const userSchema = new mongoose.Schema({ * Password hash middleware. */ userSchema.pre("save", function save(next) { - const user = this as UserModel; + const user = this as DashUserModel; if (!user.isModified("password")) { return next(); } bcrypt.genSalt(10, (err, salt) => { if (err) { return next(err); } @@ -78,7 +88,7 @@ userSchema.pre("save", function save(next) { }); }); -const comparePassword: comparePasswordFunction = function (this: UserModel, candidatePassword, cb) { +const comparePassword: comparePasswordFunction = function (this: DashUserModel, candidatePassword, cb) { bcrypt.compare(candidatePassword, this.password, (err: mongoose.Error, isMatch: boolean) => { cb(err, isMatch); }); |
