mirror of
https://github.com/versia-pub/server.git
synced 2026-03-13 05:49:16 +01:00
feat(api): ✨ Add permissions to every route and permission config
This commit is contained in:
parent
19823d8eca
commit
4902f078a8
79 changed files with 729 additions and 251 deletions
|
|
@ -52,7 +52,7 @@ export class Role {
|
|||
orderBy: SQL<unknown> | undefined = desc(Roles.id),
|
||||
limit?: number,
|
||||
offset?: number,
|
||||
extra?: Parameters<typeof db.query.Users.findMany>[0],
|
||||
extra?: Parameters<typeof db.query.Roles.findMany>[0],
|
||||
) {
|
||||
const found = await db.query.Roles.findMany({
|
||||
where: sql,
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ import {
|
|||
EmojiToUser,
|
||||
NoteToMentions,
|
||||
Notes,
|
||||
type RolePermissions,
|
||||
UserToPinnedNotes,
|
||||
Users,
|
||||
} from "~/drizzle/schema";
|
||||
|
|
@ -117,6 +118,25 @@ export class User {
|
|||
return uri || new URL(`/users/${id}`, baseUrl).toString();
|
||||
}
|
||||
|
||||
public hasPermission(permission: RolePermissions) {
|
||||
return this.getAllPermissions().includes(permission);
|
||||
}
|
||||
|
||||
public getAllPermissions() {
|
||||
return (
|
||||
this.user.roles
|
||||
.flatMap((role) => role.permissions)
|
||||
// Add default permissions
|
||||
.concat(config.permissions.default)
|
||||
// If admin, add admin permissions
|
||||
.concat(this.user.isAdmin ? config.permissions.admin : [])
|
||||
.reduce((acc, permission) => {
|
||||
if (!acc.includes(permission)) acc.push(permission);
|
||||
return acc;
|
||||
}, [] as RolePermissions[])
|
||||
);
|
||||
}
|
||||
|
||||
static async getCount() {
|
||||
return (
|
||||
await db
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue