mirror of
https://github.com/woodchen-ink/Q58Connect.git
synced 2025-07-18 14:01:55 +08:00
refactor: update user field
This commit is contained in:
parent
b8f7fcf180
commit
ff0baffce8
@ -9,8 +9,10 @@ CREATE TABLE "users" (
|
|||||||
"name" TEXT,
|
"name" TEXT,
|
||||||
"avatarUrl" TEXT,
|
"avatarUrl" TEXT,
|
||||||
"role" "UserRole" NOT NULL DEFAULT 'USER',
|
"role" "UserRole" NOT NULL DEFAULT 'USER',
|
||||||
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
"moderator" BOOLEAN NOT NULL DEFAULT false,
|
||||||
"updated_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
"groups" TEXT[],
|
||||||
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||||
|
|
||||||
CONSTRAINT "users_pkey" PRIMARY KEY ("id")
|
CONSTRAINT "users_pkey" PRIMARY KEY ("id")
|
||||||
);
|
);
|
||||||
@ -26,6 +28,8 @@ CREATE TABLE "clients" (
|
|||||||
"clientId" TEXT NOT NULL,
|
"clientId" TEXT NOT NULL,
|
||||||
"clientSecret" TEXT NOT NULL,
|
"clientSecret" TEXT NOT NULL,
|
||||||
"userId" TEXT NOT NULL,
|
"userId" TEXT NOT NULL,
|
||||||
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||||
|
|
||||||
CONSTRAINT "clients_pkey" PRIMARY KEY ("id")
|
CONSTRAINT "clients_pkey" PRIMARY KEY ("id")
|
||||||
);
|
);
|
||||||
|
@ -19,6 +19,8 @@ model User {
|
|||||||
name String?
|
name String?
|
||||||
avatarUrl String?
|
avatarUrl String?
|
||||||
role UserRole @default(USER)
|
role UserRole @default(USER)
|
||||||
|
moderator Boolean @default(false)
|
||||||
|
groups String[]
|
||||||
|
|
||||||
clients Client[]
|
clients Client[]
|
||||||
codes Code[]
|
codes Code[]
|
||||||
@ -26,8 +28,8 @@ model User {
|
|||||||
|
|
||||||
authorizations Authorization[]
|
authorizations Authorization[]
|
||||||
|
|
||||||
createdAt DateTime @default(now()) @map(name: "created_at")
|
createdAt DateTime @default(now())
|
||||||
updatedAt DateTime @default(now()) @map(name: "updated_at")
|
updatedAt DateTime @updatedAt
|
||||||
|
|
||||||
@@map("users")
|
@@map("users")
|
||||||
}
|
}
|
||||||
@ -51,6 +53,9 @@ model Client {
|
|||||||
|
|
||||||
authorizations Authorization[]
|
authorizations Authorization[]
|
||||||
|
|
||||||
|
createdAt DateTime @default(now())
|
||||||
|
updatedAt DateTime @updatedAt
|
||||||
|
|
||||||
@@map("clients")
|
@@map("clients")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,8 +25,10 @@ export async function GET(req: Request) {
|
|||||||
id: user.id,
|
id: user.id,
|
||||||
email: user.email,
|
email: user.email,
|
||||||
username: user.username,
|
username: user.username,
|
||||||
admin: user.role == UserRole.ADMIN,
|
|
||||||
avatar_url: user.avatarUrl,
|
avatar_url: user.avatarUrl,
|
||||||
name: user.name,
|
name: user.name,
|
||||||
|
admin: user.role == UserRole.ADMIN,
|
||||||
|
moderator: user.moderator,
|
||||||
|
groups: user.groups,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -33,6 +33,8 @@ export async function discourseCallbackVerify(sso: string, sig: string) {
|
|||||||
const name = searchParams.get("name");
|
const name = searchParams.get("name");
|
||||||
const avatarUrl = searchParams.get("avatar_url");
|
const avatarUrl = searchParams.get("avatar_url");
|
||||||
const isAdmin = searchParams.get("admin") == "true";
|
const isAdmin = searchParams.get("admin") == "true";
|
||||||
|
const moderator = searchParams.get("moderator") == "true";
|
||||||
|
const groups = searchParams.get("groups")?.split(",");
|
||||||
if (!id || !email || !username) {
|
if (!id || !email || !username) {
|
||||||
throw new Error("User not found.");
|
throw new Error("User not found.");
|
||||||
}
|
}
|
||||||
@ -47,7 +49,8 @@ export async function discourseCallbackVerify(sso: string, sig: string) {
|
|||||||
name,
|
name,
|
||||||
avatarUrl,
|
avatarUrl,
|
||||||
role: isAdmin ? UserRole.ADMIN : UserRole.USER,
|
role: isAdmin ? UserRole.ADMIN : UserRole.USER,
|
||||||
updatedAt: new Date(),
|
moderator,
|
||||||
|
groups,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
// 创建
|
// 创建
|
||||||
@ -58,8 +61,8 @@ export async function discourseCallbackVerify(sso: string, sig: string) {
|
|||||||
name,
|
name,
|
||||||
avatarUrl,
|
avatarUrl,
|
||||||
role: isAdmin ? UserRole.ADMIN : UserRole.USER,
|
role: isAdmin ? UserRole.ADMIN : UserRole.USER,
|
||||||
createdAt: new Date(),
|
moderator,
|
||||||
updatedAt: new Date(),
|
groups,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,6 +21,7 @@ export async function getClientsByUserId(userId: string) {
|
|||||||
clientId: true,
|
clientId: true,
|
||||||
clientSecret: true,
|
clientSecret: true,
|
||||||
redirectUri: true,
|
redirectUri: true,
|
||||||
|
createdAt: true,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,7 @@
|
|||||||
import { User } from "@prisma/client";
|
import { Prisma as PrismaType } from "@prisma/client";
|
||||||
|
|
||||||
import { prisma } from "../prisma";
|
import { prisma } from "../prisma";
|
||||||
|
|
||||||
export interface UpdateUserForm extends Omit<User, "id" | "createdAt"> {}
|
|
||||||
|
|
||||||
export const getUserById = async (id: string) => {
|
export const getUserById = async (id: string) => {
|
||||||
try {
|
try {
|
||||||
const user = await prisma.user.findUnique({ where: { id } });
|
const user = await prisma.user.findUnique({ where: { id } });
|
||||||
@ -14,7 +12,10 @@ export const getUserById = async (id: string) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export const updateUser = async (userId: string, data: UpdateUserForm) => {
|
export const updateUser = async (
|
||||||
|
userId: string,
|
||||||
|
data: PrismaType.UserUpdateInput,
|
||||||
|
) => {
|
||||||
try {
|
try {
|
||||||
const session = await prisma.user.update({
|
const session = await prisma.user.update({
|
||||||
where: {
|
where: {
|
||||||
@ -28,7 +29,7 @@ export const updateUser = async (userId: string, data: UpdateUserForm) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export const createUser = async (data: User) => {
|
export const createUser = async (data: PrismaType.UserCreateInput) => {
|
||||||
try {
|
try {
|
||||||
const session = await prisma.user.create({
|
const session = await prisma.user.create({
|
||||||
data,
|
data,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user