mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-09-08 20:26:08 -05:00
Move user upsert code to auth.ts
Pretty ugly to do it this way but otherwise server won't run and don't feel like setting ts paths for ts-node
This commit is contained in:
@@ -1,43 +0,0 @@
|
||||
import { db } from "~/utils/db.server";
|
||||
|
||||
export function upsert({
|
||||
discordId,
|
||||
discordName,
|
||||
discordDiscriminator,
|
||||
discordAvatar,
|
||||
discordRefreshToken,
|
||||
connections,
|
||||
}: {
|
||||
discordId: string;
|
||||
discordName: string;
|
||||
discordDiscriminator: string;
|
||||
discordAvatar: string | null;
|
||||
discordRefreshToken: string;
|
||||
connections: {
|
||||
twitch?: string;
|
||||
twitter?: string;
|
||||
youtubeId?: string;
|
||||
youtubeName?: string;
|
||||
} | null;
|
||||
}) {
|
||||
return db.user.upsert({
|
||||
create: {
|
||||
discordId,
|
||||
discordName,
|
||||
discordDiscriminator,
|
||||
discordAvatar,
|
||||
discordRefreshToken,
|
||||
...connections,
|
||||
},
|
||||
update: {
|
||||
discordName,
|
||||
discordDiscriminator,
|
||||
discordAvatar,
|
||||
discordRefreshToken,
|
||||
...connections,
|
||||
},
|
||||
where: {
|
||||
discordId,
|
||||
},
|
||||
});
|
||||
}
|
||||
@@ -1,53 +1,3 @@
|
||||
import type { Strategy as DiscordStrategy } from "passport-discord";
|
||||
import * as TrustRelationship from "~/models/TrustRelationship";
|
||||
import * as User from "~/models/User";
|
||||
|
||||
export async function upsertUser({
|
||||
loggedInUser,
|
||||
refreshToken,
|
||||
}: {
|
||||
loggedInUser: DiscordStrategy.Profile;
|
||||
refreshToken: string;
|
||||
}) {
|
||||
return User.upsert({
|
||||
discordId: loggedInUser.id,
|
||||
discordName: loggedInUser.username,
|
||||
discordDiscriminator: loggedInUser.discriminator,
|
||||
discordAvatar: loggedInUser.avatar,
|
||||
discordRefreshToken: refreshToken,
|
||||
connections: parseConnections(),
|
||||
});
|
||||
|
||||
function parseConnections() {
|
||||
if (!loggedInUser.connections) return null;
|
||||
|
||||
const result: {
|
||||
twitch?: string;
|
||||
twitter?: string;
|
||||
youtubeId?: string;
|
||||
youtubeName?: string;
|
||||
} = {};
|
||||
|
||||
for (const connection of loggedInUser.connections) {
|
||||
if (connection.visibility !== 1 || !connection.verified) continue;
|
||||
|
||||
switch (connection.type) {
|
||||
case "twitch":
|
||||
result.twitch = connection.name;
|
||||
break;
|
||||
case "twitter":
|
||||
result.twitter = connection.name;
|
||||
break;
|
||||
case "youtube":
|
||||
result.youtubeId = connection.id;
|
||||
result.youtubeName = connection.name;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
export function getTrustingUsers(userId: string) {
|
||||
return TrustRelationship.findManyByTrustReceiverId(userId);
|
||||
}
|
||||
export const getTrustingUsers = TrustRelationship.findManyByTrustReceiverId;
|
||||
|
||||
@@ -4,7 +4,7 @@ import session from "express-session";
|
||||
import cookieParser from "cookie-parser";
|
||||
import passport from "passport";
|
||||
import { Strategy as DiscordStrategy } from "passport-discord";
|
||||
import { upsertUser } from "../app/services/user";
|
||||
import { db } from "../app/utils/db.server";
|
||||
|
||||
export function setUpAuth(app: Express): void {
|
||||
invariant(
|
||||
@@ -30,7 +30,27 @@ export function setUpAuth(app: Express): void {
|
||||
scope: ["identify", "connections"],
|
||||
},
|
||||
function (_accessToken, refreshToken, loggedInUser, cb) {
|
||||
upsertUser({ loggedInUser, refreshToken })
|
||||
db.user
|
||||
.upsert({
|
||||
create: {
|
||||
discordId: loggedInUser.id,
|
||||
discordName: loggedInUser.username,
|
||||
discordDiscriminator: loggedInUser.discriminator,
|
||||
discordAvatar: loggedInUser.avatar,
|
||||
discordRefreshToken: refreshToken,
|
||||
...parseConnections(),
|
||||
},
|
||||
update: {
|
||||
discordName: loggedInUser.username,
|
||||
discordDiscriminator: loggedInUser.discriminator,
|
||||
discordAvatar: loggedInUser.avatar,
|
||||
discordRefreshToken: refreshToken,
|
||||
...parseConnections(),
|
||||
},
|
||||
where: {
|
||||
discordId: loggedInUser.id,
|
||||
},
|
||||
})
|
||||
.then((user) => {
|
||||
return cb(null, {
|
||||
id: user.id,
|
||||
@@ -39,6 +59,35 @@ export function setUpAuth(app: Express): void {
|
||||
});
|
||||
})
|
||||
.catch((err) => cb(err));
|
||||
|
||||
function parseConnections() {
|
||||
if (!loggedInUser.connections) return null;
|
||||
|
||||
const result: {
|
||||
twitch?: string;
|
||||
twitter?: string;
|
||||
youtubeId?: string;
|
||||
youtubeName?: string;
|
||||
} = {};
|
||||
|
||||
for (const connection of loggedInUser.connections) {
|
||||
if (connection.visibility !== 1 || !connection.verified) continue;
|
||||
|
||||
switch (connection.type) {
|
||||
case "twitch":
|
||||
result.twitch = connection.name;
|
||||
break;
|
||||
case "twitter":
|
||||
result.twitter = connection.name;
|
||||
break;
|
||||
case "youtube":
|
||||
result.youtubeId = connection.id;
|
||||
result.youtubeName = connection.name;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
)
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user