mirror of
https://github.com/Litlyx/litlyx
synced 2025-12-11 16:28:37 +01:00
new selfhosted version
This commit is contained in:
65
dashboard/server/api/auth/google/authenticate.ts
Normal file
65
dashboard/server/api/auth/google/authenticate.ts
Normal file
@@ -0,0 +1,65 @@
|
||||
import { UserModel } from "~/shared/schema/UserSchema"
|
||||
|
||||
|
||||
|
||||
export default defineOAuthGoogleEventHandler({
|
||||
|
||||
async onSuccess(event, result) {
|
||||
|
||||
const user = await UserModel.findOne({
|
||||
email: result.user.email
|
||||
});
|
||||
|
||||
if (!user) {
|
||||
|
||||
const newUser = await UserModel.create({
|
||||
email: result.user.email,
|
||||
name: result.user.name ?? 'NO_NAME',
|
||||
given_name: result.user.given_name ?? 'NO_NAME',
|
||||
locale: result.user.locale ?? '',
|
||||
picture: ''
|
||||
})
|
||||
|
||||
await replaceUserSession(event, {
|
||||
user: {
|
||||
email: newUser.email,
|
||||
name: newUser.name
|
||||
},
|
||||
secure: {
|
||||
user_id: newUser.id
|
||||
},
|
||||
v: '0.0.1'
|
||||
});
|
||||
|
||||
const tRpc = useTRPC();
|
||||
|
||||
const customer = await tRpc.payments.customer.create.mutate({ email: newUser.email });
|
||||
await tRpc.payments.subscription.activate.mutate({
|
||||
user_id: newUser._id.toString(),
|
||||
customer_id: customer.customer_id,
|
||||
plan_tag: 'FREE_TRIAL_LITLYX_PRO'
|
||||
});
|
||||
|
||||
setImmediate(() => {
|
||||
tRpc.emails.email.send_trial_1_started.mutate({ email: newUser.email });
|
||||
});
|
||||
|
||||
return sendRedirect(event, '/')
|
||||
}
|
||||
|
||||
await replaceUserSession(event, {
|
||||
user: {
|
||||
email: user.email,
|
||||
name: user.name
|
||||
},
|
||||
secure: {
|
||||
user_id: user.id
|
||||
},
|
||||
v: '0.0.1'
|
||||
});
|
||||
|
||||
return sendRedirect(event, '/')
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user