Plugins: add validation for uploading file
This commit is contained in:
parent
30906a305f
commit
4c4fa75af9
@ -53,13 +53,14 @@ export class PluginsController {
|
||||
)
|
||||
async upload(
|
||||
@UploadedFiles() files: Express.Multer.File[]
|
||||
): Promise<{ response: Plugin } | { response: { error: string } }> {
|
||||
): Promise<{ response: Plugin | { error: string } }> {
|
||||
try {
|
||||
if (files[0]) {
|
||||
const plugin = await this.pluginsService.upload(
|
||||
files[0].originalname,
|
||||
files[0].filename
|
||||
);
|
||||
|
||||
return { response: plugin };
|
||||
} else {
|
||||
return {
|
||||
|
@ -39,11 +39,36 @@ export class PluginsService {
|
||||
return plugin;
|
||||
}
|
||||
|
||||
async upload(originalname: string, filename: string): Promise<Plugin> {
|
||||
async upload(
|
||||
originalname: string,
|
||||
filename: string
|
||||
): Promise<Plugin | { error: string }> {
|
||||
const plugin: Plugin = new Plugin();
|
||||
|
||||
const dir = path.join(__dirname, pathToPlugins, `${filename}`);
|
||||
|
||||
const name = originalname.split(".")[0];
|
||||
|
||||
const contents = fs.readFileSync(dir, "utf8");
|
||||
|
||||
let isPlugin = true;
|
||||
|
||||
isPlugin = contents.includes(`"dependencies":{"docspace-plugin"`);
|
||||
|
||||
const splitName = name.split("");
|
||||
|
||||
splitName[0].toUpperCase();
|
||||
|
||||
isPlugin = contents.includes(`window.Plugins.${splitName.join("")}`);
|
||||
|
||||
isPlugin = contents.includes(".prototype.getPluginName=function()");
|
||||
|
||||
isPlugin = contents.includes(".prototype.getPluginVersion=function()");
|
||||
|
||||
isPlugin = contents.includes(".prototype.activate=function()");
|
||||
|
||||
isPlugin = contents.includes(".prototype.deactivate=function()");
|
||||
|
||||
plugin.name = name;
|
||||
plugin.filename = filename;
|
||||
|
||||
@ -51,6 +76,11 @@ export class PluginsService {
|
||||
|
||||
await this.pluginsRepository.save(plugin);
|
||||
|
||||
if (!isPlugin) {
|
||||
this.delete(plugin.id);
|
||||
return { error: "It is not a plugin" };
|
||||
}
|
||||
|
||||
return plugin;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user