fluminis
fluminis

Reputation: 4059

mithril.js redirect user if not connected

How to use mithril.js and it's routing system to redirect my user to the login form when the user is not yet connected?

I define some routes:

m.route.mode = 'search';
m.route(document.getElementById('app'), "/", {
    '/': LoginForm,
    '/orders': OrderList,
    '/order/new': OrderForm,
    '/order/:orderId': OrderForm
});

But I want to redirect /orders and other routes to / if the user has not login.

Do I need to put the code in the controllers (OrderList.controller and OrderForm.controller)? or in the views (OrderList.view and OrderForm.view)?

window.OrderForm = {
    controller: function () {
        var ctrl = this

        if (/* user not logged */) {
            m.route('/')
            return;
        }
        // controller code
     },
     view: function(ctrl) {
        if (/* user not logged */) {
            m.route('/')
            return;
        }
        // view code
        return m('....');
     }
}

Upvotes: 1

Views: 628

Answers (1)

Ross Khanas
Ross Khanas

Reputation: 1501

You should put redirect to the controllers.

In this case redirect is called before requestAnimationFrame, so you are redirected to appropriate controller and appropriate view is rendered.

In case redirecting in the views, you probably are not redirected properly, view is rendered anyway.

Upvotes: 2

Related Questions