Routify 3 public BETA is here! Check it out

Auth

With Routify, you don't need any router included functions to authenticate users and protect your app.

Since everything in Routify is scoped, protecting a layout automatically protects all nested components recursively.

Authentication guards

Users should generally be authenticated in the root layout.

<!-- src/pages/_layout.svelte --> <script> import { authenticate } from 'my-auth-service' </script> <!-- Wait with rendering the app till the user/guest is verified. This prevents small UI glitches and premature authorization checks. --> {#await authenticate()} {:then} <slot /> {/await}
<!-- src/pages/_layout.svelte -->
<script>
  import { authenticate } from 'my-auth-service'
</script>

<!-- Wait with rendering the app till the user/guest is verified.
This prevents small UI glitches and premature authorization checks. -->
{#await authenticate()}
{:then}
  <slot />
{/await}

Authorization Guards

Guards should be implemented in the component or module which they protect.

<!-- src/pages/admin/_layout.svelte --> <script> export let scoped </script> {#if scoped.user.isAdmin} <slot /> {/if}
<!-- src/pages/admin/_layout.svelte -->
<script>
  export let scoped
</script>

{#if scoped.user.isAdmin}
  <slot />
{/if}

Realtime guards

For realtime guards, simply replace {#await <promise>} with {#if <reactive condition>}

SSR / Static

If you use spank, spassr --ssr or our starter template's serverless SSR functions, you need to call $ready() to let tossr know that the page is ready to be rendered. Otherwise tossr would wait indefinitely for your page (eg. index.svelte) to load.

<!-- src/pages/_layout.svelte --> <script> import { $ready } from '@roxi/routify' ... </script> {#if condition} <slot /> {:else} { $ready() } {/if}
<!-- src/pages/_layout.svelte -->
<script>
  import { $ready } from '@roxi/routify'
  ...
</script>


{#if condition}
  <slot />
{:else}
  { $ready() }
{/if}

Writing good documentation that is up-to-date is difficult. If you notice a mistake, help us out.