Skip to content

Commit

Permalink
Merge pull request #72 from permitio/maya/per-9025-add-all-tenants-ch…
Browse files Browse the repository at this point in the history
…eck-for-node-blee

Add all tenants check for Node
  • Loading branch information
maya-barak committed Feb 29, 2024
2 parents 4c8b23d + 72bd81a commit c642bff
Show file tree
Hide file tree
Showing 130 changed files with 24,204 additions and 22,889 deletions.
2 changes: 1 addition & 1 deletion docs/assets/search.js

Large diffs are not rendered by default.

1,378 changes: 733 additions & 645 deletions docs/classes/ApiClient.html

Large diffs are not rendered by default.

422 changes: 220 additions & 202 deletions docs/classes/ApiContext.html

Large diffs are not rendered by default.

394 changes: 204 additions & 190 deletions docs/classes/ConditionSetRulesApi.html

Large diffs are not rendered by default.

493 changes: 258 additions & 235 deletions docs/classes/ConditionSetsApi.html

Large diffs are not rendered by default.

1,168 changes: 620 additions & 548 deletions docs/classes/DeprecatedApiClient.html

Large diffs are not rendered by default.

342 changes: 176 additions & 166 deletions docs/classes/ElementsClient.html

Large diffs are not rendered by default.

595 changes: 317 additions & 278 deletions docs/classes/EnvironmentsApi.html

Large diffs are not rendered by default.

427 changes: 237 additions & 190 deletions docs/classes/Permit.html

Large diffs are not rendered by default.

344 changes: 173 additions & 171 deletions docs/classes/PermitApiError.html

Large diffs are not rendered by default.

312 changes: 157 additions & 155 deletions docs/classes/PermitConnectionError.html

Large diffs are not rendered by default.

315 changes: 159 additions & 156 deletions docs/classes/PermitContextError.html

Large diffs are not rendered by default.

312 changes: 157 additions & 155 deletions docs/classes/PermitError.html

Large diffs are not rendered by default.

312 changes: 157 additions & 155 deletions docs/classes/PermitPDPStatusError.html

Large diffs are not rendered by default.

493 changes: 258 additions & 235 deletions docs/classes/ProjectsApi.html

Large diffs are not rendered by default.

511 changes: 270 additions & 241 deletions docs/classes/ResourceActionGroupsApi.html

Large diffs are not rendered by default.

511 changes: 270 additions & 241 deletions docs/classes/ResourceActionsApi.html

Large diffs are not rendered by default.

511 changes: 270 additions & 241 deletions docs/classes/ResourceAttributesApi.html

Large diffs are not rendered by default.

520 changes: 273 additions & 247 deletions docs/classes/ResourcesApi.html

Large diffs are not rendered by default.

438 changes: 228 additions & 210 deletions docs/classes/RoleAssignmentsApi.html

Large diffs are not rendered by default.

547 changes: 288 additions & 259 deletions docs/classes/RolesApi.html

Large diffs are not rendered by default.

544 changes: 286 additions & 258 deletions docs/classes/TenantsApi.html

Large diffs are not rendered by default.

589 changes: 310 additions & 279 deletions docs/classes/UsersApi.html

Large diffs are not rendered by default.

285 changes: 143 additions & 142 deletions docs/enums/APIKeyOwnerType.html

Large diffs are not rendered by default.

301 changes: 153 additions & 148 deletions docs/enums/ApiKeyLevel.html

Large diffs are not rendered by default.

309 changes: 155 additions & 154 deletions docs/enums/AttributeType.html

Large diffs are not rendered by default.

277 changes: 139 additions & 138 deletions docs/enums/ConditionSetType.html

Large diffs are not rendered by default.

289 changes: 145 additions & 144 deletions docs/enums/ElementsApiErrors.html

Large diffs are not rendered by default.

285 changes: 143 additions & 142 deletions docs/enums/MemberAccessLevel.html

Large diffs are not rendered by default.

285 changes: 143 additions & 142 deletions docs/enums/MemberAccessObj.html

Large diffs are not rendered by default.

253 changes: 127 additions & 126 deletions docs/index.html

Large diffs are not rendered by default.

396 changes: 198 additions & 198 deletions docs/interfaces/APIKeyRead.html

Large diffs are not rendered by default.

292 changes: 147 additions & 145 deletions docs/interfaces/ActionBlockEditable.html

Large diffs are not rendered by default.

318 changes: 161 additions & 157 deletions docs/interfaces/ActionBlockRead.html

Large diffs are not rendered by default.

282 changes: 142 additions & 140 deletions docs/interfaces/AttributeBlockEditable.html

Large diffs are not rendered by default.

308 changes: 156 additions & 152 deletions docs/interfaces/AttributeBlockRead.html

Large diffs are not rendered by default.

266 changes: 133 additions & 133 deletions docs/interfaces/BulkRoleAssignmentReport.html

Large diffs are not rendered by default.

266 changes: 133 additions & 133 deletions docs/interfaces/BulkRoleUnAssignmentReport.html

Large diffs are not rendered by default.

354 changes: 180 additions & 174 deletions docs/interfaces/ConditionSetCreate.html

Large diffs are not rendered by default.

442 changes: 227 additions & 215 deletions docs/interfaces/ConditionSetRead.html

Large diffs are not rendered by default.

321 changes: 163 additions & 158 deletions docs/interfaces/ConditionSetRuleCreate.html

Large diffs are not rendered by default.

386 changes: 198 additions & 188 deletions docs/interfaces/ConditionSetRuleRead.html

Large diffs are not rendered by default.

321 changes: 163 additions & 158 deletions docs/interfaces/ConditionSetRuleRemove.html

Large diffs are not rendered by default.

305 changes: 154 additions & 151 deletions docs/interfaces/ConditionSetUpdate.html

Large diffs are not rendered by default.

252 changes: 126 additions & 126 deletions docs/interfaces/Context.html

Large diffs are not rendered by default.

254 changes: 127 additions & 127 deletions docs/interfaces/ContextTransform.html

Large diffs are not rendered by default.

330 changes: 168 additions & 162 deletions docs/interfaces/EmbeddedLoginRequestOutputWithContent.html

Large diffs are not rendered by default.

289 changes: 145 additions & 144 deletions docs/interfaces/EnvironmentCopy.html

Large diffs are not rendered by default.

296 changes: 148 additions & 148 deletions docs/interfaces/EnvironmentCopyScope.html

Large diffs are not rendered by default.

282 changes: 142 additions & 140 deletions docs/interfaces/EnvironmentCopyScopeFilters.html

Large diffs are not rendered by default.

279 changes: 140 additions & 139 deletions docs/interfaces/EnvironmentCopyTarget.html

Large diffs are not rendered by default.

318 changes: 161 additions & 157 deletions docs/interfaces/EnvironmentCreate.html

Large diffs are not rendered by default.

383 changes: 196 additions & 187 deletions docs/interfaces/EnvironmentRead.html

Large diffs are not rendered by default.

403 changes: 206 additions & 197 deletions docs/interfaces/EnvironmentStats.html

Large diffs are not rendered by default.

305 changes: 154 additions & 151 deletions docs/interfaces/EnvironmentUpdate.html

Large diffs are not rendered by default.

333 changes: 170 additions & 163 deletions docs/interfaces/IConditionSetRulesApi.html

Large diffs are not rendered by default.

429 changes: 222 additions & 207 deletions docs/interfaces/IConditionSetsApi.html

Large diffs are not rendered by default.

276 changes: 139 additions & 137 deletions docs/interfaces/ICreateOrUpdateUserResult.html

Large diffs are not rendered by default.

563 changes: 282 additions & 281 deletions docs/interfaces/IDeprecatedPermitApi.html

Large diffs are not rendered by default.

339 changes: 170 additions & 169 deletions docs/interfaces/IDeprecatedReadApis.html

Large diffs are not rendered by default.

483 changes: 242 additions & 241 deletions docs/interfaces/IDeprecatedWriteApis.html

Large diffs are not rendered by default.

531 changes: 281 additions & 250 deletions docs/interfaces/IEnvironmentsApi.html

Large diffs are not rendered by default.

298 changes: 151 additions & 147 deletions docs/interfaces/IGetUserRoles.html

Large diffs are not rendered by default.

284 changes: 143 additions & 141 deletions docs/interfaces/IListActionGroups.html

Large diffs are not rendered by default.

284 changes: 143 additions & 141 deletions docs/interfaces/IListActions.html

Large diffs are not rendered by default.

284 changes: 143 additions & 141 deletions docs/interfaces/IListAttributes.html

Large diffs are not rendered by default.

309 changes: 157 additions & 152 deletions docs/interfaces/IListConditionSetRules.html

Large diffs are not rendered by default.

287 changes: 145 additions & 142 deletions docs/interfaces/IListEnvironments.html

Large diffs are not rendered by default.

284 changes: 143 additions & 141 deletions docs/interfaces/IListResourceUsers.html

Large diffs are not rendered by default.

323 changes: 165 additions & 158 deletions docs/interfaces/IListRoleAssignments.html

Large diffs are not rendered by default.

284 changes: 143 additions & 141 deletions docs/interfaces/IListTenantUsers.html

Large diffs are not rendered by default.

276 changes: 139 additions & 137 deletions docs/interfaces/IPagination.html

Large diffs are not rendered by default.

811 changes: 416 additions & 395 deletions docs/interfaces/IPermitApi.html

Large diffs are not rendered by default.

408 changes: 226 additions & 182 deletions docs/interfaces/IPermitClient.html

Large diffs are not rendered by default.

359 changes: 184 additions & 175 deletions docs/interfaces/IPermitConfig.html

Large diffs are not rendered by default.

281 changes: 142 additions & 139 deletions docs/interfaces/IPermitElementsApi.html

Large diffs are not rendered by default.

429 changes: 222 additions & 207 deletions docs/interfaces/IProjectsApi.html

Large diffs are not rendered by default.

301 changes: 153 additions & 148 deletions docs/interfaces/IResource.html

Large diffs are not rendered by default.

450 changes: 236 additions & 214 deletions docs/interfaces/IResourceActionGroupsApi.html

Large diffs are not rendered by default.

450 changes: 236 additions & 214 deletions docs/interfaces/IResourceActionsApi.html

Large diffs are not rendered by default.

450 changes: 236 additions & 214 deletions docs/interfaces/IResourceAttributesApi.html

Large diffs are not rendered by default.

456 changes: 237 additions & 219 deletions docs/interfaces/IResourcesApi.html

Large diffs are not rendered by default.

377 changes: 194 additions & 183 deletions docs/interfaces/IRoleAssignmentsApi.html

Large diffs are not rendered by default.

483 changes: 252 additions & 231 deletions docs/interfaces/IRolesApi.html

Large diffs are not rendered by default.

480 changes: 250 additions & 230 deletions docs/interfaces/ITenantsApi.html

Large diffs are not rendered by default.

312 changes: 159 additions & 153 deletions docs/interfaces/IUser.html

Large diffs are not rendered by default.

525 changes: 274 additions & 251 deletions docs/interfaces/IUsersApi.html

Large diffs are not rendered by default.

471 changes: 243 additions & 228 deletions docs/interfaces/OrgMemberRead.html

Large diffs are not rendered by default.

289 changes: 145 additions & 144 deletions docs/interfaces/PaginatedResultUserRead.html

Large diffs are not rendered by default.

257 changes: 129 additions & 128 deletions docs/interfaces/ParentId.html

Large diffs are not rendered by default.

334 changes: 170 additions & 164 deletions docs/interfaces/ProjectCreate.html

Large diffs are not rendered by default.

386 changes: 198 additions & 188 deletions docs/interfaces/ProjectRead.html

Large diffs are not rendered by default.

308 changes: 156 additions & 152 deletions docs/interfaces/ProjectUpdate.html

Large diffs are not rendered by default.

308 changes: 156 additions & 152 deletions docs/interfaces/ResourceActionCreate.html

Large diffs are not rendered by default.

318 changes: 161 additions & 157 deletions docs/interfaces/ResourceActionGroupCreate.html

Large diffs are not rendered by default.

409 changes: 210 additions & 199 deletions docs/interfaces/ResourceActionGroupRead.html

Large diffs are not rendered by default.

412 changes: 212 additions & 200 deletions docs/interfaces/ResourceActionRead.html

Large diffs are not rendered by default.

295 changes: 149 additions & 146 deletions docs/interfaces/ResourceActionUpdate.html

Large diffs are not rendered by default.

295 changes: 149 additions & 146 deletions docs/interfaces/ResourceAttributeCreate.html

Large diffs are not rendered by default.

412 changes: 212 additions & 200 deletions docs/interfaces/ResourceAttributeRead.html

Large diffs are not rendered by default.

282 changes: 142 additions & 140 deletions docs/interfaces/ResourceAttributeUpdate.html

Large diffs are not rendered by default.

364 changes: 186 additions & 178 deletions docs/interfaces/ResourceCreate.html

Large diffs are not rendered by default.

257 changes: 129 additions & 128 deletions docs/interfaces/ResourceId.html

Large diffs are not rendered by default.

460 changes: 237 additions & 223 deletions docs/interfaces/ResourceRead.html

Large diffs are not rendered by default.

351 changes: 179 additions & 172 deletions docs/interfaces/ResourceReplace.html

Large diffs are not rendered by default.

351 changes: 179 additions & 172 deletions docs/interfaces/ResourceUpdate.html

Large diffs are not rendered by default.

308 changes: 156 additions & 152 deletions docs/interfaces/RoleAssignmentCreate.html

Large diffs are not rendered by default.

451 changes: 233 additions & 218 deletions docs/interfaces/RoleAssignmentRead.html

Large diffs are not rendered by default.

308 changes: 156 additions & 152 deletions docs/interfaces/RoleAssignmentRemove.html

Large diffs are not rendered by default.

331 changes: 168 additions & 163 deletions docs/interfaces/RoleCreate.html

Large diffs are not rendered by default.

409 changes: 210 additions & 199 deletions docs/interfaces/RoleRead.html

Large diffs are not rendered by default.

318 changes: 161 additions & 157 deletions docs/interfaces/RoleUpdate.html

Large diffs are not rendered by default.

326 changes: 163 additions & 163 deletions docs/interfaces/Statistics.html

Large diffs are not rendered by default.

308 changes: 156 additions & 152 deletions docs/interfaces/TenantCreate.html

Large diffs are not rendered by default.

399 changes: 205 additions & 194 deletions docs/interfaces/TenantRead.html

Large diffs are not rendered by default.

295 changes: 149 additions & 146 deletions docs/interfaces/TenantUpdate.html

Large diffs are not rendered by default.

321 changes: 163 additions & 158 deletions docs/interfaces/UserCreate.html

Large diffs are not rendered by default.

295 changes: 149 additions & 146 deletions docs/interfaces/UserInTenant.html

Large diffs are not rendered by default.

395 changes: 202 additions & 193 deletions docs/interfaces/UserRead.html

Large diffs are not rendered by default.

282 changes: 142 additions & 140 deletions docs/interfaces/UserRole.html

Large diffs are not rendered by default.

308 changes: 156 additions & 152 deletions docs/interfaces/UserUpdate.html

Large diffs are not rendered by default.

279 changes: 141 additions & 138 deletions docs/interfaces/loginAsSchema.html

Large diffs are not rendered by default.

496 changes: 248 additions & 248 deletions docs/modules.html

Large diffs are not rendered by default.

254 changes: 127 additions & 127 deletions docs/types/EnvironmentCopyConflictStrategyEnum.html

Large diffs are not rendered by default.

255 changes: 128 additions & 127 deletions docs/types/IAction.html

Large diffs are not rendered by default.

254 changes: 127 additions & 127 deletions docs/variables/EnvironmentCopyConflictStrategyEnum-1.html

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "permitio",
"version": "2.2.0",
"version": "2.3.0",
"description": "Node.js client library for the Permit.io full-stack permissions platform",
"main": "build/main/index.js",
"typings": "build/main/index.d.ts",
Expand Down
42 changes: 42 additions & 0 deletions src/enforcement/enforcer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { CheckConfig, Context, ContextStore } from '../utils/context';
import { AxiosLoggingInterceptor } from '../utils/http-logger';

import {
AllTenantsResponse,
BulkOpaDecisionResult,
BulkPolicyDecision,
IAction,
Expand All @@ -18,6 +19,7 @@ import {
OpaDecisionResult,
OpaGetUserPermissionsResult,
PolicyDecision,
TenantDetails,
} from './interfaces';

const RESOURCE_DELIMITER = ':';
Expand Down Expand Up @@ -100,6 +102,18 @@ export interface IEnforcer {
resource_types?: string[],
config?: CheckConfig,
): Promise<IUserPermissions>;

/**
* Get all tenants available in the system.
* @returns An array of TenantDetails representing all tenants.
*/
checkAllTenants(
user: IUser | string,
action: string,
resource: IResource | string,
context: Context | undefined,
sdk: string | undefined,
): Promise<TenantDetails[]>;
}

/**
Expand Down Expand Up @@ -311,6 +325,33 @@ export class Enforcer implements IEnforcer {
});
}

public async checkAllTenants(
user: IUser | string,
action: string,
resource: IResource | string,
context: Context = {}, // default to empty context if not provided
sdk = 'node', // default to "node" if not provided
): Promise<TenantDetails[]> {
try {
const response = await this.client.post<AllTenantsResponse>('/allowed/all-tenants', {
headers: {
Authorization: `Bearer ${this.config.token}`,
'X-Permit-Sdk-Language': sdk,
},
params: {
user,
action,
resource,
context,
},
});
return response.data.allowedTenants.map((item) => item.tenant);
} catch (error) {
this.logger.error('Error fetching all tenants:', error);
throw error;
}
}

public async check(
user: IUser | string,
action: IAction,
Expand Down Expand Up @@ -423,6 +464,7 @@ export class Enforcer implements IEnforcer {
check: this.check.bind(this),
bulkCheck: this.bulkCheck.bind(this),
getUserPermissions: this.getUserPermissions.bind(this),
checkAllTenants: this.checkAllTenants.bind(this),
};
}
}
16 changes: 16 additions & 0 deletions src/enforcement/interfaces.ts
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,21 @@ export interface OpaDecisionResult {
result: PolicyDecision;
}

export interface TenantDetails {
key: string;
attributes: {
[id: string]: any;
};
}

export interface AllTenantsCheckResponse {
tenant: TenantDetails;
}

export interface AllTenantsResponse {
allowedTenants: AllTenantsCheckResponse[];
}

interface TenantPermissions {
permissions: string[];
tenant?: {
Expand Down Expand Up @@ -161,3 +176,4 @@ export interface OpaGetUserPermissionsResult {
export function isOpaGetUserPermissionsResult(obj: any): obj is OpaGetUserPermissionsResult {
return 'result' in obj;
}

31 changes: 30 additions & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,13 @@ import { ApiClient, IPermitApi } from './api/api-client';
import { ElementsClient, IPermitElementsApi } from './api/elements';
import { ConfigFactory, IPermitConfig } from './config';
import { Enforcer, IEnforcer } from './enforcement/enforcer';
import { ICheckQuery, IResource, IUser, IUserPermissions } from './enforcement/interfaces';
import {
ICheckQuery,
IResource,
IUser,
IUserPermissions,
TenantDetails,
} from './enforcement/interfaces';
import { LoggerFactory } from './logger';
import { CheckConfig, Context } from './utils/context';
import { AxiosLoggingInterceptor } from './utils/http-logger';
Expand Down Expand Up @@ -182,6 +188,29 @@ export class Permit implements IPermitClient {
return await this.enforcer.bulkCheck(checks, context, config);
}

/**
* Get all tenants available in the system.
* @returns An array of TenantDetails representing all tenants.
*/
/**
* Get all tenants available in the system.
* @returns An array of TenantDetails representing all tenants.
*/
public async checkAllTenants(
user: IUser | string,
action: string,
resource: IResource | string,
context?: Context | undefined,
sdk?: string | undefined,
): Promise<TenantDetails[]> {
try {
return await this.enforcer.checkAllTenants(user, action, resource, context, sdk);
} catch (error) {
this.logger.error('Error fetching all tenants:', error);
throw error;
}
}

/**
* Get all permissions for the specified user.
*
Expand Down

0 comments on commit c642bff

Please sign in to comment.