add feedback endpoint (#28) and some other stuff
All checks were successful
delpoy / build-and-deploy (push) Successful in 1m11s
All checks were successful
delpoy / build-and-deploy (push) Successful in 1m11s
This commit is contained in:
@@ -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}
|
||||
|
||||
@@ -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[] {
|
||||
|
||||
@@ -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]
|
||||
});
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user