Search code examples
strapi

Strapi v4 sanitizeEntity


I'm trying out the new strapi v4 right now (4.0.0) community edition. I've got a custom controller which queries for the current user and (in the future) fetches related objects.

When I did this with strapi v3 I used the built-in sanititzeEntitiy - helper function to remove sensitive fields from the user instance. In v4 however, this function appears to not exist anymore and I can't figure out how to achieve this.

Is there anyone that can help me with this? My code so far is:

module.exports = {
  currentUser: async(ctx, next) => {
    let user = ctx.state.user;
    // TODO: sanitize this
  }
}

In v3 I just did return sanitizeEntity(user); which would have the desired effect. I just can't figure out how to do this in v4 and I can't find anything related to that in the docs.


Solution

  • So I simultaneously posted this question on the strapi community forums. A user named JustJerem got me an answer to this question which looks like this:

    **const { sanitizeEntity } = require("strapi-utils/lib");**
    
    module.exports = (plugin) => {
    
      plugin.controllers.user.deleteMe = async (ctx) => {
        const entity = await strapi.entityService.delete('plugin::users-permissions.user', user.id)
        var result = **sanitizeEntity(entity, { model: strapi.getModel('plugin::users-permissions.user') })**
        return result
      };
    //...
    };
    

    The original answer in the strapi forums can be found here:

    https://forum.strapi.io/t/v4-0-0-sanitize-user-data/13326/4?u=derelektrischemoench

    All credits to this solution go out to JustJerem on the strapi boards. Doing it like this worked for me. Hopefully this can help someone else, too.

    Greetings, derelektrischemoench