From e7051ff7dc705cee2360798df86613632b305ba2 Mon Sep 17 00:00:00 2001
From: Santo Cariotti <santo@dcariotti.me>
Date: Thu, 13 Oct 2022 22:27:15 +0200
Subject: Pages for admin

---
 pages/admin/index.vue | 39 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)
 create mode 100644 pages/admin/index.vue

(limited to 'pages/admin/index.vue')

diff --git a/pages/admin/index.vue b/pages/admin/index.vue
new file mode 100644
index 0000000..679f82f
--- /dev/null
+++ b/pages/admin/index.vue
@@ -0,0 +1,39 @@
+<template lang="pug">
+  .mx-auto.w-90p.py-6(class="sm:px-6 lg:px-8 md:max-w-7xl")
+    h1.text-3xl.font-bold(class="dark:text-white") Users
+    .grid.grid-cols-6.mt-3
+      div
+        admin-sidebar
+      section#tables.col-span-5
+        v-table(
+          :keys="['id', 'avatar', 'username', 'email', 'is_staff', 'name']"
+          :fields="users"
+          path="/users/"
+        )
+</template>
+
+<script>
+import { mapGetters } from "vuex";
+
+import AdminSidebar from "@/components/AdminSidebar.vue";
+import VTable from "@/components/VTable.vue";
+
+export default {
+  name: "AdminView",
+  head: { title: "Admin panel · Verden" },
+  computed: {
+    ...mapGetters("auth", ["isLogged", "me"]),
+    ...mapGetters("users", ["users"]),
+  },
+  components: { AdminSidebar, "v-table": VTable },
+  async mounted() {
+    await this.$store.dispatch("auth/findMe");
+
+    if (!(this.isLogged && this.me && this.me.is_staff)) {
+      window.location.href = "/";
+    }
+
+    this.$store.dispatch("users/getUsers", { page: 0 });
+  },
+};
+</script>
-- 
cgit v1.2.3-18-g5258

