2 Replies
[Error [APIError]: ] {
status: 'UNAUTHORIZED',
body: undefined,
headers: {},
statusCode: 401
}
[Error [APIError]: ] {
status: 'UNAUTHORIZED',
body: undefined,
headers: {},
statusCode: 401
}
import { auth } from '@/lib/auth';
import { z } from 'zod';
import { headers } from 'next/headers';
export async function POST(req: Request) {
try {
const body = await req.json();
const createOrgSchema = z.object({
name: z.string().min(1),
slug: z.string().min(1),
logo: z.string().optional(),
});
const result = createOrgSchema.safeParse(body);
if (!result.success) {
return Response.json(
{ error: 'invalid data', details: result.error.issues },
{ status: 400 }
);
}
const { name, slug, logo } = result.data;
const organizationSlug = slug
.toLowerCase()
.trim()
.normalize('NFD')
.replace(/[\u0300-\u036f]/g, '')
.replace(/[^a-z0-9]+/g, '-')
.replace(/^-+|-+$/g, '');
const isSlugAvaliable = await auth.api.checkOrganizationSlug({
body: {
slug: organizationSlug,
},
});
if (!isSlugAvaliable) {
return Response.json({ error: 'Slug is taken.' }, { status: 400 });
}
await auth.api.createOrganization({
headers: await headers(),
body: {
name: name,
slug: organizationSlug,
},
});
return new Response(null, { status: 201 });
} catch (error: any) {
console.log(error);
if (error.statusCode) {
return Response.json(error, { status: error.statusCode });
}
return Response.json(error, { status: 400 });
}
}
import { auth } from '@/lib/auth';
import { z } from 'zod';
import { headers } from 'next/headers';
export async function POST(req: Request) {
try {
const body = await req.json();
const createOrgSchema = z.object({
name: z.string().min(1),
slug: z.string().min(1),
logo: z.string().optional(),
});
const result = createOrgSchema.safeParse(body);
if (!result.success) {
return Response.json(
{ error: 'invalid data', details: result.error.issues },
{ status: 400 }
);
}
const { name, slug, logo } = result.data;
const organizationSlug = slug
.toLowerCase()
.trim()
.normalize('NFD')
.replace(/[\u0300-\u036f]/g, '')
.replace(/[^a-z0-9]+/g, '-')
.replace(/^-+|-+$/g, '');
const isSlugAvaliable = await auth.api.checkOrganizationSlug({
body: {
slug: organizationSlug,
},
});
if (!isSlugAvaliable) {
return Response.json({ error: 'Slug is taken.' }, { status: 400 });
}
await auth.api.createOrganization({
headers: await headers(),
body: {
name: name,
slug: organizationSlug,
},
});
return new Response(null, { status: 201 });
} catch (error: any) {
console.log(error);
if (error.statusCode) {
return Response.json(error, { status: error.statusCode });
}
return Response.json(error, { status: 400 });
}
}
pass
headers
to your auth.api.checkOrganizationSlug
fn
It may be under fetchOptions.headers
if you can't find it.