diff --git a/src/server/services/app.service.ts b/src/server/services/app.service.ts
index 303f0f4..351dad9 100644
--- a/src/server/services/app.service.ts
+++ b/src/server/services/app.service.ts
@@ -208,6 +208,14 @@ class AppService {
return savedItem;
}
+ async getDomainById(id: string) {
+ return await dataAccess.client.appDomain.findFirstOrThrow({
+ where: {
+ id
+ }
+ });
+ }
+
async deleteDomainById(id: string) {
const existingDomain = await dataAccess.client.appDomain.findFirst({
where: {
@@ -399,6 +407,14 @@ class AppService {
return savedItem;
}
+ async getPortById(portId: string) {
+ return await dataAccess.client.appPort.findFirstOrThrow({
+ where: {
+ id: portId
+ }
+ });
+ }
+
async deletePortById(id: string) {
const existingPort = await dataAccess.client.appPort.findFirst({
where: {
@@ -469,6 +485,14 @@ class AppService {
}
}
+ async getBasicAuthById(id: string) {
+ return await dataAccess.client.appBasicAuth.findFirstOrThrow({
+ where: {
+ id
+ }
+ });
+ }
+
async getAll() {
const apps = await dataAccess.client.app.findMany({
orderBy: {
diff --git a/src/server/services/build.service.ts b/src/server/services/build.service.ts
index f2ef198..d7e0798 100644
--- a/src/server/services/build.service.ts
+++ b/src/server/services/build.service.ts
@@ -191,6 +191,23 @@ class BuildService {
}
}
+ async getBuildByName(buildName: string) {
+ const jobs = await k3s.batch.listNamespacedJob(BUILD_NAMESPACE);
+ return jobs.body.items.find((job) => job.metadata?.name === buildName);
+ }
+
+ async getAppIdByBuildName(buildName: string) {
+ const job = await this.getBuildByName(buildName);
+ if (!job) {
+ throw new ServiceException(`No build found with name ${buildName}`);
+ }
+ const appId = job.metadata?.annotations?.[Constants.QS_ANNOTATION_APP_ID];
+ if (!appId) {
+ throw new ServiceException(`No appId found for build ${buildName}`);
+ }
+ return appId;
+ }
+
async deleteBuild(buildName: string) {
await k3s.batch.deleteNamespacedJob(buildName, BUILD_NAMESPACE);
console.log(`Deleted build job ${buildName}`);
diff --git a/src/server/utils/role.utils.ts b/src/server/utils/role.utils.ts
index 4e27c00..14c1a2c 100644
--- a/src/server/utils/role.utils.ts
+++ b/src/server/utils/role.utils.ts
@@ -6,6 +6,16 @@ export class RoleUtils {
return (session.permissions?.find(app => app.appId === appId)?.permission ?? null) as RolePermissionEnum | null;
}
+ static sessionIsReadOnlyForApp(session: UserSession, appId: string) {
+ if (this.isAdmin(session)) {
+ return false;
+ }
+ const rolePermission = this.getRolePermissionForApp(session, appId);
+ const roleHasReadAccessForApp = rolePermission === RolePermissionEnum.READ;
+ const roleHasWriteAccessForApp = rolePermission === RolePermissionEnum.READWRITE;
+ return !!roleHasReadAccessForApp && !roleHasWriteAccessForApp;
+ }
+
static sessionHasReadAccessForApp(session: UserSession, appId: string) {
if (this.isAdmin(session)) {
return true;