add feedback endpoint (#28) and some other stuff
All checks were successful
delpoy / build-and-deploy (push) Successful in 1m11s

This commit is contained in:
2024-11-29 01:52:19 +01:00
parent dc86dceb2f
commit dc3a404a5b
30 changed files with 599 additions and 104 deletions

View File

@@ -11,6 +11,7 @@
export let required = false;
export let disabled = false;
export let readonly = false;
export let checked = false;
export let size: 'xs' | 'sm' | 'md' | 'lg' = 'md';
export let pickyWidth = true;
export let containerClass = '';
@@ -85,6 +86,7 @@
{name}
{type}
{value}
{checked}
{placeholder}
{required}
{disabled}

View File

@@ -1,12 +1,9 @@
export class Permissions {
static readonly AdminRead = 2;
static readonly AdminWrite = 4;
static readonly UserRead = 8;
static readonly UserWrite = 16;
static readonly ReportRead = 32;
static readonly ReportWrite = 64;
static readonly SettingsRead = 128;
static readonly SettingsWrite = 256;
static readonly Admin = 2 << 0;
static readonly Users = 2 << 1;
static readonly Reports = 2 << 2;
static readonly Feedback = 2 << 3;
static readonly Settings = 2 << 4;
readonly value: number;
@@ -30,40 +27,29 @@ export class Permissions {
static allPermissions(): number[] {
return [
Permissions.AdminRead,
Permissions.AdminWrite,
Permissions.UserRead,
Permissions.UserWrite,
Permissions.ReportRead,
Permissions.ReportWrite,
Permissions.SettingsRead,
Permissions.SettingsWrite
Permissions.Admin,
Permissions.Users,
Permissions.Reports,
Permissions.Feedback,
Permissions.Settings
];
}
adminRead(): boolean {
return (this.value & Permissions.AdminRead) != 0;
admin(): boolean {
return (this.value & Permissions.Admin) != 0;
}
adminWrite(): boolean {
return (this.value & Permissions.AdminWrite) != 0;
users(): boolean {
return (this.value & Permissions.Users) != 0;
}
userRead(): boolean {
return (this.value & Permissions.UserRead) != 0;
reports(): boolean {
return (this.value & Permissions.Reports) != 0;
}
userWrite(): boolean {
return (this.value & Permissions.UserWrite) != 0;
feedback(): boolean {
return (this.value & Permissions.Reports) != 0;
}
reportRead(): boolean {
return (this.value & Permissions.ReportRead) != 0;
}
reportWrite(): boolean {
return (this.value & Permissions.ReportWrite) != 0;
}
settingsRead(): boolean {
return (this.value & Permissions.SettingsRead) != 0;
}
settingsWrite(): boolean {
return (this.value & Permissions.SettingsWrite) != 0;
settings(): boolean {
return (this.value & Permissions.Reports) != 0;
}
asArray(): number[] {

View File

@@ -1,4 +1,4 @@
import { DataTypes } from 'sequelize';
import { DataTypes, Op } from 'sequelize';
import { env } from '$env/dynamic/private';
import { building, dev } from '$app/environment';
import * as bcrypt from 'bcrypt';
@@ -97,6 +97,23 @@ export class StrikePunishment extends Model {
declare punishment_in_seconds: number;
}
@Table({ modelName: 'feedback', underscored: true })
export class Feedback extends Model {
@Column({ type: DataTypes.STRING, allowNull: false, unique: true })
@Index
declare url_hash: string;
@Column({ type: DataTypes.STRING, allowNull: false })
declare event: string;
@Column({ type: DataTypes.STRING })
declare content: string;
@Column({ type: DataTypes.INTEGER })
@ForeignKey(() => User)
declare user_id: number;
@BelongsTo(() => User, 'user_id')
declare user: User;
}
@Table({ modelName: 'admin', underscored: true })
export class Admin extends Model {
@Column({ type: DataTypes.STRING, allowNull: false, unique: true })
@@ -148,5 +165,5 @@ export class Settings extends Model {
export const sequelize = new Sequelize(building ? 'sqlite::memory:' : env.DATABASE_URI, {
// only log sql queries in dev mode
logging: dev ? console.log : false,
models: [User, Report, StrikeReason, StrikePunishment, Admin, Settings]
models: [User, Report, StrikeReason, StrikePunishment, Feedback, Admin, Settings]
});

View File

@@ -13,4 +13,5 @@ export const errorMessage: Writable<string | null> = (() => {
};
})();
export const reportCount: Writable<number> = writable(0);
export const feedbackCount: Writable<number> = writable(0);
export const adminCount: Writable<number> = writable(0);