1
0
mirror of https://github.com/spacebarchat/server.git synced 2024-11-26 04:03:03 +01:00

adding connection now works

This commit is contained in:
Puyodead1 2022-12-22 10:47:32 -05:00
parent 21bfda32e4
commit 6a52e65e27
No known key found for this signature in database
GPG Key ID: A4FA4FEC0DD353FC
13 changed files with 54 additions and 41 deletions

View File

@ -25,6 +25,8 @@ import {
registerRoutes,
Sentry,
WebAuthn,
ConnectionConfig,
ConnectionLoader
} from "@fosscord/util";
import { Request, Response, Router } from "express";
import { Server, ServerOptions } from "lambert-server";
@ -64,6 +66,7 @@ export class FosscordServer extends Server {
await Config.init();
await initEvent();
await Email.init();
await ConnectionConfig.init();
await initInstance();
await Sentry.init(this.app);
WebAuthn.init();
@ -130,6 +133,8 @@ export class FosscordServer extends Server {
Sentry.errorHandler(this.app);
ConnectionLoader.loadConnections();
if (logRequests)
console.log(
red(

View File

@ -6,7 +6,7 @@ import { route } from "../../../util";
const router = Router();
router.get("/", route({}), async (req: Request, res: Response) => {
const { connection_id: connection_name } = req.params;
const { connection_name } = req.params;
const connection = ConnectionStore.connections.get(connection_name);
if (!connection)
throw FieldErrors({

View File

@ -13,7 +13,7 @@ router.post(
"/",
route({ body: "ConnectionCallbackSchema" }),
async (req: Request, res: Response) => {
const { connection_id: connection_name } = req.params;
const { connection_name } = req.params;
const connection = ConnectionStore.connections.get(connection_name);
if (!connection)
throw FieldErrors({

View File

@ -118,15 +118,10 @@ export default class BattleNetConnection extends Connection {
if (exists) return false;
await this.createConnection({
user_id: userId,
external_id: userInfo.id,
external_id: userInfo.id.toString(),
friend_sync: params.friend_sync,
name: userInfo.battletag,
revoked: false,
show_activity: false,
type: this.id,
verified: true,
visibility: 0,
integrations: [],
});
return true;
}

View File

@ -99,15 +99,10 @@ export default class GitHubConnection extends Connection {
if (exists) return false;
await this.createConnection({
user_id: userId,
external_id: userInfo.id,
external_id: userInfo.id.toString(),
friend_sync: params.friend_sync,
name: userInfo.name,
revoked: false,
show_activity: false,
type: this.id,
verified: true,
visibility: 0,
integrations: [],
});
return true;
}

View File

@ -1,7 +1,7 @@
import crypto from "crypto";
import { ConnectedAccount } from "../entities";
import { OrmUtils } from "../imports";
import { ConnectionCallbackSchema } from "../schemas";
import { ConnectedAccountSchema, ConnectionCallbackSchema } from "../schemas";
import { DiscordApiErrors } from "../util";
export default abstract class Connection {
@ -54,7 +54,7 @@ export default abstract class Connection {
this.states.delete(state);
}
async createConnection(data: any): Promise<void> {
async createConnection(data: ConnectedAccountSchema): Promise<void> {
const ca = OrmUtils.mergeDeep(new ConnectedAccount(), data);
await ca.save();
}

View File

@ -21,7 +21,6 @@ export const ConnectionConfig = {
set: function set(val: Partial<any>) {
if (!config || !val) return;
config = val.merge(config);
console.debug("config", config); // TODO: if no more issues with sql, remove this or find the reason why it's happening
return applyConfig(config);
},

View File

@ -23,7 +23,6 @@ export class ConnectionLoader {
dirs.forEach(async (x) => {
let modPath = path.resolve(path.join(root, x));
console.log(`Loading connection: ${modPath}`);
const mod = new (require(modPath).default)() as Connection;
ConnectionStore.connections.set(mod.id, mod);
@ -55,11 +54,13 @@ export class ConnectionLoader {
console.log(
`[ConnectionConfig/WARN] ${id} tried to set config=null!`,
);
await ConnectionConfig.set({
const a = {
[id]: OrmUtils.mergeDeep(
ConnectionLoader.getConnectionConfig(id) || {},
config,
),
});
};
await ConnectionConfig.set(a);
}
}

View File

@ -4,17 +4,17 @@ export class ConnectedAccountDTO {
id: string;
user_id: string;
access_token?: string;
friend_sync: boolean;
friend_sync?: boolean;
name: string;
revoked: boolean;
show_activity: boolean;
revoked?: boolean;
show_activity?: boolean;
type: string;
verified: boolean;
visibility: boolean;
integrations: string[];
metadata_: any;
metadata_visibility: boolean;
two_way_link: boolean;
verified?: boolean;
visibility?: number;
integrations?: string[];
metadata_?: any;
metadata_visibility?: number;
two_way_link?: boolean;
constructor(
connectedAccount: ConnectedAccount,

View File

@ -40,39 +40,39 @@ export class ConnectedAccount extends BaseClass {
})
user: User;
@Column({ select: false })
access_token: string;
@Column({ select: false, nullable: true })
access_token?: string;
@Column({ select: false })
friend_sync: boolean = false;
friend_sync?: boolean = false;
@Column()
name: string;
@Column({ select: false })
revoked: boolean = false;
revoked?: boolean = false;
@Column({ select: false })
show_activity: boolean = true;
show_activity?: boolean = true;
@Column()
type: string;
@Column()
verified: boolean;
verified?: boolean = true;
@Column({ select: false })
visibility: boolean = true;
visibility?: number = 0;
@Column({ type: "simple-array" })
integrations: string[];
integrations?: string[] = [];
@Column({ type: "simple-json", name: "metadata" })
metadata_: any;
@Column({ type: "simple-json", name: "metadata", nullable: true })
metadata_?: any;
@Column()
metadata_visibility: boolean = true;
metadata_visibility?: number = 0;
@Column()
two_way_link: boolean = false;
two_way_link?: boolean = false;
}

View File

@ -25,3 +25,4 @@ export * from "./dtos/index";
export * from "./schemas";
export * from "./imports";
export * from "./config";
export * from "./connections"

View File

@ -0,0 +1,16 @@
export interface ConnectedAccountSchema {
external_id: string;
user_id: string;
access_token?: string;
friend_sync?: boolean;
name: string;
revoked?: boolean;
show_activity?: boolean;
type: string;
verified?: boolean;
visibility?: number;
integrations?: string[];
metadata_?: any;
metadata_visibility?: number;
two_way_link?: boolean;
}

View File

@ -30,6 +30,7 @@ export * from "./ChannelModifySchema";
export * from "./ChannelPermissionOverwriteSchema";
export * from "./ChannelReorderSchema";
export * from "./CodesVerificationSchema";
export * from "./ConnectedAccountSchema";
export * from "./ConnectionCallbackSchema";
export * from "./DmChannelCreateSchema";
export * from "./EmojiCreateSchema";