Skip to content

Commit

Permalink
separate admin pages into routes
Browse files Browse the repository at this point in the history
  • Loading branch information
Sebastian Dobe committed Jul 11, 2023
1 parent e35ffbe commit 4999995
Show file tree
Hide file tree
Showing 15 changed files with 746 additions and 75 deletions.
58 changes: 55 additions & 3 deletions frontend/src/components/admin/AdminMain.svelte
Expand Up @@ -25,22 +25,74 @@
import IconBookOpen from "../icons/IconBookOpen.svelte";
export let sessionInfo = {};
export let selected = 'Users';
let title = 'Rauthy Admin';
let isExpanded;
let selected = 'Users';
let innerWidth;
$: if (innerWidth) {
isExpanded = innerWidth > 1050;
}
$: if (selected === 'Logout') {
redirectToLogout();
$: if (selected) {
switch (selected) {
case 'Users': {
window.history.pushState({}, '', '/auth/v1/admin/users');
title = 'Users';
break;
}
case 'Attributes': {
window.history.pushState({}, '', '/auth/v1/admin/attributes');
title = 'Attributes';
break;
}
case 'Clients': {
window.history.pushState({}, '', '/auth/v1/admin/clients');
title = 'Clients';
break;
}
case 'Roles': {
window.history.pushState({}, '', '/auth/v1/admin/roles');
title = 'Roles';
break;
}
case 'Groups': {
window.history.pushState({}, '', '/auth/v1/admin/groups');
title = 'Groups';
break;
}
case 'Scopes': {
window.history.pushState({}, '', '/auth/v1/admin/scopes');
title = 'Scopes';
break;
}
case 'Sessions': {
window.history.pushState({}, '', '/auth/v1/admin/sessions');
title = 'Sessions';
break;
}
case 'Config': {
window.history.pushState({}, '', '/auth/v1/admin/config');
title = 'Config';
break;
}
case 'Docs': {
window.history.pushState({}, '', '/auth/v1/admin/docs');
title = 'Docs';
break;
}
case 'Logout': redirectToLogout(); break;
}
}
</script>

<svelte:window bind:innerWidth/>

<svelte:head>
<title>{title}</title>
</svelte:head>

<main>
<Nav bind:selected bind:isExpanded widthExpanded={140} widthCollapsed={60}>
<div slot="logo">
Expand Down
76 changes: 76 additions & 0 deletions frontend/src/components/admin/AdminMainPre.svelte
@@ -0,0 +1,76 @@
<script>
import {onMount} from "svelte";
import {checkAdminAccess, getSessionInfo} from "../../utils/dataFetching.js";
import {redirectToLogin} from "../../utils/helpers.js";
import BrowserCheck from "../BrowserCheck.svelte";
import Loading from "$lib/Loading.svelte";
import Button from "$lib/Button.svelte";
import AdminMain from "./AdminMain.svelte";
export let selected = 'Users';
let sessionInfo;
let isAdmin = false;
let mfaReqErr = false;
onMount(async () => {
let res = await getSessionInfo();
if (res.ok) {
let body = await res.json();
let resAdmin = await checkAdminAccess();
if (resAdmin.ok) {
sessionInfo = body;
isAdmin = true;
} else {
mfaReqErr = true;
sessionInfo = {};
}
} else {
redirectToLogin();
}
});
</script>

<svelte:head>
<title>Admin</title>
</svelte:head>

<BrowserCheck>
{#if !sessionInfo && !mfaReqErr}
<Loading/>
{:else if mfaReqErr}
<div class="noAdmin">
<div class="text">
A rauthy admin account must have <b>MFA enabled.</b><br>
Please navigate to your <b>account</b> and activate MFA.<br>
Afterwards, you need to do a logout and log back in.
</div>
<Button on:click={() => window.location.href = '/auth/v1/account'}>ACCOUNT</Button>
<!-- <Button on:click={() => window.location.href = '/auth/v1/account.html'}>ACCOUNT</Button>-->
</div>
{:else if !isAdmin}
<div class="noAdmin">
<div class="text">
You are not assigned to the <b>rauthy_admin</b> role and have no access to the admin panel.
</div>
<Button on:click={() => window.location.href = '/auth/v1/'}>GO BACK</Button>
</div>
{:else}
<AdminMain bind:sessionInfo bind:selected/>
{/if}
</BrowserCheck>

<style>
.noAdmin {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.text {
margin: 10px;
}
</style>
73 changes: 2 additions & 71 deletions frontend/src/routes/admin/+page.svelte
@@ -1,74 +1,5 @@
<script>
import {onMount} from "svelte";
import {checkAdminAccess, getSessionInfo} from "../../utils/dataFetching.js";
import Loading from "../../components/Loading.svelte";
import {redirectToLogin} from "../../utils/helpers.js";
import AdminMain from "../../components/admin/AdminMain.svelte";
import Button from "$lib/Button.svelte";
import BrowserCheck from "../../components/BrowserCheck.svelte";
let sessionInfo;
let isAdmin = false;
let mfaReqErr = false;
onMount(async () => {
let res = await getSessionInfo();
if (res.ok) {
let body = await res.json();
let resAdmin = await checkAdminAccess();
if (resAdmin.ok) {
sessionInfo = body;
isAdmin = true;
} else {
mfaReqErr = true;
sessionInfo = {};
}
} else {
redirectToLogin();
}
});
import AdminMainPre from "../../components/admin/AdminMainPre.svelte";
</script>

<svelte:head>
<title>Rauthy Admin</title>
</svelte:head>

<BrowserCheck>
{#if !sessionInfo && !mfaReqErr}
<Loading/>
{:else if mfaReqErr}
<div class="noAdmin">
<div class="text">
A rauthy admin account must have <b>MFA enabled.</b><br>
Please navigate to your <b>account</b> and activate MFA.<br>
Afterwards, you need to do a logout and log back in.
</div>
<Button on:click={() => window.location.href = '/auth/v1/account'}>ACCOUNT</Button>
<!-- <Button on:click={() => window.location.href = '/auth/v1/account.html'}>ACCOUNT</Button>-->
</div>
{:else if !isAdmin}
<div class="noAdmin">
<div class="text">
You are not assigned to the <b>rauthy_admin</b> role and have no access to the admin panel.
</div>
<Button on:click={() => window.location.href = '/auth/v1/'}>GO BACK</Button>
</div>
{:else}
<AdminMain bind:sessionInfo/>
{/if}
</BrowserCheck>

<style>
.noAdmin {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.text {
margin: 10px;
}
</style>
<AdminMainPre selected="Users"/>
5 changes: 5 additions & 0 deletions frontend/src/routes/admin/attributes/+page.svelte
@@ -0,0 +1,5 @@
<script>
import AdminMainPre from "../../../components/admin/AdminMainPre.svelte";
</script>

<AdminMainPre selected="Users"/>
5 changes: 5 additions & 0 deletions frontend/src/routes/admin/clients/+page.svelte
@@ -0,0 +1,5 @@
<script>
import AdminMainPre from "../../../components/admin/AdminMainPre.svelte";
</script>

<AdminMainPre selected="Clients"/>
5 changes: 5 additions & 0 deletions frontend/src/routes/admin/config/+page.svelte
@@ -0,0 +1,5 @@
<script>
import AdminMainPre from "../../../components/admin/AdminMainPre.svelte";
</script>

<AdminMainPre selected="Config"/>
5 changes: 5 additions & 0 deletions frontend/src/routes/admin/docs/+page.svelte
@@ -0,0 +1,5 @@
<script>
import AdminMainPre from "../../../components/admin/AdminMainPre.svelte";
</script>

<AdminMainPre selected="Docs"/>
5 changes: 5 additions & 0 deletions frontend/src/routes/admin/groups/+page.svelte
@@ -0,0 +1,5 @@
<script>
import AdminMainPre from "../../../components/admin/AdminMainPre.svelte";
</script>

<AdminMainPre selected="Groups"/>
5 changes: 5 additions & 0 deletions frontend/src/routes/admin/roles/+page.svelte
@@ -0,0 +1,5 @@
<script>
import AdminMainPre from "../../../components/admin/AdminMainPre.svelte";
</script>

<AdminMainPre selected="Roles"/>
5 changes: 5 additions & 0 deletions frontend/src/routes/admin/scopes/+page.svelte
@@ -0,0 +1,5 @@
<script>
import AdminMainPre from "../../../components/admin/AdminMainPre.svelte";
</script>

<AdminMainPre selected="Scopes"/>
5 changes: 5 additions & 0 deletions frontend/src/routes/admin/sessions/+page.svelte
@@ -0,0 +1,5 @@
<script>
import AdminMainPre from "../../../components/admin/AdminMainPre.svelte";
</script>

<AdminMainPre selected="Sessions"/>
5 changes: 5 additions & 0 deletions frontend/src/routes/admin/users/+page.svelte
@@ -0,0 +1,5 @@
<script>
import AdminMainPre from "../../../components/admin/AdminMainPre.svelte";
</script>

<AdminMainPre selected="Users"/>

0 comments on commit 4999995

Please sign in to comment.