Способ генерации уникального ключа у Laravel слишком длинный. Вы можете изменить это, выполнив
$table->unique(['user_id', 'permission_id', 'user_type', 'project_id'], 'my_unique_ref');
Кроме того, если внешние ключи слишком длинные, вы можете переопределить имя по умолчанию, но предоставив второй параметр.
$table->foreign('permission_id', 'my_new_reference')->references('id')->on('permissions')
->onUpdate('cascade')->onDelete('cascade');