Fixing user roles building issue.

This commit is contained in:
Bradley Shellnut 2024-07-12 15:37:05 -07:00
parent a45a24fdea
commit a90a9d4fd6
3 changed files with 17 additions and 16 deletions

View file

@ -3,7 +3,7 @@ import { redirect } from 'sveltekit-flash-message/server';
import type { PageServerLoad } from './$types';
import { forbiddenMessage, notSignedInMessage } from '$lib/flashMessages';
import db from '../../../../../../db';
import { roles, user_roles, users } from '$db/schema';
import { roles, userRoles, users } from '$db/schema';
export const load: PageServerLoad = async (event) => {
const { params } = event;
@ -17,7 +17,7 @@ export const load: PageServerLoad = async (event) => {
const foundUser = await db.query.users.findFirst({
where: eq(users.cuid, id),
with: {
user_roles: {
userRoles: {
with: {
role: {
columns: {
@ -30,7 +30,7 @@ export const load: PageServerLoad = async (event) => {
},
});
const containsAdminRole = foundUser?.user_roles?.some(
const containsAdminRole = foundUser?.userRoles?.some(
(user_role) => user_role?.role?.name === 'admin',
);
if (!containsAdminRole) {
@ -38,7 +38,7 @@ export const load: PageServerLoad = async (event) => {
redirect(302, '/login', notSignedInMessage, event);
}
const currentRoleIds = foundUser?.user_roles?.map((user_role) => user_role?.role.cuid) || [];
const currentRoleIds = foundUser?.userRoles?.map((user_role) => user_role?.role.cuid) || [];
let availableRoles: { name: string; cuid: string }[] = [];
if (currentRoleIds?.length > 0) {
availableRoles = await db.query.roles.findMany({
@ -65,8 +65,8 @@ export const actions = {
redirect(302, '/login', notSignedInMessage, event);
}
const userRoles = await db.query.user_roles.findMany({
where: eq(user_roles.user_id, user.id),
const userRoles = await db.query.userRoles.findMany({
where: eq(userRoles.user_id, user.id),
with: {
role: {
columns: {
@ -92,7 +92,7 @@ export const actions = {
});
console.log('dbRole', dbRole);
if (dbRole) {
await db.insert(user_roles).values({
await db.insert(userRoles).values({
user_id: user.id,
role_id: dbRole.id,
});
@ -108,8 +108,8 @@ export const actions = {
redirect(302, '/login', notSignedInMessage, event);
}
const userRoles = await db.query.user_roles.findMany({
where: eq(user_roles.user_id, user.id),
const userRoles = await db.query.userRoles.findMany({
where: eq(userRoles.user_id, user.id),
with: {
role: {
columns: {
@ -133,11 +133,11 @@ export const actions = {
console.log('dbRole', dbRole);
if (dbRole) {
await db
.delete(user_roles)
.where(and(eq(user_roles.user_id, user.id), eq(user_roles.role_id, dbRole.id)));
.delete(userRoles)
.where(and(eq(userRoles.user_id, user.id), eq(userRoles.role_id, dbRole.id)));
redirect({ type: 'success', message: `Successfully removed role ${dbRole.name}!` }, event);
} else {
redirect({ type: 'error', message: `Failed to remove role ${dbRole.name} !` }, event);
redirect({ type: 'error', message: `Failed to remove role ${role?.toString()} !` }, event);
}
},
};

View file

@ -13,7 +13,7 @@ import { totpSchema } from '$lib/validations/auth';
import { users, twoFactor, recoveryCodes } from '$db/schema';
import type { PageServerLoad } from './$types';
import { notSignedInMessage } from '$lib/flashMessages';
import { TWO_FACTOR_TIMEOUT } from '../../../env';
import env from '../../../env';
export const load: PageServerLoad = async (event) => {
const { user, session } = event.locals;
@ -32,7 +32,8 @@ export const load: PageServerLoad = async (event) => {
});
// Check if two factor started less than TWO_FACTOR_TIMEOUT
if (Date.now() - twoFactorDetails?.initiatedTime > TWO_FACTOR_TIMEOUT) {
const
if ((Date.now() - twoFactorDetails?.initiatedTime) > env.TWO_FACTOR_TIMEOUT) {s
const message = { type: 'error', message: 'Two factor authentication has expired' } as const;
redirect(302, '/login', message, event);
}

View file

@ -1,6 +1,6 @@
import { eq } from 'drizzle-orm';
import db from '../db';
import { roles, user_roles } from '$db/schema';
import { roles, userRoles } from '$db/schema';
export async function add_user_to_role(user_id: string, role_name: string, primary = false) {
// Find the role by its name
@ -13,7 +13,7 @@ export async function add_user_to_role(user_id: string, role_name: string, prima
}
// Create a UserRole entry linking the user and the role
return db.insert(user_roles).values({
return db.insert(userRoles).values({
user_id,
role_id: role.id,
primary,