declare var require: any;
import React, { useEffect } from 'react';
//import Cookies from 'universal-cookie';
//import {IC_USER_ID} from "../authentication/auth-middleware";
//import ExecutionEnvironment from 'exenv';
//import {withRequest} from "../components/attach-request";
/*
export const isLoggedIn = (identityKey) => {
const val = new Cookies().get(identityKey);
//console.log("forceLogin: ",val);
return val !== undefined;
}*/
// create a context with the default value: empty
//const LoggedInContext = React.createContext(undefined);
interface ForceLoginProps {
userId: string | undefined,
children: any,
//request? : any // passed by `withRequest`
//identityKey: string // the primaryKey-property of the applicable -Component
}
/**
* implements [[RequireServerRenderingSpec]]
*
* the ForceLogin Component is a HOC that passes the userid to its child components
* the forceLogin gets the cookie value regardless on whether it runs on the server or in the browser
* see: https://www.npmjs.com/package/universal-cookie
*
* see hocs with context: https://itnext.io/combining-hocs-with-the-new-reacts-context-api-9d3617dccf0b
*
* how to check whether running on server or in browser: https://www.npmjs.com/package/exenv
*/
const ForceLogin = (props: ForceLoginProps) => {
/**
* When we run in the browser: if not logged in, then make the page reload from the server to
* make the login-middlewares apply
*/
useEffect(()=> {
//console.log("ForceLogin-Component: ", this.props.identityKey)
if (props.userId == undefined) {
window.location.reload();
}
});
//console.log("ForceLogin: request ->", this.props.request)
// we provide the information which user is logged in
return
{props.children}
}
import {withUser} from "./attach-user";
/**
* we MUST NOT IMPORT CONTEXTs directly, but require them at time of use generally from Infrastructure-Components
* because this then resolves to node_modules
*/
export default withUser(ForceLogin);