From e27f5a917643d1d93b6f8bb99ad71a643eca1750 Mon Sep 17 00:00:00 2001 From: kyle hoell Date: Thu, 3 Dec 2020 18:52:39 -0500 Subject: [PATCH] fixed bug with verifying email showing previous account. Fixed sharing file through email. Added new cookie when verifying email. Removed get storage. Fixed changing password. Added refresh page after verifying email. Added more swal errors when trying to share email without sharing file first and more --- backend/controllers/user.ts | 7 +++++- backend/express-routers/storage.ts | 2 +- backend/services/UserService/index.ts | 30 +++++++++++----------- src/actions/storage.js | 2 ++ src/components/LoginPage/LoginPage.js | 2 +- src/components/LoginPage/index.js | 7 ++++++ src/components/SettingsPage/index.js | 4 +-- src/components/ShareModel/index.js | 36 ++++++++++++++++++++++++++- 8 files changed, 70 insertions(+), 20 deletions(-) diff --git a/backend/controllers/user.ts b/backend/controllers/user.ts index 143f0a6..83f66b2 100644 --- a/backend/controllers/user.ts +++ b/backend/controllers/user.ts @@ -266,8 +266,13 @@ class UserController { try { const verifyToken = req.body.emailToken; + const ipAddress = req.clientIp; - await UserProvider.verifyEmail(verifyToken); + const user = await UserProvider.verifyEmail(verifyToken); + + const {accessToken, refreshToken} = await user.generateAuthToken(ipAddress); + + createLoginCookie(res, accessToken, refreshToken); res.send(); diff --git a/backend/express-routers/storage.ts b/backend/express-routers/storage.ts index abbdc6d..641cc40 100644 --- a/backend/express-routers/storage.ts +++ b/backend/express-routers/storage.ts @@ -6,6 +6,6 @@ const storageController = new StorageController(); const router = Router(); -router.get("/storage-service/info", auth, storageController.getStorageInfo); +// router.get("/storage-service/info", auth, storageController.getStorageInfo); export default router; \ No newline at end of file diff --git a/backend/services/UserService/index.ts b/backend/services/UserService/index.ts index 656774f..ed6ca81 100644 --- a/backend/services/UserService/index.ts +++ b/backend/services/UserService/index.ts @@ -143,24 +143,24 @@ class UserService { user.tempTokens = []; user.passwordLastModified = date.getTime(); - if (oldRefreshToken) { - const decoded = jwt.verify(oldRefreshToken, env.passwordRefresh!) as jwtType; - const encrpytionKey = user.getEncryptionKey(); - const encryptedToken = user.encryptToken(oldRefreshToken, encrpytionKey, decoded.iv); + // if (oldRefreshToken) { + // const decoded = jwt.verify(oldRefreshToken, env.passwordRefresh!) as jwtType; + // const encrpytionKey = user.getEncryptionKey(); + // const encryptedToken = user.encryptToken(oldRefreshToken, encrpytionKey, decoded.iv); - for (let i = 0; i < user.tokens.length; i++) { + // for (let i = 0; i < user.tokens.length; i++) { - const currentEncryptedToken = user.tokens[i].token; + // const currentEncryptedToken = user.tokens[i].token; - if (currentEncryptedToken === encryptedToken) { + // if (currentEncryptedToken === encryptedToken) { - console.log("Refresh Token Found Logout!"); - user.tokens.splice(i, 1); - await user.save(); - break; - } - } - } + // console.log("Refresh Token Found Logout!"); + // user.tokens.splice(i, 1); + // await user.save(); + // break; + // } + // } + // } await user.save(); await user.changeEncryptionKey(encryptionKey!); @@ -276,6 +276,8 @@ class UserService { if (encryptedToken === user.emailToken) { user.emailVerified = true; await user.save(); + return user; + } else { throw new ForbiddenError('Email Token Verification Failed') } diff --git a/src/actions/storage.js b/src/actions/storage.js index 22f6cb8..61b2b4e 100644 --- a/src/actions/storage.js +++ b/src/actions/storage.js @@ -10,6 +10,8 @@ export const startSetStorage = () => { return (dispatch) => { + return; + if (env.disableStorage === "true") { return; } diff --git a/src/components/LoginPage/LoginPage.js b/src/components/LoginPage/LoginPage.js index a744c45..85bbf80 100755 --- a/src/components/LoginPage/LoginPage.js +++ b/src/components/LoginPage/LoginPage.js @@ -35,6 +35,7 @@ const LoginPage = (props) => {

Confirm your email address

We've sent a confirmation email to {env.emailAddress ? env.emailAddress.length !== 0 ? env.emailAddress : props.state.email : props.state.email}.

+

Refresh this page after confirming email.

{/*
@@ -153,7 +154,6 @@ const LoginPage = (props) => {

Check your email

If the email address matches any in our database, we’ll send you an email with instructions on how to reset your password

-

If you still have problems accessing your account, please send an email to support@piedpiperapp.com

diff --git a/src/components/LoginPage/index.js b/src/components/LoginPage/index.js index 768a3c9..f48c1b8 100644 --- a/src/components/LoginPage/index.js +++ b/src/components/LoginPage/index.js @@ -5,6 +5,7 @@ import {connect} from "react-redux"; import React from "react"; import axios from "../../axiosInterceptor"; import Swal from "sweetalert2"; +import env from "../../enviroment/envFrontEnd"; class LoginPageContainer extends React.Component { @@ -224,7 +225,13 @@ class LoginPageContainer extends React.Component { componentDidMount = () => { + env.emailAddress = ""; + this.setState(() => ({ + ...this.state, + email: "", + })) this.loginWithToken(); + } render() { diff --git a/src/components/SettingsPage/index.js b/src/components/SettingsPage/index.js index e4447dd..90f3b2d 100644 --- a/src/components/SettingsPage/index.js +++ b/src/components/SettingsPage/index.js @@ -537,8 +537,8 @@ class SettingsPageContainer extends React.Component { axios.post(`/user-service/change-password/`, data).then((results) => { - const newToken = results.data; - window.localStorage.setItem("token", newToken); + //const newToken = results.data; + // window.localStorage.setItem("token", newToken); this.changeShowChangePassword() //this.getUserDetails() diff --git a/src/components/ShareModel/index.js b/src/components/ShareModel/index.js index 6210c59..131b0b9 100644 --- a/src/components/ShareModel/index.js +++ b/src/components/ShareModel/index.js @@ -44,7 +44,7 @@ class ShareModelContainer extends React.Component { const linkType = response.data.metadata.linkType; - const shareURL = this.props.shareSelected.metadata.drive ? response.data.metadata.link : `/download-page/${this.props.shareSelected._id}/${this.props.shareSelected.metadata.link}` + const shareURL = this.props.shareSelected.metadata.drive ? response.data.metadata.link : `${currentURL}/download-page/${this.props.shareSelected._id}/${this.props.shareSelected.metadata.link}` console.log("share link type", linkType, response.data); @@ -123,6 +123,15 @@ class ShareModelContainer extends React.Component { if (this.state.sendTo.length === 0 || !this.state.loaded) return; + if (!this.state.shared) { + Swal.fire({ + icon: 'error', + title: 'You must share the file first', + text: 'Select make public or make one time before sending email', + }) + return; + } + console.log("sending email share request") const data = { @@ -146,6 +155,11 @@ class ShareModelContainer extends React.Component { }).catch((err) => { console.log("share file email failed", err) + Swal.fire({ + icon: 'error', + title: 'Cannot send share email', + text: 'An error occurred when sending share email', + }) }) } @@ -242,6 +256,11 @@ class ShareModelContainer extends React.Component { }).catch((err) => { console.log(err) + Swal.fire({ + icon: 'error', + title: 'Cannot remove public link', + text: 'An error occurred when removing public link', + }) }) } @@ -295,6 +314,11 @@ class ShareModelContainer extends React.Component { }).catch((err) => { console.log(err) + Swal.fire({ + icon: 'error', + title: 'Cannot make public', + text: 'An error occurred when making file public' + }) }) } }) @@ -350,6 +374,11 @@ class ShareModelContainer extends React.Component { }).catch((err) => { console.log(err) + Swal.fire({ + icon: 'error', + title: 'Cannot make one time public link', + text: 'An error occurred when making one time public link', + }) }) @@ -382,6 +411,11 @@ class ShareModelContainer extends React.Component { }})) }).catch((err) => { console.log(err) + Swal.fire({ + icon: 'error', + title: 'Cannot remove public link', + text: 'An error occurred when removing public link', + }) }) }