Skip to content

Commit

Permalink
feat: Add page to show permissions admin in dev mode plugin AdminCP
Browse files Browse the repository at this point in the history
  • Loading branch information
aXenDeveloper committed Oct 7, 2024
1 parent d53554d commit d363f50
Show file tree
Hide file tree
Showing 24 changed files with 227 additions and 17 deletions.
8 changes: 4 additions & 4 deletions .github/workflows/publish.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ jobs:
run: pnpm run build:scripts

- name: Build Projects
run: pnpm run build --filter=vitnode-backend --filter=vitnode-frontend --filter=vitnode-backend-email-resend --filter=vitnode-backend-email-smtp
run: pnpm run build --filter=vitnode-backend --filter=vitnode-frontend --filter=vitnode-backend-email-resend --filter=vitnode-backend-email-smtp --filter=vitnode-backend-ai-google --filter=vitnode-backend-ai-open-ai

- name: Run script to bump version
run: pnpm run release
Expand All @@ -74,21 +74,21 @@ jobs:

- name: Publish canary
if: github.event.inputs.release == 'canary'
run: pnpm publish --access public --filter vitnode-backend --filter vitnode-backend-email-resend --filter vitnode-backend-email-smtp --filter vitnode-frontend --filter create-vitnode-app --filter eslint-config-typescript-vitnode --tag canary --no-git-checks
run: pnpm publish --access public --filter vitnode-backend --filter vitnode-backend-email-resend --filter vitnode-backend-email-smtp --filter vitnode-backend-ai-google --filter vitnode-backend-ai-open-ai --filter vitnode-frontend --filter create-vitnode-app --filter eslint-config-typescript-vitnode --tag canary --no-git-checks
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
NPM_CONFIG_PROVENANCE: true

- name: Publish release candidate
if: github.event.inputs.release == 'release-candidate'
run: pnpm publish --access public --filter vitnode-backend --filter vitnode-backend-email-resend --filter vitnode-backend-email-smtp --filter vitnode-frontend --filter create-vitnode-app --filter eslint-config-typescript-vitnode --tag rc --no-git-checks
run: pnpm publish --access public --filter vitnode-backend --filter vitnode-backend-email-resend --filter vitnode-backend-email-smtp --filter vitnode-backend-ai-google --filter vitnode-backend-ai-open-ai --filter vitnode-frontend --filter create-vitnode-app --filter eslint-config-typescript-vitnode --tag rc --no-git-checks
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
NPM_CONFIG_PROVENANCE: true

- name: Publish stable
if: github.event.inputs.release == 'stable'
run: pnpm publish --access public --filter vitnode-backend --filter vitnode-backend-email-resend --filter vitnode-backend-email-smtp --filter vitnode-frontend --filter create-vitnode-app --filter eslint-config-typescript-vitnode --no-git-checks
run: pnpm publish --access public --filter vitnode-backend --filter vitnode-backend-email-resend --filter vitnode-backend-email-smtp --filter vitnode-backend-ai-google --filter vitnode-backend-ai-open-ai --filter vitnode-frontend --filter create-vitnode-app --filter eslint-config-typescript-vitnode --no-git-checks
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
NPM_CONFIG_PROVENANCE: true
10 changes: 10 additions & 0 deletions apps/backend/schema.gql
Original file line number Diff line number Diff line change
Expand Up @@ -298,6 +298,7 @@ type Query {
admin__core_members__show(cursor: Int, first: Int, groups: [Int!], id: Float, last: Int, search: String, sortBy: ShowAdminMembersSortByArgs): ShowAdminMembersObj!
admin__core_members__stats_sign_up: [SignUpStatsAdminMembers!]!
admin__core_plugins__nav__show(plugin_code: String!): [ShowAdminNavPluginsObj!]!
admin__core_plugins__permissions_admin__show(plugin_code: String!): [ShowAdminPermissionsAdminPluginsObj!]!
admin__core_plugins__show(code: String, cursor: Int, first: Int, last: Int, search: String, sortBy: ShowAdminPluginsSortByArgs): ShowAdminPluginsObj!
admin__core_security__captcha__show: ShowAdminCaptchaSecurityObj!
admin__core_staff_administrators__show(cursor: Int, first: Int, last: Int, sortBy: ShowAdminStaffAdministratorsSortByArgs): ShowAdminStaffAdministratorsObj!
Expand Down Expand Up @@ -458,6 +459,15 @@ type ShowAdminNavPluginsObj {
keywords: [String!]!
}

type ShowAdminPermissionsAdminPlugins {
id: String!
}

type ShowAdminPermissionsAdminPluginsObj {
children: [ShowAdminPermissionsAdminPlugins!]!
id: String!
}

type ShowAdminPlugins {
allow_default: Boolean!
author: String!
Expand Down
2 changes: 1 addition & 1 deletion apps/backend/src/plugins/welcome/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"nav": [
{
"code": "test",
"icon": "a-arrow-down",
"icon": "accessibility",
"keywords": [],
"children": [
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import { PermissionsAdminDevPluginAdminView } from 'vitnode-frontend/views/admin/views/core/plugins/views/dev/permissions-admin/permissions-admin';

export default function Page() {
return <PermissionsAdminDevPluginAdminView />;
export default function Page(
props: React.ComponentProps<typeof PermissionsAdminDevPluginAdminView>,
) {
return <PermissionsAdminDevPluginAdminView {...props} />;
}
17 changes: 17 additions & 0 deletions apps/frontend/src/graphql/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -668,6 +668,7 @@ export type Query = {
admin__core_members__show: ShowAdminMembersObj;
admin__core_members__stats_sign_up: Array<SignUpStatsAdminMembers>;
admin__core_plugins__nav__show: Array<ShowAdminNavPluginsObj>;
admin__core_plugins__permissions_admin__show: Array<ShowAdminPermissionsAdminPluginsObj>;
admin__core_plugins__show: ShowAdminPluginsObj;
admin__core_security__captcha__show: ShowAdminCaptchaSecurityObj;
admin__core_staff_administrators__show: ShowAdminStaffAdministratorsObj;
Expand Down Expand Up @@ -732,6 +733,11 @@ export type QueryAdmin__Core_Plugins__Nav__ShowArgs = {
};


export type QueryAdmin__Core_Plugins__Permissions_Admin__ShowArgs = {
plugin_code: Scalars['String']['input'];
};


export type QueryAdmin__Core_Plugins__ShowArgs = {
code?: InputMaybe<Scalars['String']['input']>;
cursor?: InputMaybe<Scalars['Int']['input']>;
Expand Down Expand Up @@ -966,6 +972,17 @@ export type ShowAdminNavPluginsObj = {
keywords: Array<Scalars['String']['output']>;
};

export type ShowAdminPermissionsAdminPlugins = {
__typename?: 'ShowAdminPermissionsAdminPlugins';
id: Scalars['String']['output'];
};

export type ShowAdminPermissionsAdminPluginsObj = {
__typename?: 'ShowAdminPermissionsAdminPluginsObj';
children: Array<ShowAdminPermissionsAdminPlugins>;
id: Scalars['String']['output'];
};

export type ShowAdminPlugins = {
__typename?: 'ShowAdminPlugins';
allow_default: Scalars['Boolean']['output'];
Expand Down
2 changes: 2 additions & 0 deletions bump-version.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ const packages = [
'eslint-config-typescript-vitnode',
'backend-email-resend',
'backend-email-smtp',
'backend-ai-open-ai',
'backend-ai-google',
];

const getPackageJson = () => {
Expand Down
2 changes: 1 addition & 1 deletion packages/backend-ai-google/.npmignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/src
/.turbo
/node_modules
/.eslintrc.json
/eslint.config.mjs
/tsconfig.json
/.swcrc
2 changes: 1 addition & 1 deletion packages/backend-ai-open-ai/.npmignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/src
/.turbo
/node_modules
/.eslintrc.json
/eslint.config.mjs
/tsconfig.json
/.swcrc
2 changes: 1 addition & 1 deletion packages/backend-email-resend/.npmignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/src
/.turbo
/node_modules
/.eslintrc.json
/eslint.config.mjs
/tsconfig.json
/.swcrc
2 changes: 1 addition & 1 deletion packages/backend/.npmignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
!/src/database
/.turbo
/node_modules
/.eslintrc.json
/eslint.config.mjs
/tsconfig.json
/tsup.config.ts
/.swcrc
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ export class EditAdminNavPluginsService {
code: currentCode,
icon: icon ?? null,
keywords,
children: config.nav[navIndex]?.children,
};
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { Module } from '@nestjs/common';

import { ShowAdminPermissionsAdminPluginsResolver } from './show/show.resolver';
import { ShowAdminPermissionsAdminPluginsService } from './show/show.service';

@Module({
providers: [
ShowAdminPermissionsAdminPluginsResolver,
ShowAdminPermissionsAdminPluginsService,
],
})
export class AdminPermissionsAdminPluginsModule {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { Field, ObjectType } from '@nestjs/graphql';
@ObjectType()
export class ShowAdminPermissionsAdminPlugins {
@Field(() => String)
id: string;
}

@ObjectType()
export class ShowAdminPermissionsAdminPluginsObj extends ShowAdminPermissionsAdminPlugins {
@Field(() => [ShowAdminPermissionsAdminPlugins])
children: ShowAdminPermissionsAdminPlugins[];
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { AdminAuthGuards, OnlyForDevelopment } from '@/utils';
import { UseGuards } from '@nestjs/common';
import { Args, Query, Resolver } from '@nestjs/graphql';

import { ShowAdminPermissionsAdminPluginsObj } from './show.dto';
import { ShowAdminPermissionsAdminPluginsService } from './show.service';

@Resolver()
export class ShowAdminPermissionsAdminPluginsResolver {
constructor(
private readonly service: ShowAdminPermissionsAdminPluginsService,
) {}

@Query(() => [ShowAdminPermissionsAdminPluginsObj])
@UseGuards(AdminAuthGuards)
@UseGuards(OnlyForDevelopment)
async admin__core_plugins__permissions_admin__show(
@Args('plugin_code', { type: () => String }) plugin_code: string,
): Promise<ShowAdminPermissionsAdminPluginsObj[]> {
return await this.service.show({ plugin_code });
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import { ABSOLUTE_PATHS_BACKEND, ConfigPlugin, NotFoundError } from '@/index';
import { Injectable } from '@nestjs/common';
import { existsSync } from 'fs';
import { readFile } from 'fs/promises';

import { ShowAdminPermissionsAdminPluginsObj } from './show.dto';

@Injectable()
export class ShowAdminPermissionsAdminPluginsService {
async show({
plugin_code,
}: {
plugin_code: string;
}): Promise<ShowAdminPermissionsAdminPluginsObj[]> {
const pathConfig = ABSOLUTE_PATHS_BACKEND.plugin({
code: plugin_code,
}).config;
if (!existsSync(pathConfig)) {
throw new NotFoundError('Plugin');
}

const config: ConfigPlugin = JSON.parse(await readFile(pathConfig, 'utf8'));

return config.permissions_admin ?? [];
}
}
3 changes: 2 additions & 1 deletion packages/backend/src/core/admin/plugins/plugins.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { EditAdminPluginsService } from './edit/edit.service';
import { ChangeFilesAdminPluginsService } from './helpers/files/change/change.service';
import { CreateFilesAdminPluginsService } from './helpers/files/create/create-files.service';
import { AdminNavPluginsModule } from './nav/nav-plugins.module';
import { AdminPermissionsAdminPluginsModule } from './permissions-admin/permissions-admin.module';
import { ShowAdminPluginsResolver } from './show/show.resolver';
import { ShowAdminPluginsService } from './show/show.service';
import { UploadAdminPluginsResolver } from './upload/upload.resolver';
Expand All @@ -33,6 +34,6 @@ import { UploadAdminPluginsService } from './upload/upload.service';
EditAdminPluginsResolver,
EditAdminPluginsService,
],
imports: [AdminNavPluginsModule],
imports: [AdminNavPluginsModule, AdminPermissionsAdminPluginsModule],
})
export class AdminPluginsModule {}
1 change: 1 addition & 0 deletions packages/backend/src/providers/plugins.type.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ export interface NavPluginInfoJSONTypeWithChildren
export interface PluginInfoJSONType extends CreateAdminPluginsArgs {
allow_default: boolean;
nav: NavPluginInfoJSONTypeWithChildren[];
permissions_admin?: [];
version: string;
version_code: number;
}
Expand Down
2 changes: 1 addition & 1 deletion packages/create-vitnode-app/.npmignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@
/index.ts
/tsconfig.json
/tsup.config.ts
/.eslintrc.json
/eslint.config.mjs
2 changes: 1 addition & 1 deletion packages/frontend/.npmignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
!/src/global.css
/scripts
/node_modules
/.eslintrc.json
/eslint.config.mjs
/codegen.ts
/next-env.d.ts
/tsconfig.json
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import * as Types from '../../../../../types';

import gql from 'graphql-tag';
export type Admin__Core_Plugins__Permissions_Admin__ShowQueryVariables = Types.Exact<{
pluginCode: Types.Scalars['String']['input'];
}>;


export type Admin__Core_Plugins__Permissions_Admin__ShowQuery = { __typename?: 'Query', admin__core_plugins__permissions_admin__show: Array<{ __typename?: 'ShowAdminPermissionsAdminPluginsObj', id: string, children: Array<{ __typename?: 'ShowAdminPermissionsAdminPlugins', id: string }> }> };


export const Admin__Core_Plugins__Permissions_Admin__Show = gql`
query Admin__core_plugins__permissions_admin__show($pluginCode: String!) {
admin__core_plugins__permissions_admin__show(plugin_code: $pluginCode) {
children {
id
}
id
}
}
`;
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
query Admin__core_plugins__permissions_admin__show($pluginCode: String!) {
admin__core_plugins__permissions_admin__show(plugin_code: $pluginCode) {
children {
id
}
id
}
}
17 changes: 17 additions & 0 deletions packages/frontend/src/graphql/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -668,6 +668,7 @@ export type Query = {
admin__core_members__show: ShowAdminMembersObj;
admin__core_members__stats_sign_up: Array<SignUpStatsAdminMembers>;
admin__core_plugins__nav__show: Array<ShowAdminNavPluginsObj>;
admin__core_plugins__permissions_admin__show: Array<ShowAdminPermissionsAdminPluginsObj>;
admin__core_plugins__show: ShowAdminPluginsObj;
admin__core_security__captcha__show: ShowAdminCaptchaSecurityObj;
admin__core_staff_administrators__show: ShowAdminStaffAdministratorsObj;
Expand Down Expand Up @@ -732,6 +733,11 @@ export type QueryAdmin__Core_Plugins__Nav__ShowArgs = {
};


export type QueryAdmin__Core_Plugins__Permissions_Admin__ShowArgs = {
plugin_code: Scalars['String']['input'];
};


export type QueryAdmin__Core_Plugins__ShowArgs = {
code?: InputMaybe<Scalars['String']['input']>;
cursor?: InputMaybe<Scalars['Int']['input']>;
Expand Down Expand Up @@ -966,6 +972,17 @@ export type ShowAdminNavPluginsObj = {
keywords: Array<Scalars['String']['output']>;
};

export type ShowAdminPermissionsAdminPlugins = {
__typename?: 'ShowAdminPermissionsAdminPlugins';
id: Scalars['String']['output'];
};

export type ShowAdminPermissionsAdminPluginsObj = {
__typename?: 'ShowAdminPermissionsAdminPluginsObj';
children: Array<ShowAdminPermissionsAdminPlugins>;
id: Scalars['String']['output'];
};

export type ShowAdminPlugins = {
__typename?: 'ShowAdminPlugins';
allow_default: Scalars['Boolean']['output'];
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
'use client';

import { DragAndDropSortableList } from '@/components/drag&drop/sortable-list/list';
import { Admin__Core_Plugins__Permissions_Admin__ShowQuery } from '@/graphql/queries/admin/plugins/dev/permissions-admin/admin__core_plugins__permissions_admin__show.generated';

export const ContentPermissionsAdminDevPluginAdminView = ({
admin__core_plugins__permissions_admin__show,
}: Admin__Core_Plugins__Permissions_Admin__ShowQuery) => {
const data = admin__core_plugins__permissions_admin__show.map(item => ({
...item,
children: item.children.map(child => ({
...child,
children: [],
})),
}));

return (
<DragAndDropSortableList
componentItem={data => {
return <div>{data.id}</div>;
}}
data={data}
/>
);
};
Loading

0 comments on commit d363f50

Please sign in to comment.