mirror of
https://github.com/versia-pub/server.git
synced 2026-03-13 13:59:16 +01:00
Small refactors
This commit is contained in:
parent
2cadb68a56
commit
3b452d66aa
22 changed files with 165 additions and 76 deletions
|
|
@ -45,7 +45,7 @@ export default async (
|
|||
// TODO: Add authentication
|
||||
|
||||
// Check is Activity already exists
|
||||
const activity = await RawActivity.addIfNotExists(body);
|
||||
const activity = await RawActivity.createIfNotExists(body);
|
||||
|
||||
if (activity instanceof Response) {
|
||||
return activity;
|
||||
|
|
@ -65,7 +65,7 @@ export default async (
|
|||
return object;
|
||||
}
|
||||
|
||||
const activity = await RawActivity.addIfNotExists(body, object);
|
||||
const activity = await RawActivity.createIfNotExists(body, object);
|
||||
|
||||
if (activity instanceof Response) {
|
||||
return activity;
|
||||
|
|
@ -87,7 +87,7 @@ export default async (
|
|||
}
|
||||
|
||||
// Store the Delete event in the database
|
||||
const activity = await RawActivity.addIfNotExists(body);
|
||||
const activity = await RawActivity.createIfNotExists(body);
|
||||
|
||||
if (activity instanceof Response) {
|
||||
return activity;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
import { getUserByToken } from "@auth";
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { MatchedRoute } from "bun";
|
||||
import { Relationship } from "~database/entities/Relationship";
|
||||
|
|
@ -19,7 +18,7 @@ export default async (
|
|||
if (!token)
|
||||
return errorResponse("This method requires an authenticated user", 422);
|
||||
|
||||
const self = await getUserByToken(token);
|
||||
const self = await User.retrieveFromToken(token);
|
||||
|
||||
if (!self) return errorResponse("Unauthorized", 401);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
import { getUserByToken } from "@auth";
|
||||
import { parseRequest } from "@request";
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { MatchedRoute } from "bun";
|
||||
|
|
@ -20,7 +19,7 @@ export default async (
|
|||
if (!token)
|
||||
return errorResponse("This method requires an authenticated user", 422);
|
||||
|
||||
const self = await getUserByToken(token);
|
||||
const self = await User.retrieveFromToken(token);
|
||||
|
||||
if (!self) return errorResponse("Unauthorized", 401);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { getUserByToken } from "@auth";
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { MatchedRoute } from "bun";
|
||||
import { RawActor } from "~database/entities/RawActor";
|
||||
import { User } from "~database/entities/User";
|
||||
|
||||
/**
|
||||
* Fetch a user
|
||||
|
|
@ -13,8 +13,12 @@ export default async (
|
|||
const id = matchedRoute.params.id;
|
||||
|
||||
// Check auth token
|
||||
const token = req.headers.get("Authorization")?.split(" ")[1] || null;
|
||||
const user = await getUserByToken(token);
|
||||
const token = req.headers.get("Authorization")?.split(" ")[1];
|
||||
|
||||
if (!token)
|
||||
return errorResponse("This method requires an authenticated user", 422);
|
||||
|
||||
const user = await User.retrieveFromToken(token);
|
||||
|
||||
let foundUser: RawActor | null;
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
import { getUserByToken } from "@auth";
|
||||
import { parseRequest } from "@request";
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { MatchedRoute } from "bun";
|
||||
|
|
@ -20,7 +19,7 @@ export default async (
|
|||
if (!token)
|
||||
return errorResponse("This method requires an authenticated user", 422);
|
||||
|
||||
const self = await getUserByToken(token);
|
||||
const self = await User.retrieveFromToken(token);
|
||||
|
||||
if (!self) return errorResponse("Unauthorized", 401);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
import { getUserByToken } from "@auth";
|
||||
import { parseRequest } from "@request";
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { MatchedRoute } from "bun";
|
||||
|
|
@ -20,7 +19,7 @@ export default async (
|
|||
if (!token)
|
||||
return errorResponse("This method requires an authenticated user", 422);
|
||||
|
||||
const self = await getUserByToken(token);
|
||||
const self = await User.retrieveFromToken(token);
|
||||
|
||||
if (!self) return errorResponse("Unauthorized", 401);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
import { getUserByToken } from "@auth";
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { MatchedRoute } from "bun";
|
||||
import { Relationship } from "~database/entities/Relationship";
|
||||
|
|
@ -19,7 +18,7 @@ export default async (
|
|||
if (!token)
|
||||
return errorResponse("This method requires an authenticated user", 422);
|
||||
|
||||
const self = await getUserByToken(token);
|
||||
const self = await User.retrieveFromToken(token);
|
||||
|
||||
if (!self) return errorResponse("Unauthorized", 401);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
import { getUserByToken } from "@auth";
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { MatchedRoute } from "bun";
|
||||
import { Relationship } from "~database/entities/Relationship";
|
||||
|
|
@ -19,7 +18,7 @@ export default async (
|
|||
if (!token)
|
||||
return errorResponse("This method requires an authenticated user", 422);
|
||||
|
||||
const self = await getUserByToken(token);
|
||||
const self = await User.retrieveFromToken(token);
|
||||
|
||||
if (!self) return errorResponse("Unauthorized", 401);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
import { getUserByToken } from "@auth";
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { MatchedRoute } from "bun";
|
||||
import { Relationship } from "~database/entities/Relationship";
|
||||
|
|
@ -19,7 +18,7 @@ export default async (
|
|||
if (!token)
|
||||
return errorResponse("This method requires an authenticated user", 422);
|
||||
|
||||
const self = await getUserByToken(token);
|
||||
const self = await User.retrieveFromToken(token);
|
||||
|
||||
if (!self) return errorResponse("Unauthorized", 401);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
import { getUserByToken } from "@auth";
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { MatchedRoute } from "bun";
|
||||
import { Relationship } from "~database/entities/Relationship";
|
||||
|
|
@ -19,7 +18,7 @@ export default async (
|
|||
if (!token)
|
||||
return errorResponse("This method requires an authenticated user", 422);
|
||||
|
||||
const self = await getUserByToken(token);
|
||||
const self = await User.retrieveFromToken(token);
|
||||
|
||||
if (!self) return errorResponse("Unauthorized", 401);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
import { getUserByToken } from "@auth";
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { MatchedRoute } from "bun";
|
||||
import { Relationship } from "~database/entities/Relationship";
|
||||
|
|
@ -19,7 +18,7 @@ export default async (
|
|||
if (!token)
|
||||
return errorResponse("This method requires an authenticated user", 422);
|
||||
|
||||
const self = await getUserByToken(token);
|
||||
const self = await User.retrieveFromToken(token);
|
||||
|
||||
if (!self) return errorResponse("Unauthorized", 401);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
import { getUserByToken } from "@auth";
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { MatchedRoute } from "bun";
|
||||
import { Relationship } from "~database/entities/Relationship";
|
||||
|
|
@ -19,7 +18,7 @@ export default async (
|
|||
if (!token)
|
||||
return errorResponse("This method requires an authenticated user", 422);
|
||||
|
||||
const self = await getUserByToken(token);
|
||||
const self = await User.retrieveFromToken(token);
|
||||
|
||||
if (!self) return errorResponse("Unauthorized", 401);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
import { getUserByToken } from "@auth";
|
||||
import { parseRequest } from "@request";
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { User } from "~database/entities/User";
|
||||
|
|
@ -14,7 +13,7 @@ export default async (req: Request): Promise<Response> => {
|
|||
if (!token)
|
||||
return errorResponse("This method requires an authenticated user", 422);
|
||||
|
||||
const self = await getUserByToken(token);
|
||||
const self = await User.retrieveFromToken(token);
|
||||
|
||||
if (!self) return errorResponse("Unauthorized", 401);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
import { getUserByToken } from "@auth";
|
||||
import { parseRequest } from "@request";
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { Relationship } from "~database/entities/Relationship";
|
||||
|
|
@ -14,7 +13,7 @@ export default async (req: Request): Promise<Response> => {
|
|||
if (!token)
|
||||
return errorResponse("This method requires an authenticated user", 422);
|
||||
|
||||
const self = await getUserByToken(token);
|
||||
const self = await User.retrieveFromToken(token);
|
||||
|
||||
if (!self) return errorResponse("Unauthorized", 401);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { getUserByToken } from "@auth";
|
||||
import { getConfig } from "@config";
|
||||
import { parseRequest } from "@request";
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { User } from "~database/entities/User";
|
||||
|
||||
/**
|
||||
* Patches a user
|
||||
|
|
@ -17,27 +17,35 @@ export default async (req: Request): Promise<Response> => {
|
|||
if (!token)
|
||||
return errorResponse("This method requires an authenticated user", 422);
|
||||
|
||||
const user = await getUserByToken(token);
|
||||
const user = await User.retrieveFromToken(token);
|
||||
|
||||
if (!user) return errorResponse("Unauthorized", 401);
|
||||
|
||||
const config = getConfig();
|
||||
|
||||
const { display_name, note, avatar, header, locked, bot, discoverable } =
|
||||
await parseRequest<{
|
||||
display_name: string;
|
||||
note: string;
|
||||
avatar: File;
|
||||
header: File;
|
||||
locked: string;
|
||||
bot: string;
|
||||
discoverable: string;
|
||||
}>(req);
|
||||
|
||||
// TODO: Implement other options like field or source
|
||||
// const source_privacy = body.get("source[privacy]")?.toString() || null;
|
||||
// const source_sensitive = body.get("source[sensitive]")?.toString() || null;
|
||||
// const source_language = body.get("source[language]")?.toString() || null;
|
||||
const {
|
||||
display_name,
|
||||
note,
|
||||
avatar,
|
||||
header,
|
||||
locked,
|
||||
bot,
|
||||
discoverable,
|
||||
"source[privacy]": source_privacy,
|
||||
"source[sensitive]": source_sensitive,
|
||||
"source[language]": source_language,
|
||||
} = await parseRequest<{
|
||||
display_name: string;
|
||||
note: string;
|
||||
avatar: File;
|
||||
header: File;
|
||||
locked: string;
|
||||
bot: string;
|
||||
discoverable: string;
|
||||
"source[privacy]": string;
|
||||
"source[sensitive]": string;
|
||||
"source[language]": string;
|
||||
}>(req);
|
||||
|
||||
if (display_name) {
|
||||
// Check if within allowed display name lengths
|
||||
|
|
@ -66,6 +74,36 @@ export default async (req: Request): Promise<Response> => {
|
|||
user.note = note;
|
||||
}
|
||||
|
||||
if (source_privacy) {
|
||||
// Check if within allowed privacy values
|
||||
if (
|
||||
!["public", "unlisted", "private", "direct"].includes(
|
||||
source_privacy
|
||||
)
|
||||
) {
|
||||
return errorResponse(
|
||||
"Privacy must be one of public, unlisted, private, or direct",
|
||||
422
|
||||
);
|
||||
}
|
||||
|
||||
user.source.privacy = source_privacy;
|
||||
}
|
||||
|
||||
if (source_sensitive) {
|
||||
// Check if within allowed sensitive values
|
||||
if (source_sensitive !== "true" && source_sensitive !== "false") {
|
||||
return errorResponse("Sensitive must be a boolean", 422);
|
||||
}
|
||||
|
||||
user.source.sensitive = source_sensitive === "true";
|
||||
}
|
||||
|
||||
if (source_language) {
|
||||
// TODO: Check if proper ISO code
|
||||
user.source.language = source_language;
|
||||
}
|
||||
|
||||
if (avatar) {
|
||||
// Check if within allowed avatar length (avatar is an image)
|
||||
if (avatar.size > config.validation.max_avatar_size) {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { getUserByToken } from "@auth";
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { User } from "~database/entities/User";
|
||||
|
||||
/**
|
||||
* Patches a user
|
||||
|
|
@ -16,7 +16,7 @@ export default async (req: Request): Promise<Response> => {
|
|||
if (!token)
|
||||
return errorResponse("This method requires an authenticated user", 422);
|
||||
|
||||
const user = await getUserByToken(token);
|
||||
const user = await User.retrieveFromToken(token);
|
||||
|
||||
if (!user) return errorResponse("Unauthorized", 401);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { getUserByToken } from "@auth";
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { Application } from "~database/entities/Application";
|
||||
import { User } from "~database/entities/User";
|
||||
|
||||
/**
|
||||
* Returns OAuth2 credentials
|
||||
|
|
@ -12,7 +12,7 @@ export default async (req: Request): Promise<Response> => {
|
|||
if (!token)
|
||||
return errorResponse("This method requires an authenticated user", 422);
|
||||
|
||||
const user = await getUserByToken(token);
|
||||
const user = await User.retrieveFromToken(token);
|
||||
const application = await Application.getFromToken(token);
|
||||
|
||||
if (!user) return errorResponse("Unauthorized", 401);
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
import { getUserByToken } from "@auth";
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { MatchedRoute } from "bun";
|
||||
import { RawObject } from "~database/entities/RawObject";
|
||||
import { Status } from "~database/entities/Status";
|
||||
import { User } from "~database/entities/User";
|
||||
|
||||
/**
|
||||
* Fetch a user
|
||||
|
|
@ -15,7 +15,11 @@ export default async (
|
|||
|
||||
// Check auth token
|
||||
const token = req.headers.get("Authorization")?.split(" ")[1] || null;
|
||||
const user = await getUserByToken(token);
|
||||
|
||||
if (!token)
|
||||
return errorResponse("This method requires an authenticated user", 422);
|
||||
|
||||
const user = await User.retrieveFromToken(token);
|
||||
|
||||
// TODO: Add checks for user's permissions to view this status
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
/* eslint-disable @typescript-eslint/no-unused-vars */
|
||||
import { getUserByToken } from "@auth";
|
||||
import { getConfig } from "@config";
|
||||
import { parseRequest } from "@request";
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { Application } from "~database/entities/Application";
|
||||
import { Status } from "~database/entities/Status";
|
||||
import { User } from "~database/entities/User";
|
||||
|
||||
/**
|
||||
* Post new status
|
||||
|
|
@ -20,7 +20,7 @@ export default async (req: Request): Promise<Response> => {
|
|||
if (!token)
|
||||
return errorResponse("This method requires an authenticated user", 422);
|
||||
|
||||
const user = await getUserByToken(token);
|
||||
const user = await User.retrieveFromToken(token);
|
||||
const application = await Application.getFromToken(token);
|
||||
|
||||
if (!user) return errorResponse("Unauthorized", 401);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue