Small typo, the working implementation uses create() not assignPermissions()
for (const permission of permissions) {
const roleHasThePermission = roleObject.permissions.some(perm => perm.action === permission.action && perm.subject === permission.subject)
if (!roleHasThePermission) {
await strapi.query('admin::permission').create({ data: {
action: permission.action,
subject:permission.subject,
properties: {
fields: permission.properties.fields,
locales: ["en-US"]
},
conditions:permission.conditions,
role: roleObject.id,
} })
}
}