diff --git a/server/migrations/20250914-add-allow-registration.js b/server/migrations/20250914-add-allow-registration.js index 5620823..2d04a8b 100644 --- a/server/migrations/20250914-add-allow-registration.js +++ b/server/migrations/20250914-add-allow-registration.js @@ -7,35 +7,28 @@ module.exports = { up: async (queryInterface, Sequelize) => { - try { - // Check if tenants table exists first - const tables = await queryInterface.showAllTables(); - if (!tables.includes('tenants')) { - console.log('⚠️ Tenants table does not exist yet, skipping allow_registration migration...'); - return; - } - - await queryInterface.addColumn('tenants', 'allow_registration', { - type: Sequelize.BOOLEAN, - defaultValue: false, // Default to false for security - allowNull: false, - comment: 'Whether self-registration is allowed for local auth' - }); - - // For existing tenants, you might want to enable registration for specific tenants - // Uncomment the line below to enable registration for all existing tenants (NOT RECOMMENDED for production) - // await queryInterface.sequelize.query("UPDATE tenants SET allow_registration = true WHERE auth_provider = 'local'"); + // Check if the column already exists + const tableDescription = await queryInterface.describeTable('tenants'); - console.log('✅ Added allow_registration field to tenants table'); - console.log('⚠️ Registration is disabled by default for all tenants for security'); - console.log('💡 To enable registration for a tenant, update the allow_registration field to true'); - } catch (error) { - console.log('⚠️ Migration skipped - tables may not exist yet:', error.message); - // Don't throw error, just skip this migration if tables don't exist - } - }, + if (!tableDescription.allow_registration) { + await queryInterface.addColumn('tenants', 'allow_registration', { + type: Sequelize.BOOLEAN, + defaultValue: false, // Default to false for security + allowNull: false, + comment: 'Whether self-registration is allowed for local auth' + }); - down: async (queryInterface, Sequelize) => { + // For existing tenants, you might want to enable registration for specific tenants + // Uncomment the line below to enable registration for all existing tenants (NOT RECOMMENDED for production) + // await queryInterface.sequelize.query("UPDATE tenants SET allow_registration = true WHERE auth_provider = 'local'"); + + console.log('✅ Added allow_registration field to tenants table'); + console.log('⚠️ Registration is disabled by default for all tenants for security'); + console.log('💡 To enable registration for a tenant, update the allow_registration field to true'); + } else { + console.log('⚠️ Column allow_registration already exists, skipping...'); + } + }, down: async (queryInterface, Sequelize) => { await queryInterface.removeColumn('tenants', 'allow_registration'); console.log('✅ Removed allow_registration field from tenants table'); }