feat: add actual user for trpc wss-dev-server (#261)

* feat: add actual user for trpc wss-dev-server #233

* chore: address pull request feedback

* fix: deepsource issue
This commit is contained in:
Meier Lukas
2024-03-25 18:57:59 +01:00
committed by GitHub
parent 87808c1349
commit 058a8c4776
15 changed files with 174 additions and 69 deletions

View File

@@ -155,9 +155,9 @@ export const boardRouter = createTRPCRouter({
save: publicProcedure
.input(validation.board.save)
.mutation(async ({ input, ctx }) => {
await ctx.db.transaction(async (tx) => {
await ctx.db.transaction(async (transaction) => {
const dbBoard = await getFullBoardWithWhere(
tx,
transaction,
eq(boards.id, input.id),
);
@@ -167,7 +167,7 @@ export const boardRouter = createTRPCRouter({
);
if (addedSections.length > 0) {
await tx.insert(sections).values(
await transaction.insert(sections).values(
addedSections.map((section) => ({
id: section.id,
kind: section.kind,
@@ -188,7 +188,7 @@ export const boardRouter = createTRPCRouter({
const addedItems = filterAddedItems(inputItems, dbItems);
if (addedItems.length > 0) {
await tx.insert(items).values(
await transaction.insert(items).values(
addedItems.map((item) => ({
id: item.id,
kind: item.kind,
@@ -226,7 +226,7 @@ export const boardRouter = createTRPCRouter({
);
if (addedIntegrationRelations.length > 0) {
await tx.insert(integrationItems).values(
await transaction.insert(integrationItems).values(
addedIntegrationRelations.map((relation) => ({
itemId: relation.itemId,
integrationId: relation.integrationId,
@@ -237,7 +237,7 @@ export const boardRouter = createTRPCRouter({
const updatedItems = filterUpdatedItems(inputItems, dbItems);
for (const item of updatedItems) {
await tx
await transaction
.update(items)
.set({
kind: item.kind,
@@ -260,7 +260,7 @@ export const boardRouter = createTRPCRouter({
const prev = dbBoard.sections.find(
(dbSection) => dbSection.id === section.id,
);
await tx
await transaction
.update(sections)
.set({
position: section.position,
@@ -282,7 +282,7 @@ export const boardRouter = createTRPCRouter({
);
for (const relation of removedIntegrationRelations) {
await tx
await transaction
.delete(integrationItems)
.where(
and(
@@ -296,7 +296,7 @@ export const boardRouter = createTRPCRouter({
const itemIds = removedItems.map((item) => item.id);
if (itemIds.length > 0) {
await tx.delete(items).where(inArray(items.id, itemIds));
await transaction.delete(items).where(inArray(items.id, itemIds));
}
const removedSections = filterRemovedItems(
@@ -306,7 +306,9 @@ export const boardRouter = createTRPCRouter({
const sectionIds = removedSections.map((section) => section.id);
if (sectionIds.length > 0) {
await tx.delete(sections).where(inArray(sections.id, sectionIds));
await transaction
.delete(sections)
.where(inArray(sections.id, sectionIds));
}
});
}),
@@ -340,14 +342,14 @@ export const boardRouter = createTRPCRouter({
savePermissions: publicProcedure
.input(validation.board.savePermissions)
.mutation(async ({ input, ctx }) => {
await ctx.db.transaction(async (tx) => {
await tx
await ctx.db.transaction(async (transaction) => {
await transaction
.delete(boardPermissions)
.where(eq(boardPermissions.boardId, input.id));
if (input.permissions.length === 0) {
return;
}
await tx.insert(boardPermissions).values(
await transaction.insert(boardPermissions).values(
input.permissions.map((permission) => ({
userId: permission.user.id,
permission: permission.permission,

View File

@@ -245,19 +245,27 @@ const key = Buffer.from(
//Encrypting text
export function encryptSecret(text: string): `${string}.${string}` {
const iv = crypto.randomBytes(16);
const cipher = crypto.createCipheriv(algorithm, Buffer.from(key), iv);
const initializationVector = crypto.randomBytes(16);
const cipher = crypto.createCipheriv(
algorithm,
Buffer.from(key),
initializationVector,
);
let encrypted = cipher.update(text);
encrypted = Buffer.concat([encrypted, cipher.final()]);
return `${encrypted.toString("hex")}.${iv.toString("hex")}`;
return `${encrypted.toString("hex")}.${initializationVector.toString("hex")}`;
}
// Decrypting text
function decryptSecret(value: `${string}.${string}`) {
const [data, dataIv] = value.split(".") as [string, string];
const iv = Buffer.from(dataIv, "hex");
const initializationVector = Buffer.from(dataIv, "hex");
const encryptedText = Buffer.from(data, "hex");
const decipher = crypto.createDecipheriv(algorithm, Buffer.from(key), iv);
const decipher = crypto.createDecipheriv(
algorithm,
Buffer.from(key),
initializationVector,
);
let decrypted = decipher.update(encryptedText);
decrypted = Buffer.concat([decrypted, decipher.final()]);
return decrypted.toString();