mirror of
https://github.com/OneUptime/oneuptime.git
synced 2026-04-06 00:32:12 +02:00
add permissions to see the model.
This commit is contained in:
@@ -229,6 +229,8 @@ export default class ServiceHandler {
|
||||
DashboardApiRoute.toString() +
|
||||
currentResource.model.crudApiPath?.toString();
|
||||
|
||||
pageData.isMasterAdminApiDocs = currentResource.model.isMasterAdminApiDocs;
|
||||
|
||||
return res.render('pages/index', {
|
||||
page: page,
|
||||
resources: Resources,
|
||||
|
||||
@@ -2,6 +2,7 @@ import BaseModel from 'Common/Models/BaseModel';
|
||||
import Models from 'Model/Models/Index';
|
||||
import ArrayUtil from 'Common/Types/ArrayUtil';
|
||||
import Dictionary from 'Common/Types/Dictionary';
|
||||
import { IsBillingEnabled } from 'CommonServer/EnvironmentConfig';
|
||||
|
||||
export interface ModelDocumentation {
|
||||
name: string;
|
||||
@@ -15,7 +16,13 @@ export default class ResourceUtil {
|
||||
const resources: Array<ModelDocumentation> = Models.filter(
|
||||
(model: typeof BaseModel) => {
|
||||
const modelInstance: BaseModel = new model();
|
||||
return modelInstance.enableDocumentation;
|
||||
let showDocs: boolean = modelInstance.enableDocumentation;
|
||||
|
||||
if (modelInstance.isMasterAdminApiDocs && IsBillingEnabled) {
|
||||
showDocs = false;
|
||||
}
|
||||
|
||||
return showDocs;
|
||||
}
|
||||
)
|
||||
.map((model: typeof BaseModel) => {
|
||||
|
||||
@@ -9,8 +9,12 @@
|
||||
|
||||
|
||||
<h2>Permissions</h2>
|
||||
|
||||
<% if(!pageData.isMasterAdminApiDocs){ %>
|
||||
<p class="lead"> Your API Token needs permissions to create, update, read or delete this resource. If you do not have permissions to make a request a <code class="inline-code">4xx</code> status will be sent as response. </p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3 id="consuming-webhooks" >
|
||||
Read Permissions
|
||||
@@ -138,6 +142,12 @@
|
||||
|
||||
</div>
|
||||
|
||||
<% } %>
|
||||
|
||||
<% if(pageData.isMasterAdminApiDocs){ %>
|
||||
<p>This API can only be accessed through a Master API Token. You can create one on the Admin Dashboard.</p>
|
||||
<% } %>
|
||||
|
||||
|
||||
<h2 id="the-contact-model" class="scroll-mt-24">
|
||||
The <%= pageData.title -%> model
|
||||
|
||||
@@ -110,6 +110,7 @@ export default class BaseModel extends BaseEntity {
|
||||
public enableWorkflowOn!: EnableWorkflowOn;
|
||||
|
||||
public enableDocumentation!: boolean;
|
||||
public isMasterAdminApiDocs!: boolean;
|
||||
|
||||
public currentUserCanAccessColumnBy!: string | null;
|
||||
public labelsColumn!: string | null;
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
export default () => {
|
||||
export interface EnableDocumentationProps {
|
||||
isMasterAdminApiDocs?: boolean | undefined;
|
||||
}
|
||||
|
||||
export default (props?: EnableDocumentationProps | undefined) => {
|
||||
return (ctr: Function) => {
|
||||
ctr.prototype.enableDocumentation = true;
|
||||
ctr.prototype.isMasterAdminApiDocs = props?.isMasterAdminApiDocs || false;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -25,7 +25,12 @@ import Email from 'Common/Types/Email';
|
||||
import Name from 'Common/Types/Name';
|
||||
import Reseller from './Reseller';
|
||||
import ResellerPlan from './ResellerPlan';
|
||||
import EnableDocumentation from 'Common/Types/Model/EnableDocumentation';
|
||||
|
||||
|
||||
@EnableDocumentation({
|
||||
isMasterAdminApiDocs: true
|
||||
})
|
||||
@AllowAccessIfSubscriptionIsUnpaid()
|
||||
@MultiTenentQueryAllowed(true)
|
||||
@TableAccessControl({
|
||||
|
||||
@@ -24,7 +24,11 @@ import TableMetadata from 'Common/Types/Database/TableMetadata';
|
||||
import IconProp from 'Common/Types/Icon/IconProp';
|
||||
import AllowAccessIfSubscriptionIsUnpaid from 'Common/Types/Database/AccessControl/AllowAccessIfSubscriptionIsUnpaid';
|
||||
import ObjectID from 'Common/Types/ObjectID';
|
||||
import EnableDocumentation from 'Common/Types/Model/EnableDocumentation';
|
||||
|
||||
@EnableDocumentation({
|
||||
isMasterAdminApiDocs: true
|
||||
})
|
||||
@AllowAccessIfSubscriptionIsUnpaid()
|
||||
@TableAccessControl({
|
||||
create: [Permission.Public],
|
||||
|
||||
Reference in New Issue
Block a user