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', + }) }) }