infrastructure-components
Version:
Infrastructure-Components configure the infrastructure of your React-App as part of your React-Components.
77 lines • 3.02 kB
JavaScript
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const React = __importStar(require("react"));
const auth_middleware_1 = require("../authentication/auth-middleware");
const exenv_1 = __importDefault(require("exenv"));
const universal_cookie_1 = __importDefault(require("universal-cookie"));
const iso_libs_1 = require("../libs/iso-libs");
// create empty context as default
const UserContext = React.createContext({});
function getUserId(request) {
if (request) {
return new universal_cookie_1.default(request.headers.cookie).get(auth_middleware_1.IC_USER_ID);
}
else if (exenv_1.default.canUseDOM) {
return new universal_cookie_1.default().get(auth_middleware_1.IC_USER_ID);
}
return undefined;
}
exports.getUserId = getUserId;
function getWebToken(request) {
if (request) {
return new universal_cookie_1.default(request.headers.cookie).get(auth_middleware_1.IC_WEB_TOKEN);
}
else if (exenv_1.default.canUseDOM) {
return new universal_cookie_1.default().get(auth_middleware_1.IC_WEB_TOKEN);
}
return undefined;
}
exports.getWebToken = getWebToken;
/**
* This HOC attaches the User-Id to a webapp, may be undefined!
*/
const AttachUser = (props) => {
//console.log("attaching user: ", getUserId(undefined));
return React.createElement(UserContext.Provider, { value: {
userId: exenv_1.default.canUseDOM ?
new universal_cookie_1.default().get(auth_middleware_1.IC_USER_ID) :
new universal_cookie_1.default(props.request.headers.cookie).get(auth_middleware_1.IC_USER_ID)
} }, props.children);
};
/**
* @param Component
* @returns {function(any): any}
*/
function withUser(Component) {
return function WrapperComponent(props) {
return (React.createElement(UserContext.Consumer, null, (context) => {
return React.createElement(Component, Object.assign({}, props, { userId: context.userId }));
}));
};
}
exports.withUser = withUser;
function userLogout(pathUrl) {
const path = require('path');
const cookies = new universal_cookie_1.default();
cookies.remove(auth_middleware_1.IC_USER_ID, { path: '/' });
cookies.remove(auth_middleware_1.IC_WEB_TOKEN, { path: '/' });
if (pathUrl !== undefined) {
window.location.href = path.join(iso_libs_1.getBasename(), pathUrl);
}
else {
window.location.reload();
}
}
exports.userLogout = userLogout;
exports.default = require("infrastructure-components").withRequest(AttachUser);
//# sourceMappingURL=attach-user.js.map
;