server creation
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
'use server';
|
||||
|
||||
import { redirect, RedirectType } from 'next/navigation';
|
||||
import { loginUser } from '@/lib/api/server/auth';
|
||||
import { login, logout } from '@/lib/auth/server';
|
||||
import { redirect } from 'next/navigation';
|
||||
import { loginUser, getOpenToken } from '@/lib/api/server/auth';
|
||||
import { login } from '@/lib/auth/server';
|
||||
|
||||
export type LoginResult = {
|
||||
success: boolean;
|
||||
@@ -24,7 +24,8 @@ export async function loginAction(prevState: LoginResult, formData: FormData) {
|
||||
const result = await loginUser(username, password);
|
||||
|
||||
if (result.token && result.user) {
|
||||
await login(result.token, result.user);
|
||||
const openToken = await getOpenToken(result.token);
|
||||
await login(result.token, result.user, openToken);
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
|
||||
60
src/lib/actions/server-management.ts
Normal file
60
src/lib/actions/server-management.ts
Normal file
@@ -0,0 +1,60 @@
|
||||
'use server';
|
||||
|
||||
import { revalidatePath } from 'next/cache';
|
||||
import { requireAuth } from '@/lib/auth/server';
|
||||
import { createServer, deleteServer } from '@/lib/api/server/servers';
|
||||
|
||||
export type ServerActionResult = {
|
||||
success: boolean;
|
||||
message: string;
|
||||
data?: any;
|
||||
};
|
||||
|
||||
export async function createServerAction(
|
||||
prevState: ServerActionResult,
|
||||
formData: FormData
|
||||
): Promise<ServerActionResult> {
|
||||
try {
|
||||
const session = await requireAuth();
|
||||
const name = formData.get('name') as string;
|
||||
|
||||
if (!name?.trim()) {
|
||||
return {
|
||||
success: false,
|
||||
message: 'Server name is required'
|
||||
};
|
||||
}
|
||||
|
||||
const server = await createServer(session.token!, name.trim());
|
||||
revalidatePath('/dashboard');
|
||||
|
||||
return {
|
||||
success: true,
|
||||
message: 'Server creation started',
|
||||
data: server
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
message: error instanceof Error ? error.message : 'Failed to create server'
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
export async function deleteServerAction(serverId: string): Promise<ServerActionResult> {
|
||||
try {
|
||||
const session = await requireAuth();
|
||||
await deleteServer(session.token!, serverId);
|
||||
revalidatePath('/dashboard');
|
||||
|
||||
return {
|
||||
success: true,
|
||||
message: 'Server deleted successfully'
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
message: error instanceof Error ? error.message : 'Failed to delete server'
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user