mirror of
https://github.com/xCyanGrizzly/DragonsStash.git
synced 2026-05-11 06:11:15 +00:00
Merge pull request #8 from xCyanGrizzly/copilot/fix-admin-account-login
Fix first user not getting ADMIN role when signing up via OAuth
This commit is contained in:
@@ -18,7 +18,12 @@ export const { auth, handlers, signIn, signOut } = NextAuth({
|
|||||||
async jwt({ token, user }) {
|
async jwt({ token, user }) {
|
||||||
if (user) {
|
if (user) {
|
||||||
token.id = user.id!;
|
token.id = user.id!;
|
||||||
token.role = user.role ?? "USER";
|
// Fetch the role from the database to pick up first-user ADMIN promotion
|
||||||
|
const dbUser = await prisma.user.findUnique({
|
||||||
|
where: { id: user.id! },
|
||||||
|
select: { role: true },
|
||||||
|
});
|
||||||
|
token.role = dbUser?.role ?? user.role ?? "USER";
|
||||||
}
|
}
|
||||||
return token;
|
return token;
|
||||||
},
|
},
|
||||||
@@ -33,6 +38,18 @@ export const { auth, handlers, signIn, signOut } = NextAuth({
|
|||||||
events: {
|
events: {
|
||||||
async createUser({ user }) {
|
async createUser({ user }) {
|
||||||
if (user.id) {
|
if (user.id) {
|
||||||
|
// First user to register becomes ADMIN (self-hosted owner)
|
||||||
|
const adminExists = await prisma.user.findFirst({
|
||||||
|
where: { role: "ADMIN" },
|
||||||
|
select: { id: true },
|
||||||
|
});
|
||||||
|
if (!adminExists) {
|
||||||
|
await prisma.user.update({
|
||||||
|
where: { id: user.id },
|
||||||
|
data: { role: "ADMIN" },
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
await prisma.userSettings.upsert({
|
await prisma.userSettings.upsert({
|
||||||
where: { userId: user.id },
|
where: { userId: user.id },
|
||||||
update: {},
|
update: {},
|
||||||
|
|||||||
Reference in New Issue
Block a user