Customize controller for uploading profile picture in user-permission

Try this in the controller:

  async updatepfp(ctx){
    let entity;
    const id = ctx.state.user.id;

    if (ctx.is('multipart')) {
      const { data, files } = parseMultipartData(ctx);
      entity = await strapi.services.user.updateUser(id, {}, {files});
    } else {
      entity = await strapi.services.user.updateUser(id, ctx.request.body);
    }
    return sanitizeEntity(entity, { model: strapi.models.user });
  }

Then add a custom function in ./extensions/users-permissions/services/Users.js:

'use strict';

module.exports = {

  updateUser: async (id, data) => {
    return await strapi.query('user', 'users-permissions').update({id}, data)
  },

};