Skip to content

Commit

Permalink
revert(backend): Introduce OrganizationPermissionAPI and Organization…
Browse files Browse the repository at this point in the history
…RoleAPI (#2252)

* Revert "feat(backend): Introduce OrganizationRoleAPI (#2177)"

This reverts commit b3a3dcd

* Revert "feat(backend): Introduce OrganizationPermissionAPI (#2178)"

This reverts commit 0ce0edc

* chore(backend): Add changeset

* chore(backend): Keep the previous changesets
  • Loading branch information
panteliselef committed Dec 4, 2023
1 parent 7d93c4c commit 93d05c8
Show file tree
Hide file tree
Showing 14 changed files with 8 additions and 300 deletions.
7 changes: 7 additions & 0 deletions .changeset/cyan-dodos-provide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@clerk/clerk-sdk-node': patch
'@clerk/backend': patch
'@clerk/nextjs': patch
---

Drop the introduction of `OrganizationRole` and `OrganizationPermission` resources fro BAPI.
69 changes: 0 additions & 69 deletions packages/backend/src/api/endpoints/OrganizationPermissionApi.ts
Original file line number Diff line number Diff line change
@@ -1,69 +0,0 @@
import type { ClerkPaginationRequest } from '@clerk/types';

import { joinPaths } from '../../util/path';
import type { DeletedObject, Permission } from '../resources';
import { AbstractAPI } from './AbstractApi';

const basePath = '/organizations_permissions';

type GetOrganizationPermissionListParams = ClerkPaginationRequest<{
query?: string;
orderBy?: string;
}>;

type CreateParams = {
name: string;
key: string;
description: string;
};

type GetOrganizationPermissionParams = { permissionId: string };

type UpdateParams = {
name?: string;
key?: string;
description?: string;
};

export class OrganizationPermissionAPI extends AbstractAPI {
public async getOrganizationPermissionList(params?: GetOrganizationPermissionListParams) {
return this.request<Permission[]>({
method: 'GET',
path: basePath,
queryParams: params,
});
}

public async createOrganizationPermission(params: CreateParams) {
return this.request<Permission>({
method: 'POST',
path: basePath,
bodyParams: params,
});
}

public async getOrganizationPermission(params: GetOrganizationPermissionParams) {
this.requireId(params.permissionId);

return this.request<Permission>({
method: 'GET',
path: joinPaths(basePath, params.permissionId),
});
}

public async updateOrganizationPermission(permissionId: string, params: UpdateParams) {
this.requireId(permissionId);
return this.request<Permission>({
method: 'PATCH',
path: joinPaths(basePath, permissionId),
bodyParams: params,
});
}

public async deleteOrganizationPermission(permissionId: string) {
return this.request<DeletedObject>({
method: 'DELETE',
path: joinPaths(basePath, permissionId),
});
}
}
138 changes: 0 additions & 138 deletions packages/backend/src/api/endpoints/OrganizationRoleApi.ts
Original file line number Diff line number Diff line change
@@ -1,138 +0,0 @@
import type { ClerkPaginationRequest } from '@clerk/types';

import { joinPaths } from '../../util/path';
import type { DeletedObject, Role } from '../resources';
import { AbstractAPI } from './AbstractApi';

const basePath = '/organizations_roles';

type GetRoleListParams = ClerkPaginationRequest<{
query?: string;
order_by?: string;
}>;

type CreateParams = {
/**
* A name of a role in a readable friendly format.
* F.e. `Teacher` or `Administrator`
*/
name: string;

/**
* A unique identifier that represents the role.
* F.e. `org:administrator`
*/
key: string;

/**
* A brief description of what the role represents or its intended use.
*/
description: string;

/**
* An array of permission ids that will be assigned to this role.
*/
permissions: string[];
};

type GetOrganizationRoleParams = { roleId: string };

type UpdateParams = {
/**
* A name of a role in a readable friendly format.
* F.e. `Teacher` or `Administrator`
* Passing undefined has no effect to the existing value.
*/
name?: string;

/**
* A unique identifier that represents the role.
* F.e. `org:administrator`
* Passing undefined has no effect to the existing value.
*/
key?: string;

/**
* A brief description of what the role represents or its intended use.
* Passing undefined has no effect to the existing value.
*/
description?: string;

/**
* An array of permission ids that will be assigned to this role.
* Passing undefined has no effect to the permission that already exist.
* Passing an empty array will override the existing permissions.
*/
permissions?: string[];
};

type RemovePermissionParams = {
permissionId: string;
roleId: string;
};

type AssignPermissionParams = RemovePermissionParams;

export class OrganizationRoleAPI extends AbstractAPI {
public async getOrganizationRoleList(params?: GetRoleListParams) {
return this.request<Role[]>({
method: 'GET',
path: basePath,
queryParams: params,
});
}

public async createOrganizationRole(params: CreateParams) {
return this.request<Role>({
method: 'POST',
path: basePath,
bodyParams: params,
});
}

public async getOrganizationRole(params: GetOrganizationRoleParams) {
this.requireId(params.roleId);

return this.request<Role>({
method: 'GET',
path: joinPaths(basePath, params.roleId),
});
}

public async updateOrganizationRole(roleId: string, params: UpdateParams) {
this.requireId(roleId);
return this.request<Role>({
method: 'PATCH',
path: joinPaths(basePath, roleId),
bodyParams: params,
});
}

public async deleteOrganizationRole(roleId: string) {
this.requireId(roleId);
return this.request<DeletedObject>({
method: 'DELETE',
path: joinPaths(basePath, roleId),
});
}

public async assignPermissionToRole(params: AssignPermissionParams) {
const { roleId, permissionId } = params;
this.requireId(roleId);
this.requireId(permissionId);
return this.request<Role>({
method: 'POST',
path: joinPaths(basePath, roleId, 'permission', permissionId),
});
}

public async removePermissionFromRole(params: RemovePermissionParams) {
const { roleId, permissionId } = params;
this.requireId(roleId);
this.requireId(permissionId);
return this.request<Role>({
method: 'DELETE',
path: joinPaths(basePath, roleId, 'permission', permissionId),
});
}
}
2 changes: 0 additions & 2 deletions packages/backend/src/api/endpoints/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ export * from './EmailApi';
export * from './InterstitialApi';
export * from './InvitationApi';
export * from './OrganizationApi';
export * from './OrganizationRoleApi';
export * from './OrganizationPermissionApi';
export * from './PhoneNumberApi';
export * from './RedirectUrlApi';
export * from './SessionApi';
Expand Down
5 changes: 1 addition & 4 deletions packages/backend/src/api/factory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ import {
InterstitialAPI,
InvitationAPI,
OrganizationAPI,
OrganizationPermissionAPI,
OrganizationRoleAPI,
PhoneNumberAPI,
RedirectUrlAPI,
SessionAPI,
Expand All @@ -23,6 +21,7 @@ export type ApiClient = ReturnType<typeof createBackendApiClient>;

export function createBackendApiClient(options: CreateBackendApiOptions) {
const request = buildRequest(options);

return {
allowlistIdentifiers: new AllowlistIdentifierAPI(request),
clients: new ClientAPI(request),
Expand All @@ -31,8 +30,6 @@ export function createBackendApiClient(options: CreateBackendApiOptions) {
interstitial: new InterstitialAPI(request),
invitations: new InvitationAPI(request),
organizations: new OrganizationAPI(request),
organizationRoles: new OrganizationRoleAPI(request),
organizationPermissions: new OrganizationPermissionAPI(request),
phoneNumbers: new PhoneNumberAPI(request),
redirectUrls: new RedirectUrlAPI(request),
sessions: new SessionAPI(request),
Expand Down
5 changes: 0 additions & 5 deletions packages/backend/src/api/resources/Enums.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,6 @@ export type OAuthStrategy = `oauth_${OAuthProvider}`;

export type OrganizationInvitationStatus = 'pending' | 'accepted' | 'revoked';

export type PermissionType = 'system' | 'user';

/**
* @deprecated In the next major release this type will change to string
*/
export type OrganizationMembershipRole = 'basic_member' | 'guest_member' | 'admin';

export type SignInStatus = 'needs_identifier' | 'needs_factor_one' | 'needs_factor_two' | 'complete';
Expand Down
24 changes: 0 additions & 24 deletions packages/backend/src/api/resources/JSON.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import type {
InvitationStatus,
OrganizationInvitationStatus,
OrganizationMembershipRole,
PermissionType,
SignInStatus,
SignUpAttributeRequirements,
SignUpStatus,
Expand All @@ -21,8 +20,6 @@ export enum ObjectType {
Organization = 'organization',
OrganizationInvitation = 'organization_invitation',
OrganizationMembership = 'organization_membership',
Role = 'role',
Permission = 'permission',
PhoneNumber = 'phone_number',
RedirectUrl = 'redirect_url',
Session = 'session',
Expand Down Expand Up @@ -175,27 +172,6 @@ export interface OrganizationMembershipPublicUserDataJSON {
user_id: string;
}

export interface RoleJSON extends ClerkResourceJSON {
object: ObjectType.Role;
name: string;
key: string;
description: string;
permissions: PermissionJSON[];
created_at: number;
updated_at: number;
}

export interface PermissionJSON extends ClerkResourceJSON {
object: ObjectType.Permission;
id: string;
name: string;
key: string;
description: string;
type: PermissionType;
created_at: number;
updated_at: number;
}

export interface PhoneNumberJSON extends ClerkResourceJSON {
object: ObjectType.PhoneNumber;
phone_number: string;
Expand Down
18 changes: 0 additions & 18 deletions packages/backend/src/api/resources/Permission.ts

This file was deleted.

26 changes: 0 additions & 26 deletions packages/backend/src/api/resources/Role.ts

This file was deleted.

2 changes: 0 additions & 2 deletions packages/backend/src/api/resources/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,6 @@ export * from './Invitation';
export * from './JSON';
export * from './OauthAccessToken';
export * from './Organization';
export * from './Role';
export * from './Permission';
export * from './OrganizationInvitation';
export * from './OrganizationMembership';
export * from './PhoneNumber';
Expand Down
2 changes: 0 additions & 2 deletions packages/backend/src/exports.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,8 @@ export default (QUnit: QUnit) => {
'OrganizationInvitation',
'OrganizationMembership',
'OrganizationMembershipPublicUserData',
'Permission',
'PhoneNumber',
'RedirectUrl',
'Role',
'SMSMessage',
'Session',
'SignInToken',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,8 @@ exports[`/server public exports should not include a breaking change 1`] = `
"OrganizationInvitation",
"OrganizationMembership",
"OrganizationMembershipPublicUserData",
"Permission",
"PhoneNumber",
"RedirectUrl",
"Role",
"SMSMessage",
"Session",
"SignInToken",
Expand Down
Loading

0 comments on commit 93d05c8

Please sign in to comment.