diff --git a/app/client/package.json b/app/client/package.json index 5834f571a6..1dda87bd0f 100644 --- a/app/client/package.json +++ b/app/client/package.json @@ -30,6 +30,7 @@ "lint-staged": "^8.1.0", "lodash": "^4.17.11", "nanoid": "^2.0.4", + "netlify-identity-widget": "^1.5.5", "node-sass": "^4.11.0", "normalizr": "^3.3.0", "prettier": "^1.16.0", diff --git a/app/client/public/_redirects b/app/client/public/_redirects new file mode 100644 index 0000000000..50a463356b --- /dev/null +++ b/app/client/public/_redirects @@ -0,0 +1 @@ +/* /index.html 200 \ No newline at end of file diff --git a/app/client/src/index.tsx b/app/client/src/index.tsx index 28b1160583..d118033555 100755 --- a/app/client/src/index.tsx +++ b/app/client/src/index.tsx @@ -4,7 +4,8 @@ import { Provider } from "react-redux"; import "./index.css"; import App from "./App"; import Editor from "./pages/Editor"; -import PageNotFound from "./pages/PageNotFound"; +import PageNotFound from "./pages/common/PageNotFound"; +import LoginPage from "./pages/common/LoginPage"; import * as serviceWorker from "./serviceWorker"; import { BrowserRouter, Route, Switch } from "react-router-dom"; import { createStore, applyMiddleware } from "redux"; @@ -18,8 +19,8 @@ import { rootSaga } from "./sagas" import { DndProvider } from "react-dnd" import HTML5Backend from "react-dnd-html5-backend" import { appInitializer } from "./utils/AppsmithUtils"; - -appInitializer() +import ProtectedRoute from "./pages/common/ProtectedRoute"; +appInitializer(); WidgetBuilderRegistry.registerWidgetBuilders(); const sagaMiddleware = createSagaMiddleware() const store = createStore(appReducer, applyMiddleware(sagaMiddleware)); @@ -33,6 +34,7 @@ ReactDOM.render( + diff --git a/app/client/src/pages/common/LoginPage.tsx b/app/client/src/pages/common/LoginPage.tsx new file mode 100644 index 0000000000..f87a7b19ec --- /dev/null +++ b/app/client/src/pages/common/LoginPage.tsx @@ -0,0 +1,21 @@ +import * as React from "react" +import { RouterProps } from "react-router"; +import netlifyIdentity from 'netlify-identity-widget'; + +class LoginPage extends React.PureComponent { + + componentDidMount() { + netlifyIdentity.open() + } + + render() { + return ( +
+
+ ) + } +} + +export default LoginPage + + diff --git a/app/client/src/pages/PageNotFound.tsx b/app/client/src/pages/common/PageNotFound.tsx similarity index 100% rename from app/client/src/pages/PageNotFound.tsx rename to app/client/src/pages/common/PageNotFound.tsx diff --git a/app/client/src/pages/common/ProtectedRoute.tsx b/app/client/src/pages/common/ProtectedRoute.tsx new file mode 100644 index 0000000000..e0a050bef4 --- /dev/null +++ b/app/client/src/pages/common/ProtectedRoute.tsx @@ -0,0 +1,16 @@ +import * as React from "react" +import _ from "lodash" +import { Route, Redirect } from "react-router-dom"; + +import netlifyIdentity from 'netlify-identity-widget'; + +const ProtectedRoute = ({ path: path, component: Component, ...rest }: { path: string, component: React.ReactType }) => { + let windowDoc: any = window + return ( ( + !_.isNil(netlifyIdentity.currentUser()) + ? + : + )} />) +} + +export default ProtectedRoute \ No newline at end of file diff --git a/app/client/src/utils/AppsmithUtils.tsx b/app/client/src/utils/AppsmithUtils.tsx index b57510cf7b..df044bf358 100644 --- a/app/client/src/utils/AppsmithUtils.tsx +++ b/app/client/src/utils/AppsmithUtils.tsx @@ -2,6 +2,7 @@ import { ReduxAction } from "../constants/ActionConstants" import { SENTRY_PROD_CONFIG, SENTRY_STAGE_CONFIG, HOTJAR_PROD_HJID, HOTJAR_PROD_HJSV } from "../constants/ThirdPartyConstants"; import * as Sentry from '@sentry/browser'; import AnalyticsUtil from "./AnalyticsUtil" +import netlifyIdentity from 'netlify-identity-widget'; export const createReducer = ( initialState: any, @@ -17,6 +18,7 @@ export const createReducer = ( } export const appInitializer = () => { + netlifyIdentity.init(); switch (process.env.REACT_APP_ENVIRONMENT) { case "PRODUCTION": Sentry.init(SENTRY_PROD_CONFIG); diff --git a/app/client/yarn.lock b/app/client/yarn.lock index f8ed8edf7b..c88d1a7e1d 100644 --- a/app/client/yarn.lock +++ b/app/client/yarn.lock @@ -7391,6 +7391,11 @@ neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== +netlify-identity-widget@^1.5.5: + version "1.5.5" + resolved "https://registry.yarnpkg.com/netlify-identity-widget/-/netlify-identity-widget-1.5.5.tgz#e9ba8d7676263507106060236cf55c2992f425e4" + integrity sha512-gCILbXMVn83TiRaiPCWk93ynyyYgxn8N/KoO+WOfyGZaNgq7gMMPtn7vo6VDe/ZczgyCn9DRlm3artNoj78/MQ== + next-tick@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"