kriasoft / universal-router

A simple middleware-style router for isomorphic JavaScript web apps
https://www.kriasoft.com/universal-router/
MIT License
1.7k stars 104 forks source link

Protected routes getting called without authentication #126

Open vineet-287 opened 6 years ago

vineet-287 commented 6 years ago

I got routes are calling without authentication. Even I used protected but it's not working. Here below my snippet :

//in routes.js

import UniversalRouter from 'universal-router';

const routes = [
 path: '/',
  protected : true,

  async action() {
    const Home = await new Promise((resolve) => {
      require.ensure([], (require) => {
        resolve(require('./Home').default);
      }, 'home');
    });
    return <Home key={'home'} />;
  },
];
//When router resolve
app.get('*', async (req, res, next) => {
    try {
        let css = new Set();
        let statusCode = 200;
        const data = {title: '', description: '', style: '', script: assets.main.js, children: ''};
        await UniversalRouter.resolve(routes, {
            path: req.path,
            query: req.query,
            context: {
                insertCss: (...styles) => {
                    styles.forEach(style => css.add(style._getCss())); // eslint-disable-line no-underscore-dangle, max-len
                },
                setTitle: value => (data.title = value),
                setMeta: (key, value) => (data[key] = value),
            },
            render(component, status = 200) {
                css = new Set();
                statusCode = status;
                data.children = ReactDOM.renderToString(component);
                data.style = [...css].join('');
                return true;
            },
        });

        const html = ReactDOM.renderToStaticMarkup(<Html {...data} />);

        res.status(statusCode);
        res.send(`<!doctype html>${html}`);
    } catch (err) {
        next(err);
    }
});

Can somebody please explain how to redirect them on login screen ?

frenzzy commented 6 years ago

In your example, it's unclear where the render(component, status) is called from. In the current version of React Starter Kit you can find an example.