diff --git a/src/app.css b/src/app.css
index adb6e14..523c3a8 100644
--- a/src/app.css
+++ b/src/app.css
@@ -233,7 +233,7 @@
&:disabled,
&.disabled {
- @apply cursor-not-allowed opacity-80 hover:outline-0;
+ @apply cursor-not-allowed opacity-70 hover:outline-0;
}
&.red {
@@ -257,6 +257,10 @@
@apply border-3 border-primary-700 bg-primary-900 fill-primary-50 p-2 text-sm ring-primary-900 placeholder:text-primary-700 active:ring-3;
}
+ .themed-input-on-box {
+ @apply bg-primary-900 border-3 border-primary-800 ring-primary-700 focus:ring-2 transition-shadow rounded-lg placeholder:text-primary-700;
+ }
+
.checkbox {
@apply border-2 border-primary-600 bg-primary-900 ring-0 h-4 w-4 rounded-sm;
}
diff --git a/src/routes/auth/callback/+server.ts b/src/routes/auth/callback/+server.ts
index bbc2013..3ddc9cc 100644
--- a/src/routes/auth/callback/+server.ts
+++ b/src/routes/auth/callback/+server.ts
@@ -165,6 +165,11 @@ export async function GET(event) {
return redirect(302, 'https://fraud.land');
}
+ const isSuperAdmin =
+ env.SUPER_ADMIN_SLACK_ID != undefined &&
+ env.SUPER_ADMIN_SLACK_ID.length > 0 &&
+ slack_id === env.SUPER_ADMIN_SLACK_ID;
+
if (databaseUser) {
// Update user (update name and profile picture and lastLoginAt on login)
await db
@@ -173,12 +178,11 @@ export async function GET(event) {
name: username,
profilePicture: profilePic,
lastLoginAt: new Date(Date.now()),
- hackatimeTrust
+ hackatimeTrust,
+ hasAdmin: isSuperAdmin ? true : undefined
})
.where(eq(user.idvId, id));
} else {
- const isSuperAdmin = slack_id === env.SUPER_ADMIN_SLACK_ID;
-
// Create user
await db.insert(user).values({
idvId: id,
diff --git a/src/routes/dashboard/Sidebar.svelte b/src/routes/dashboard/Sidebar.svelte
index 0272aa0..a2f5bf2 100644
--- a/src/routes/dashboard/Sidebar.svelte
+++ b/src/routes/dashboard/Sidebar.svelte
@@ -60,7 +60,7 @@
{user.name}
- {user.clay} clay · {user.brick} brick
+ {Math.floor(user.clay)} clay · {Math.floor(user.brick)} brick
Log out
diff --git a/src/routes/dashboard/admin/admin/+page.svelte b/src/routes/dashboard/admin/admin/+page.svelte
index 9610955..8a9cf17 100644
--- a/src/routes/dashboard/admin/admin/+page.svelte
+++ b/src/routes/dashboard/admin/admin/+page.svelte
@@ -1,5 +1,6 @@
@@ -9,5 +10,15 @@
diff --git a/src/routes/dashboard/admin/admin/users/+page.svelte b/src/routes/dashboard/admin/admin/users/+page.svelte
index c533364..05648ec 100644
--- a/src/routes/dashboard/admin/admin/users/+page.svelte
+++ b/src/routes/dashboard/admin/admin/users/+page.svelte
@@ -9,12 +9,10 @@
let userSearch = $state('');
- let users = $derived(data.users); //form?.users ??
+ let users = $derived(data.users); //form?.users ??
let filteredProjects = $derived(
- data.users.filter((user) =>
- user.name?.toLowerCase().includes(userSearch.toLowerCase())
- )
+ data.users.filter((user) => user.name?.toLowerCase().includes(userSearch.toLowerCase()))
);
let filteredUsers = $derived(
data.users.filter((user) => user.name.toLowerCase().includes(userSearch.toLowerCase()))
@@ -28,92 +26,6 @@
Users
-
-
{#if users.length == 0}
@@ -135,44 +47,29 @@
{user.name}
-
+
+ {user.slackId}
+
+
Hackatime: {user.hackatimeTrust}
+
Trust: {user.trust}
+
{user.clay} clay, {user.brick} brick, {user.shopScore} market
{/each}
diff --git a/src/routes/dashboard/admin/admin/users/[id]/+page.server.ts b/src/routes/dashboard/admin/admin/users/[id]/+page.server.ts
index 0eb9c1b..048c8a4 100644
--- a/src/routes/dashboard/admin/admin/users/[id]/+page.server.ts
+++ b/src/routes/dashboard/admin/admin/users/[id]/+page.server.ts
@@ -1,7 +1,7 @@
import { db } from '$lib/server/db/index.js';
import { user, devlog, session } from '$lib/server/db/schema.js';
-import { error } from '@sveltejs/kit';
-import { eq, sql } from 'drizzle-orm';
+import { error, fail } from '@sveltejs/kit';
+import { and, eq, sql } from 'drizzle-orm';
import type { Actions } from './$types';
export async function load({ locals, params }) {
@@ -20,7 +20,7 @@ export async function load({ locals, params }) {
devlogCount: sql`COALESCE(COUNT(${devlog.id}), 0)`
})
.from(user)
- .leftJoin(devlog, eq(devlog.userId, user.id))
+ .leftJoin(devlog, and(eq(devlog.userId, user.id), eq(devlog.deleted, false)))
.where(eq(user.id, id))
.groupBy(user.id)) ?? [{ devlogCount: 0 }];
@@ -51,8 +51,6 @@ export const actions = {
const hasAdmin = data.get('has_admin');
const hasProjectAuditLogs = data.get('has_project_audit_logs');
- // TODO: add check to disable un-admining superadmin
-
await db
.update(user)
.set({
@@ -74,6 +72,57 @@ export const actions = {
};
},
+ currency: async ({ locals, request, params }) => {
+ if (!locals.user) {
+ throw error(500);
+ }
+ if (!locals.user.hasAdmin) {
+ throw error(403, { message: 'get out, peasant' });
+ }
+
+ const id: number = parseInt(params.id);
+
+ const data = await request.formData();
+ const clay = data.get('clay');
+ const brick = data.get('brick');
+ const shopScore = data.get('market_score');
+
+ if (
+ !clay ||
+ isNaN(parseFloat(clay.toString())) ||
+ !brick ||
+ isNaN(parseFloat(brick.toString())) ||
+ !shopScore ||
+ isNaN(parseFloat(shopScore.toString()))
+ ) {
+ return fail(400, {
+ currency: {
+ fields: { clay, brick, shopScore },
+ invalidFields: true
+ }
+ });
+ }
+
+ await db
+ .update(user)
+ .set({
+ clay: parseFloat(clay.toString()),
+ brick: parseFloat(brick.toString()),
+ shopScore: parseFloat(shopScore.toString())
+ })
+ .where(eq(user.id, id));
+
+ const [queriedUser] = await db.select().from(user).where(eq(user.id, id));
+
+ if (!queriedUser) {
+ throw error(404, { message: 'user not found' });
+ }
+
+ return {
+ queriedUser
+ };
+ },
+
refreshHackatime: async ({ locals, params }) => {
if (!locals.user) {
throw error(500);
diff --git a/src/routes/dashboard/admin/admin/users/[id]/+page.svelte b/src/routes/dashboard/admin/admin/users/[id]/+page.svelte
index 3a2e1f7..f58af57 100644
--- a/src/routes/dashboard/admin/admin/users/[id]/+page.svelte
+++ b/src/routes/dashboard/admin/admin/users/[id]/+page.svelte
@@ -9,6 +9,7 @@
let user = $derived(form?.queriedUser ?? data.queriedUser);
let hackatimePending = $state(false);
+ let currencyPending = $state(false);
let privilegesPending = $state(false);
let logoutPending = $state(false);
@@ -29,6 +30,8 @@