Feature/Auth: last one was authentication, this one is authorization #4

Merged
homeburger merged 33 commits from feature/auth into main 2026-04-23 00:18:39 -05:00
2 changed files with 28 additions and 2 deletions
Showing only changes of commit 42a59c8af3 - Show all commits

View File

@@ -1,7 +1,7 @@
<script setup lang="ts">
import { onMounted } from "vue"
import { onMounted, reactive } from "vue"
import { useRoute, useRouter } from "vue-router";
import { useUsersStore } from "../stores/UsersStore.ts"
import * as authApi from "../api/AuthApi";
@@ -18,6 +18,15 @@ function logout() {
router.push("/login");
}
const inputs = reactive<Record<number, string>>({});
store.users.forEach((_, i) => {
inputs[i] = ""
});
const addPermission = (userId: string, index: number) => {
if(inputs[index] != null) store.addPermission(userId, inputs[index]);
}
</script>
<template>
@@ -25,11 +34,20 @@ function logout() {
<h1>Users</h1>
<table>
<tr v-for="user in store.users" :key="user.id">
<tr v-for="(user, index) in store.users" :key="user.id">
<td>{{ user.userName }}</td>
<td>
<button @click="store.removeUser(user.id)">Delete</button>
</td>
<td v-for="perm in user.permissions" :key="user.id">
<button @click="store.removePermission(user.id, perm)">Remove {{ perm }} permission</button>
</td>
<td>
<form @submit.prevent="addPermission(user.id, index)">
<input type="text" v-model="inputs[index]" placeholder="permission" />
<button type="submit">Add Permission</button>
</form>
</td>
</tr>
</table>
<button @click="logout()">Logout</button>

View File

@@ -26,6 +26,14 @@ export const useUsersStore = defineStore("users", {
async removeUser(id: string) {
await usersApi.deleteUser(id);
this.users = this.users.filter(i => i.id !== id);
},
removePermission(id: string, permission: string) {
console.log("removing permission", permission, "for user", id);
},
addPermission(id: string, permission: string) {
console.log("adding permission", permission, "for user", id);
}
}