relocate permissions
This commit is contained in:
1 parent
6eabaebd86
commit
d76da4b00c
18 files changed
+114
-96
No files matched your search
+2
-1
@@ -2,4 +2,5 @@
|
||||
.vscode
|
||||
.VSCodeCounter
|
||||
AGENTS.md
|
||||
*.sh
|
||||
*.sh
|
||||
notes
|
||||
@@ -1,6 +1,6 @@
|
||||
import { Request, Response, NextFunction } from "express";
|
||||
import ApiError from "@/utils/ApiError.js";
|
||||
import { PERMISSIONS } from "@/services/business/AuthService.js";
|
||||
import { PERMISSIONS } from "@/types/permissions.js";
|
||||
export const hasPermission = (
|
||||
permissions: string[],
|
||||
requiredPermissions: string[]
|
||||
|
||||
@@ -5,7 +5,7 @@ import { verifyToken } from "@/middleware/VerifyToken.js";
|
||||
import { addUserContext } from "@/middleware/AddUserContext.js";
|
||||
import { validateQuery } from "@/middleware/validation.js";
|
||||
import { verifyOrgPermission } from "@/middleware/VerifyPermission.js";
|
||||
import { PERMISSIONS } from "@/services/business/AuthService.js";
|
||||
import { PERMISSIONS } from "@/types/permissions.js";
|
||||
import { checksStatusIdQuerySchema } from "@/validation/index.js";
|
||||
|
||||
class CheckRoutes {
|
||||
|
||||
@@ -3,7 +3,7 @@ import { DiagnosticController } from "@/controllers/index.js";
|
||||
import { verifyToken } from "@/middleware/VerifyToken.js";
|
||||
import { verifyOrgPermission } from "@/middleware/VerifyPermission.js";
|
||||
import { addUserContext } from "@/middleware/AddUserContext.js";
|
||||
import { PERMISSIONS } from "@/services/business/AuthService.js";
|
||||
import { PERMISSIONS } from "@/types/permissions.js";
|
||||
|
||||
class DiagnosticRoutes {
|
||||
private router;
|
||||
|
||||
@@ -5,7 +5,7 @@ import { verifyToken } from "@/middleware/VerifyToken.js";
|
||||
import { addUserContext } from "@/middleware/AddUserContext.js";
|
||||
import { validateQuery, validateBody } from "@/middleware/validation.js";
|
||||
import { verifyOrgPermission } from "@/middleware/VerifyPermission.js";
|
||||
import { PERMISSIONS } from "@/services/business/AuthService.js";
|
||||
import { PERMISSIONS } from "@/types/permissions.js";
|
||||
import {
|
||||
getIncidentsQuerySchema,
|
||||
patchIncidentsBodySchema,
|
||||
|
||||
@@ -3,7 +3,7 @@ import { InviteController } from "@/controllers/index.js";
|
||||
import { verifyToken } from "@/middleware/VerifyToken.js";
|
||||
import { verifyOrgPermission } from "@/middleware/VerifyPermission.js";
|
||||
import { addUserContext } from "@/middleware/AddUserContext.js";
|
||||
import { PERMISSIONS } from "@/services/business/AuthService.js";
|
||||
import { PERMISSIONS } from "@/types/permissions.js";
|
||||
import { validateBody } from "@/middleware/validation.js";
|
||||
import { inviteSchema } from "@/validation/index.js";
|
||||
class InviteRoutes {
|
||||
|
||||
@@ -3,7 +3,7 @@ import { MaintenanceController } from "@/controllers/index.js";
|
||||
import { verifyToken } from "@/middleware/VerifyToken.js";
|
||||
import { verifyTeamPermission } from "@/middleware/VerifyPermission.js";
|
||||
import { addUserContext } from "@/middleware/AddUserContext.js";
|
||||
import { PERMISSIONS } from "@/services/business/AuthService.js";
|
||||
import { PERMISSIONS } from "@/types/permissions.js";
|
||||
|
||||
class MaintenanceRoutes {
|
||||
private router;
|
||||
|
||||
@@ -6,7 +6,7 @@ import {
|
||||
verifyTeamPermission,
|
||||
} from "@/middleware/VerifyPermission.js";
|
||||
import { addUserContext } from "@/middleware/AddUserContext.js";
|
||||
import { PERMISSIONS } from "@/services/business/AuthService.js";
|
||||
import { PERMISSIONS } from "@/types/permissions.js";
|
||||
import { validateBody, validateQuery } from "@/middleware/validation.js";
|
||||
import {
|
||||
enforceMax,
|
||||
|
||||
@@ -4,7 +4,7 @@ import { NotificationChannelController } from "@/controllers/index.js";
|
||||
import { verifyToken } from "@/middleware/VerifyToken.js";
|
||||
import { verifyTeamPermission } from "@/middleware/VerifyPermission.js";
|
||||
import { addUserContext } from "@/middleware/AddUserContext.js";
|
||||
import { PERMISSIONS } from "@/services/business/AuthService.js";
|
||||
import { PERMISSIONS } from "@/types/permissions.js";
|
||||
import { validateBody } from "@/middleware/validation.js";
|
||||
import { enforceMax, requireFeature } from "@/middleware/VerifyEntitlements.js";
|
||||
import {
|
||||
|
||||
@@ -4,7 +4,7 @@ import { RoleController } from "@/controllers/index.js";
|
||||
import { verifyToken } from "@/middleware/VerifyToken.js";
|
||||
import { addUserContext } from "@/middleware/AddUserContext.js";
|
||||
import { verifyOrgPermission } from "@/middleware/VerifyPermission.js";
|
||||
import { PERMISSIONS } from "@/services/business/AuthService.js";
|
||||
import { PERMISSIONS } from "@/types/permissions.js";
|
||||
|
||||
class RoleRoutes {
|
||||
private controller: RoleController;
|
||||
|
||||
@@ -3,7 +3,7 @@ import { SettingsController } from "@/controllers/index.js";
|
||||
import { verifyToken } from "@/middleware/VerifyToken.js";
|
||||
import { verifyTeamPermission } from "@/middleware/VerifyPermission.js";
|
||||
import { addUserContext } from "@/middleware/AddUserContext.js";
|
||||
import { PERMISSIONS } from "@/services/business/AuthService.js";
|
||||
import { PERMISSIONS } from "@/types/permissions.js";
|
||||
import { validateBody } from "@/middleware/validation.js";
|
||||
import {
|
||||
systemSettingsSchema,
|
||||
|
||||
@@ -4,7 +4,7 @@ import { StatusPageController } from "@/controllers/index.js";
|
||||
import { verifyToken } from "@/middleware/VerifyToken.js";
|
||||
import { verifyTeamPermission } from "@/middleware/VerifyPermission.js";
|
||||
import { addUserContext } from "@/middleware/AddUserContext.js";
|
||||
import { PERMISSIONS } from "@/services/business/AuthService.js";
|
||||
import { PERMISSIONS } from "@/types/permissions.js";
|
||||
import { validateBody } from "@/middleware/validation.js";
|
||||
import { statusPageSchema } from "@/validation/index.js";
|
||||
import { enforceMax } from "@/middleware/VerifyEntitlements.js";
|
||||
|
||||
@@ -6,7 +6,7 @@ import { verifyToken } from "@/middleware/VerifyToken.js";
|
||||
import { addUserContext } from "@/middleware/AddUserContext.js";
|
||||
import { verifyOrgPermission } from "@/middleware/VerifyPermission.js";
|
||||
import { enforceMax } from "@/middleware/VerifyEntitlements.js";
|
||||
import { PERMISSIONS } from "@/services/business/AuthService.js";
|
||||
import { PERMISSIONS } from "@/types/permissions.js";
|
||||
|
||||
class TeamRoutes {
|
||||
private controller: TeamController;
|
||||
|
||||
@@ -4,7 +4,7 @@ import { TeamMemberController } from "@/controllers/index.js";
|
||||
import { verifyToken } from "@/middleware/VerifyToken.js";
|
||||
import { addUserContext } from "@/middleware/AddUserContext.js";
|
||||
import { verifyOrgPermission } from "@/middleware/VerifyPermission.js";
|
||||
import { PERMISSIONS } from "@/services/business/AuthService.js";
|
||||
import { PERMISSIONS } from "@/types/permissions.js";
|
||||
|
||||
class TeamMemberRoutes {
|
||||
private controller: TeamMemberController;
|
||||
|
||||
@@ -21,89 +21,10 @@ import ApiError from "@/utils/ApiError.js";
|
||||
import { IJobQueue } from "../infrastructure/JobQueue.js";
|
||||
import { hashPassword } from "@/utils/JWTUtils.js";
|
||||
import { Plans } from "@/types/entitlements.js";
|
||||
import { PERMISSIONS } from "@/types/permissions.js";
|
||||
|
||||
const SERVICE_NAME = "AuthService";
|
||||
|
||||
export const PERMISSIONS = {
|
||||
master: "master",
|
||||
users: {
|
||||
all: "users.*",
|
||||
write: "users.write",
|
||||
read: "users.read",
|
||||
delete: "users.delete",
|
||||
},
|
||||
monitors: {
|
||||
all: "monitors.*",
|
||||
write: "monitors.write",
|
||||
read: "monitors.read",
|
||||
update: "monitors.update",
|
||||
delete: "monitors.delete",
|
||||
},
|
||||
notifications: {
|
||||
all: "notifications.*",
|
||||
write: "notifications.write",
|
||||
read: "notifications.read",
|
||||
update: "notifications.update",
|
||||
delete: "notifications.delete",
|
||||
},
|
||||
maintenance: {
|
||||
all: "maintenance.*",
|
||||
write: "maintenance.write",
|
||||
read: "maintenance.read",
|
||||
update: "maintenance.update",
|
||||
delete: "maintenance.delete",
|
||||
},
|
||||
invite: {
|
||||
all: "invite.*",
|
||||
write: "invite.write",
|
||||
read: "invite.read",
|
||||
delete: "invite.delete",
|
||||
},
|
||||
checks: {
|
||||
all: "checks.*",
|
||||
write: "checks.write",
|
||||
read: "checks.read",
|
||||
update: "checks.update",
|
||||
delete: "checks.delete",
|
||||
},
|
||||
statusPages: {
|
||||
all: "statusPages.*",
|
||||
write: "statusPages.write",
|
||||
read: "statusPages.read",
|
||||
update: "statusPages.update",
|
||||
delete: "statusPages.delete",
|
||||
},
|
||||
teams: {
|
||||
all: "teams.*",
|
||||
write: "teams.write",
|
||||
read: "teams.read",
|
||||
update: "teams.update",
|
||||
delete: "teams.delete",
|
||||
},
|
||||
roles: {
|
||||
all: "roles.*",
|
||||
write: "roles.write",
|
||||
read: "roles.read",
|
||||
update: "roles.update",
|
||||
delete: "roles.delete",
|
||||
},
|
||||
|
||||
diagnostic: {
|
||||
all: "diagnostic.*",
|
||||
write: "diagnostic.write",
|
||||
read: "diagnostic.read",
|
||||
update: "diagnostic.update",
|
||||
delete: "diagnostic.delete",
|
||||
},
|
||||
incidents: {
|
||||
all: "incidents.*",
|
||||
write: "incidents.write",
|
||||
read: "incidents.read",
|
||||
update: "incidents.update",
|
||||
delete: "incidents.delete",
|
||||
},
|
||||
};
|
||||
|
||||
export type RegisterData = {
|
||||
firstName: string;
|
||||
lastName: string;
|
||||
|
||||
@@ -11,7 +11,7 @@ import {
|
||||
} from "@/db/models/index.js";
|
||||
import type { IJobQueue } from "../infrastructure/JobQueue.js";
|
||||
import ApiError from "@/utils/ApiError.js";
|
||||
import { PERMISSIONS } from "@/services/business/AuthService.js";
|
||||
import { PERMISSIONS } from "@/types/permissions.js";
|
||||
|
||||
const SERVICE_NAME = "TeamService";
|
||||
export interface ITeamService {
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
export const PERMISSIONS = {
|
||||
master: "master",
|
||||
users: {
|
||||
all: "users.*",
|
||||
write: "users.write",
|
||||
read: "users.read",
|
||||
delete: "users.delete",
|
||||
},
|
||||
monitors: {
|
||||
all: "monitors.*",
|
||||
write: "monitors.write",
|
||||
read: "monitors.read",
|
||||
update: "monitors.update",
|
||||
delete: "monitors.delete",
|
||||
},
|
||||
notifications: {
|
||||
all: "notifications.*",
|
||||
write: "notifications.write",
|
||||
read: "notifications.read",
|
||||
update: "notifications.update",
|
||||
delete: "notifications.delete",
|
||||
},
|
||||
maintenance: {
|
||||
all: "maintenance.*",
|
||||
write: "maintenance.write",
|
||||
read: "maintenance.read",
|
||||
update: "maintenance.update",
|
||||
delete: "maintenance.delete",
|
||||
},
|
||||
invite: {
|
||||
all: "invite.*",
|
||||
write: "invite.write",
|
||||
read: "invite.read",
|
||||
delete: "invite.delete",
|
||||
},
|
||||
checks: {
|
||||
all: "checks.*",
|
||||
write: "checks.write",
|
||||
read: "checks.read",
|
||||
update: "checks.update",
|
||||
delete: "checks.delete",
|
||||
},
|
||||
statusPages: {
|
||||
all: "statusPages.*",
|
||||
write: "statusPages.write",
|
||||
read: "statusPages.read",
|
||||
update: "statusPages.update",
|
||||
delete: "statusPages.delete",
|
||||
},
|
||||
teams: {
|
||||
all: "teams.*",
|
||||
write: "teams.write",
|
||||
read: "teams.read",
|
||||
update: "teams.update",
|
||||
delete: "teams.delete",
|
||||
},
|
||||
roles: {
|
||||
all: "roles.*",
|
||||
write: "roles.write",
|
||||
read: "roles.read",
|
||||
update: "roles.update",
|
||||
delete: "roles.delete",
|
||||
},
|
||||
diagnostic: {
|
||||
all: "diagnostic.*",
|
||||
write: "diagnostic.write",
|
||||
read: "diagnostic.read",
|
||||
update: "diagnostic.update",
|
||||
delete: "diagnostic.delete",
|
||||
},
|
||||
incidents: {
|
||||
all: "incidents.*",
|
||||
write: "incidents.write",
|
||||
read: "incidents.read",
|
||||
update: "incidents.update",
|
||||
delete: "incidents.delete",
|
||||
},
|
||||
billing: {
|
||||
all: "billing.*",
|
||||
},
|
||||
};
|
||||
|
||||
export type Permission =
|
||||
| typeof PERMISSIONS.master
|
||||
| (typeof PERMISSIONS.users)[keyof typeof PERMISSIONS.users]
|
||||
| (typeof PERMISSIONS.monitors)[keyof typeof PERMISSIONS.monitors]
|
||||
| (typeof PERMISSIONS.notifications)[keyof typeof PERMISSIONS.notifications]
|
||||
| (typeof PERMISSIONS.maintenance)[keyof typeof PERMISSIONS.maintenance]
|
||||
| (typeof PERMISSIONS.invite)[keyof typeof PERMISSIONS.invite]
|
||||
| (typeof PERMISSIONS.checks)[keyof typeof PERMISSIONS.checks]
|
||||
| (typeof PERMISSIONS.statusPages)[keyof typeof PERMISSIONS.statusPages]
|
||||
| (typeof PERMISSIONS.teams)[keyof typeof PERMISSIONS.teams]
|
||||
| (typeof PERMISSIONS.roles)[keyof typeof PERMISSIONS.roles]
|
||||
| (typeof PERMISSIONS.diagnostic)[keyof typeof PERMISSIONS.diagnostic]
|
||||
| (typeof PERMISSIONS.incidents)[keyof typeof PERMISSIONS.incidents]
|
||||
| (typeof PERMISSIONS.billing)[keyof typeof PERMISSIONS.billing];
|
||||
@@ -1,5 +1,5 @@
|
||||
import { config } from "@/config/index.js";
|
||||
import { PERMISSIONS } from "@/services/business/AuthService.js";
|
||||
import { PERMISSIONS } from "@/types/permissions.js";
|
||||
export type DeploymentMode = "saas" | "self_hosted";
|
||||
|
||||
const CURRENT_MODE = config.DEPLOYMENT_MODE;
|
||||
|
||||
Reference in new issue
Block a user