!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 

uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/var/www/html/wincloud_gateway/node_modules/strapi-admin/config/migrations/   drwxr-xr-x
Free 13.24 GB of 57.97 GB (22.85%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     permissions-fields-to-properties.js (3.03 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
'use strict';

const { has, isObject } = require('lodash/fp');

const permissionModelUID = 'strapi::permission';

const hasAttribute = attribute => has(`attributes.${attribute}`);
const hasFieldsAttribute = hasAttribute('fields');
const hasPropertiesAttribute = hasAttribute('properties');

const shouldRunMigration = (definition, previousDefinition) => {
  const isAdminPermissionModel = definition.uid === permissionModelUID;

  const hadFieldsButNotProperties =
    hasFieldsAttribute(previousDefinition) && !hasPropertiesAttribute(previousDefinition);

  const hasPropertiesButNotFields =
    !hasFieldsAttribute(definition) && hasPropertiesAttribute(definition);

  const targetedFieldsHaveChanged = hadFieldsButNotProperties && hasPropertiesButNotFields;

  return isAdminPermissionModel && targetedFieldsHaveChanged;
};

const permissionsFinderByORM = {
  async bookshelf(model) {
    const permissions = await model.fetchAll();

    return permissions.toJSON().map(permission => {
      const fields = permission.fields;

      return {
        ...permission,
        fields: isObject(fields) ? fields : JSON.parse(fields),
      };
    });
  },

  async mongoose(model) {
    return model.find().lean();
  },
};

module.exports = {
  shouldRun: {
    before(options) {
      const { definition, previousDefinition } = options;

      return shouldRunMigration(definition, previousDefinition);
    },

    after(options, context) {
      const { definition, previousDefinition } = options;
      const { permissionsFieldsToProperties = {} } = context;
      const { permissions = [] } = permissionsFieldsToProperties;

      return shouldRunMigration(definition, previousDefinition) && permissions.length > 0;
    },
  },

  // Here we make a backup of the permission objects in the database, then we store it into the migration context
  async before(options, context) {
    const { model } = options;

    const permissions = await permissionsFinderByORM[model.orm](model);

    Object.assign(context, { permissionsFieldsToProperties: { permissions } });
  },

  // Based on the permissions sent in the context, we perform an update. { fields } => { properties: { fields } }
  async after(options, context) {
    const { model, ORM } = options;
    const { permissionsFieldsToProperties = {} } = context;
    const { permissions = [] } = permissionsFieldsToProperties;

    if (model.orm === 'bookshelf') {
      const update = async transacting => {
        for (const permission of permissions) {
          const { fields, ...rest } = permission;

          await model
            .forge({ id: rest.id })
            .save({ properties: { fields } }, { patch: true, transacting });
        }
      };

      await ORM.transaction(transacting => update(transacting));
    }

    if (model.orm === 'mongoose') {
      for (const permission of permissions) {
        const { fields, _id } = permission;

        await model.updateOne(
          { _id },
          {
            $set: { properties: { fields } },
            $unset: { fields: true },
          }
        );
      }
    }
  },
};

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0352 ]--