PolymerElements / iron-pages

Simple content switcher
https://www.webcomponents.org/element/PolymerElements/iron-pages
48 stars 19 forks source link

middleware #60

Closed jobizzness closed 6 years ago

jobizzness commented 7 years ago

Description

Hi i was thinking to have like a middleware for iron-pages. <iron-pages selected="[[page]]" attr-for-selected="name" fallback-selection="404" session="[[signedIn]]" role="main">

      <biness-404 name="dashboard" middleware="admin"></biness-404>
      <biness-404 name="404" middleware="guest"></biness-404>
    </iron-pages>

Expected outcome

    <iron-pages
        selected="[[page]]"
        attr-for-selected="name"
        fallback-selection="404"
        session="[[signedIn]]"
        role="main">
      <biness-home name="home" middleware="auth"></biness-home>
      <biness-404 name="dashboard" middleware="admin"></biness-404>
      <biness-404 name="404" middleware="guest"></biness-404>
    </iron-pages>

Actual outcome

Live Demo

Steps to reproduce

Browsers Affected

jobizzness commented 6 years ago

If anyone is interested, i think this can be achieved using switch statements. Here is how i did it.

_middleware(page, old){ switch(page){ case 'login': case 'signup': if(this.user){ this.set("route.path", '/'); } break; case 'me': case 'cart': case 'notification': if(!this.user){ this.set("route.path", '/'); this._showLogin(); } break; } }