feat: badges
This commit is contained in:
parent
9d6e607ab5
commit
638452eb0b
|
@ -1,4 +1,4 @@
|
||||||
import { Role } from '@/utils/permissions';
|
import { TeamRole } from '@/utils/permissions';
|
||||||
import mysql, { Pool, QueryResult } from 'mysql2/promise';
|
import mysql, { Pool, QueryResult } from 'mysql2/promise';
|
||||||
|
|
||||||
import crypto from 'node:crypto';
|
import crypto from 'node:crypto';
|
||||||
|
@ -46,7 +46,7 @@ interface TeamMember {
|
||||||
banner: string;
|
banner: string;
|
||||||
accent_color: number;
|
accent_color: number;
|
||||||
permissions: number;
|
permissions: number;
|
||||||
role: Role;
|
role: TeamRole;
|
||||||
}
|
}
|
||||||
|
|
||||||
class Database {
|
class Database {
|
||||||
|
@ -191,7 +191,7 @@ class Database {
|
||||||
banner: row.banner,
|
banner: row.banner,
|
||||||
accent_color: row.accent_color,
|
accent_color: row.accent_color,
|
||||||
permissions: row.permissions,
|
permissions: row.permissions,
|
||||||
role: (row.role as Role),
|
role: (row.role as TeamRole),
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@ import Database from '@/lib/Database';
|
||||||
import Image from 'next/image';
|
import Image from 'next/image';
|
||||||
import Link from 'next/link';
|
import Link from 'next/link';
|
||||||
|
|
||||||
import { Role } from '@/utils/permissions';
|
import { TeamRole } from '@/utils/badges';
|
||||||
|
|
||||||
import styles from '@/styles/About.module.scss';
|
import styles from '@/styles/About.module.scss';
|
||||||
import { Globe } from 'lucide-react';
|
import { Globe } from 'lucide-react';
|
||||||
|
@ -47,8 +47,8 @@ export default function About({ teamMembers }: { teamMembers: any[] }) {
|
||||||
|
|
||||||
<h3>{member.global_name}</h3>
|
<h3>{member.global_name}</h3>
|
||||||
|
|
||||||
{member.role === Role.Owner && <label>Owner</label>}
|
{member.role === TeamRole.Owner && <label>Owner</label>}
|
||||||
{member.role === Role.Admin && <label>Admin</label>}
|
{member.role === TeamRole.Admin && <label>Admin</label>}
|
||||||
</div>
|
</div>
|
||||||
</Card>
|
</Card>
|
||||||
))}
|
))}
|
||||||
|
|
24
utils/badges.ts
Normal file
24
utils/badges.ts
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
export enum TeamRole {
|
||||||
|
Owner = 'owner',
|
||||||
|
Admin = 'admin',
|
||||||
|
Moderator = 'mod'
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum Badge {
|
||||||
|
Old = 1 << 0, // CRSS OG
|
||||||
|
Supporter = 1 << 1, // "Donator"
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getBadges(badges: number): Badge[] {
|
||||||
|
const result: Badge[] = [];
|
||||||
|
|
||||||
|
if ((badges & Badge.Old) === Badge.Old) {
|
||||||
|
result.push(Badge.Old);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((badges & Badge.Supporter) === Badge.Supporter) {
|
||||||
|
result.push(Badge.Supporter);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
|
@ -4,11 +4,6 @@ export enum Permission {
|
||||||
ServerPlayer = 1 << 2
|
ServerPlayer = 1 << 2
|
||||||
}
|
}
|
||||||
|
|
||||||
export enum Role {
|
|
||||||
Owner = 'owner',
|
|
||||||
Admin = 'admin',
|
|
||||||
}
|
|
||||||
|
|
||||||
export function hasPermission(permissions: number, permission: Permission): boolean {
|
export function hasPermission(permissions: number, permission: Permission): boolean {
|
||||||
return (permissions & permission) === permission;
|
return (permissions & permission) === permission;
|
||||||
}
|
}
|
Loading…
Reference in a new issue