mirror of
https://github.com/Litlyx/litlyx
synced 2025-12-11 08:18:37 +01:00
new selfhosted version
This commit is contained in:
@@ -1,28 +1,49 @@
|
||||
|
||||
import { createUserJwt, readRegisterJwt } from '~/server/AuthManager';
|
||||
import { UserModel } from '@schema/UserSchema';
|
||||
import { PasswordModel } from '@schema/PasswordSchema';
|
||||
import { EmailService } from '@services/EmailService';
|
||||
import { EmailServiceHelper } from '~/server/services/EmailServiceHelper';
|
||||
import { RegisterModel } from '~/shared/schema/RegisterSchema';
|
||||
|
||||
export default defineEventHandler(async event => {
|
||||
|
||||
const { register_code } = getQuery(event);
|
||||
//TODO: SELFHOST
|
||||
|
||||
const { code } = getQuery(event);
|
||||
|
||||
const data = readRegisterJwt(register_code as string);
|
||||
if (!data) return setResponseStatus(event, 400, 'Error decoding register_code');
|
||||
const registerTarget = await RegisterModel.findOne({ code });
|
||||
if (!registerTarget) throw createError({ status: 400, message: 'Code not valid' });
|
||||
|
||||
const userExist = await UserModel.exists({ email: registerTarget.email });
|
||||
if (userExist) throw createError({ status: 400, message: 'Email already registered' });
|
||||
|
||||
await PasswordModel.updateOne({ email: registerTarget.email }, { password: registerTarget.password }, { upsert: true });
|
||||
|
||||
const user = await UserModel.create({ email: registerTarget.email, given_name: '', name: 'EmailLogin', locale: '', picture: '', created_at: Date.now() });
|
||||
|
||||
const tRpc = useTRPC();
|
||||
|
||||
const customer = await tRpc.payments.customer.create.mutate({ email: user.email });
|
||||
await tRpc.payments.subscription.activate.mutate({ user_id: user._id.toString(), customer_id: customer.customer_id, plan_tag: 'FREE_TRIAL_LITLYX_PRO' });
|
||||
|
||||
setImmediate(() => {
|
||||
tRpc.emails.brevo.addToBrevoList.mutate({ email: user.email });
|
||||
});
|
||||
|
||||
setImmediate(() => {
|
||||
tRpc.emails.email.send_trial_1_started.mutate({ email: user.email });
|
||||
});
|
||||
|
||||
await replaceUserSession(event, {
|
||||
user: {
|
||||
email: user.email,
|
||||
name: user.name
|
||||
},
|
||||
secure: {
|
||||
user_id: user.id
|
||||
},
|
||||
v: '0.0.1'
|
||||
});
|
||||
|
||||
return sendRedirect(event, '/');
|
||||
|
||||
try {
|
||||
await PasswordModel.create({ email: data.email, password: data.password })
|
||||
await UserModel.create({ email: data.email, given_name: '', name: 'EmailLogin', locale: '', picture: '', created_at: Date.now() });
|
||||
setImmediate(() => {
|
||||
const emailData = EmailService.getEmailServerInfo('welcome', { target: data.email });
|
||||
EmailServiceHelper.sendEmail(emailData);
|
||||
});
|
||||
const jwt = createUserJwt({ email: data.email, name: 'EmailLogin' });
|
||||
return sendRedirect(event, `https://dashboard.litlyx.com/jwt_login?jwt_login=${jwt}`);
|
||||
} catch (ex) {
|
||||
return setResponseStatus(event, 400, 'Error creating user');
|
||||
}
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user