fix: hide presets behind permissions
This commit is contained in:
@@ -35,6 +35,7 @@ export default async function ServerPage({ params }: ServerPageProps) {
|
||||
configurations={configurations}
|
||||
statistics={statistics}
|
||||
leaderboard={leaderboard}
|
||||
user={session.user!}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -13,7 +13,7 @@ import { ServerLogViewer } from '@/components/server/ServerLogViewer';
|
||||
import { PresetPickerModal } from '@/components/server/PresetPickerModal';
|
||||
import { SavePresetModal } from '@/components/server/SavePresetModal';
|
||||
import { useState } from 'react';
|
||||
import { StateHistoryStats } from '@/lib/schemas';
|
||||
import { StateHistoryStats, hasPermission, type User } from '@/lib/schemas';
|
||||
import { Leaderboard } from '@/lib/schemas/leaderboard';
|
||||
import {
|
||||
bulkUpdateConfigurationsAction,
|
||||
@@ -25,6 +25,7 @@ interface ServerConfigurationTabsProps {
|
||||
configurations: Configurations;
|
||||
statistics: StateHistoryStats;
|
||||
leaderboard: Leaderboard;
|
||||
user: User;
|
||||
}
|
||||
const tabs = [
|
||||
{ id: ServerTab.statistics, name: 'Statistics', icon: '📊' },
|
||||
@@ -50,8 +51,11 @@ export function ServerConfigurationTabs({
|
||||
serverId,
|
||||
configurations,
|
||||
statistics,
|
||||
leaderboard
|
||||
leaderboard,
|
||||
user
|
||||
}: ServerConfigurationTabsProps) {
|
||||
const canViewPresets = hasPermission(user, 'preset.view');
|
||||
const canCreatePresets = hasPermission(user, 'preset.create');
|
||||
const [currentTab, setCurrentTab] = useState(ServerTab.statistics);
|
||||
|
||||
const [configData, setConfigData] = useState(configurations.configuration);
|
||||
@@ -243,6 +247,7 @@ export function ServerConfigurationTabs({
|
||||
/>
|
||||
Restart after saving
|
||||
</label>
|
||||
{canCreatePresets && (
|
||||
<button
|
||||
onClick={() => setIsSavePresetModalOpen(true)}
|
||||
disabled={isSubmitting}
|
||||
@@ -250,6 +255,8 @@ export function ServerConfigurationTabs({
|
||||
>
|
||||
Save as Preset
|
||||
</button>
|
||||
)}
|
||||
{canViewPresets && (
|
||||
<button
|
||||
onClick={() => setIsPresetModalOpen(true)}
|
||||
disabled={isSubmitting}
|
||||
@@ -257,6 +264,7 @@ export function ServerConfigurationTabs({
|
||||
>
|
||||
Load Preset
|
||||
</button>
|
||||
)}
|
||||
<button
|
||||
onClick={handleSaveAll}
|
||||
disabled={isSubmitting || dirtyConfigs.size === 0}
|
||||
|
||||
@@ -24,7 +24,7 @@ export type EmbeddedServer = z.infer<typeof embeddedServerSchema>;
|
||||
|
||||
export const activityLogSchema = z.object({
|
||||
id: z.string(),
|
||||
serverId: z.string(),
|
||||
serverId: z.string().nullable(),
|
||||
server: embeddedServerSchema.optional(),
|
||||
userId: z.string(),
|
||||
username: z.string(),
|
||||
|
||||
Reference in New Issue
Block a user