Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4b300f3466 | |||
| a8cd2cd4d4 |
@@ -21,3 +21,6 @@ KINESCOPE_API_KEY=""
|
||||
|
||||
# Internal access-provisioning (payment-router → /api/internal/grant)
|
||||
INTERNAL_GRANT_SECRET=""
|
||||
|
||||
# Freemium: slug бесплатного курса, в который авто-записываем новых юзеров при регистрации
|
||||
FREE_COURSE_SLUG=obsidian-start
|
||||
|
||||
@@ -76,7 +76,7 @@ export async function POST(request: NextRequest) {
|
||||
process.env.BETTER_AUTH_URL ??
|
||||
`https://${request.headers.get("host")}`;
|
||||
|
||||
return auth.handler(
|
||||
const response = await auth.handler(
|
||||
new Request(`${baseUrl}/api/auth/sign-up/email`, {
|
||||
method: "POST",
|
||||
headers: new Headers({
|
||||
@@ -86,4 +86,41 @@ export async function POST(request: NextRequest) {
|
||||
body: JSON.stringify({ name, email, password, callbackURL: "/dashboard" }),
|
||||
})
|
||||
);
|
||||
|
||||
// Freemium: при успешной регистрации авто-записываем в бесплатный курс.
|
||||
// Не валим регистрацию, если enroll не удался.
|
||||
if (response.ok && email) {
|
||||
try {
|
||||
const freeSlug = process.env.FREE_COURSE_SLUG ?? "obsidian-start";
|
||||
const [user, course] = await Promise.all([
|
||||
prisma.user.findFirst({
|
||||
where: { email: { equals: email, mode: "insensitive" } },
|
||||
select: { id: true },
|
||||
}),
|
||||
prisma.course.findUnique({
|
||||
where: { slug: freeSlug },
|
||||
select: { id: true },
|
||||
}),
|
||||
]);
|
||||
if (user && course) {
|
||||
await prisma.courseEnrollment.upsert({
|
||||
where: { userId_courseId: { userId: user.id, courseId: course.id } },
|
||||
update: {},
|
||||
create: { userId: user.id, courseId: course.id },
|
||||
});
|
||||
await prisma.accessLog.create({
|
||||
data: {
|
||||
courseId: course.id,
|
||||
userId: user.id,
|
||||
action: "granted",
|
||||
method: "free-signup",
|
||||
},
|
||||
});
|
||||
}
|
||||
} catch (e) {
|
||||
console.error("free-enroll failed", e);
|
||||
}
|
||||
}
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user