commit
5f4e0d4262
|
@ -1186,10 +1186,42 @@ export default async function auth(req: NextApiRequest, res: NextApiResponse) {
|
||||||
providerAccountId: account?.providerAccountId,
|
providerAccountId: account?.providerAccountId,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!existingUser && newSsoUsersDisabled) {
|
if (!existingUser && newSsoUsersDisabled) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If user is already registered, link the provider
|
||||||
|
if (user.email && account) {
|
||||||
|
const findUser = await prisma.user.findFirst({
|
||||||
|
where: {
|
||||||
|
email: user.email,
|
||||||
|
},
|
||||||
|
include: {
|
||||||
|
accounts: true,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
if (findUser && findUser.accounts.length === 0) {
|
||||||
|
await prisma.account.create({
|
||||||
|
data: {
|
||||||
|
userId: findUser.id,
|
||||||
|
type: account.type,
|
||||||
|
provider: account.provider,
|
||||||
|
providerAccountId: account.providerAccountId,
|
||||||
|
id_token: account.id_token,
|
||||||
|
access_token: account.access_token,
|
||||||
|
refresh_token: account.refresh_token,
|
||||||
|
expires_at: account.expires_at,
|
||||||
|
token_type: account.token_type,
|
||||||
|
scope: account.scope,
|
||||||
|
session_state: account.session_state,
|
||||||
|
},
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
async jwt({ token, trigger, user }) {
|
async jwt({ token, trigger, user }) {
|
||||||
|
@ -1198,13 +1230,28 @@ export default async function auth(req: NextApiRequest, res: NextApiResponse) {
|
||||||
token.id = user?.id as number;
|
token.id = user?.id as number;
|
||||||
|
|
||||||
if (trigger === "signUp") {
|
if (trigger === "signUp") {
|
||||||
const checkIfUserExists = await prisma.user.findUnique({
|
const userExists = await prisma.user.findUnique({
|
||||||
where: {
|
where: {
|
||||||
id: token.id,
|
id: token.id,
|
||||||
},
|
},
|
||||||
|
include: {
|
||||||
|
accounts: true,
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
if (checkIfUserExists && !checkIfUserExists.username) {
|
// Verify SSO user email
|
||||||
|
if (userExists && userExists.accounts.length > 0) {
|
||||||
|
await prisma.user.update({
|
||||||
|
where: {
|
||||||
|
id: userExists.id,
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
emailVerified: new Date(),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (userExists && !userExists.username) {
|
||||||
const autoGeneratedUsername =
|
const autoGeneratedUsername =
|
||||||
"user" + Math.round(Math.random() * 1000000000);
|
"user" + Math.round(Math.random() * 1000000000);
|
||||||
|
|
||||||
|
@ -1240,6 +1287,8 @@ export default async function auth(req: NextApiRequest, res: NextApiResponse) {
|
||||||
async session({ session, token }) {
|
async session({ session, token }) {
|
||||||
session.user.id = token.id;
|
session.user.id = token.id;
|
||||||
|
|
||||||
|
console.log("session", session);
|
||||||
|
|
||||||
if (STRIPE_SECRET_KEY) {
|
if (STRIPE_SECRET_KEY) {
|
||||||
const user = await prisma.user.findUnique({
|
const user = await prisma.user.findUnique({
|
||||||
where: {
|
where: {
|
||||||
|
@ -1251,6 +1300,7 @@ export default async function auth(req: NextApiRequest, res: NextApiResponse) {
|
||||||
});
|
});
|
||||||
|
|
||||||
if (user) {
|
if (user) {
|
||||||
|
//
|
||||||
const subscribedUser = await verifySubscription(user);
|
const subscribedUser = await verifySubscription(user);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Ŝarĝante…
Reference in New Issue