From 0575e9d1e605c52badcafc6f2610e7fe2b635313 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Wed, 25 Feb 2026 01:04:17 +0000 Subject: [PATCH] centraldoimigrante --- ...5000000-add-immigration-fields-to-users.js | 36 +++++++++++++ ...20260225000001-grant-public-permissions.js | 47 ++++++++++++++++ backend/src/db/models/users.js | 53 +++++-------------- backend/src/index.js | 6 +-- backend/src/services/auth.js | 6 +-- 5 files changed, 102 insertions(+), 46 deletions(-) create mode 100644 backend/src/db/migrations/20260225000000-add-immigration-fields-to-users.js create mode 100644 backend/src/db/migrations/20260225000001-grant-public-permissions.js diff --git a/backend/src/db/migrations/20260225000000-add-immigration-fields-to-users.js b/backend/src/db/migrations/20260225000000-add-immigration-fields-to-users.js new file mode 100644 index 0000000..91408be --- /dev/null +++ b/backend/src/db/migrations/20260225000000-add-immigration-fields-to-users.js @@ -0,0 +1,36 @@ + +module.exports = { + async up(queryInterface, Sequelize) { + const transaction = await queryInterface.sequelize.transaction(); + try { + await queryInterface.addColumn('users', 'country_of_origin', { + type: Sequelize.DataTypes.TEXT, + allowNull: true, + }, { transaction }); + await queryInterface.addColumn('users', 'visa_type', { + type: Sequelize.DataTypes.TEXT, + allowNull: true, + }, { transaction }); + await queryInterface.addColumn('users', 'arrival_date', { + type: Sequelize.DataTypes.DATE, + allowNull: true, + }, { transaction }); + await transaction.commit(); + } catch (err) { + await transaction.rollback(); + throw err; + } + }, + async down(queryInterface, Sequelize) { + const transaction = await queryInterface.sequelize.transaction(); + try { + await queryInterface.removeColumn('users', 'country_of_origin', { transaction }); + await queryInterface.removeColumn('users', 'visa_type', { transaction }); + await queryInterface.removeColumn('users', 'arrival_date', { transaction }); + await transaction.commit(); + } catch (err) { + await transaction.rollback(); + throw err; + } + } +}; diff --git a/backend/src/db/migrations/20260225000001-grant-public-permissions.js b/backend/src/db/migrations/20260225000001-grant-public-permissions.js new file mode 100644 index 0000000..68031f2 --- /dev/null +++ b/backend/src/db/migrations/20260225000001-grant-public-permissions.js @@ -0,0 +1,47 @@ + +module.exports = { + async up(queryInterface, Sequelize) { + const transaction = await queryInterface.sequelize.transaction(); + try { + const [roles] = await queryInterface.sequelize.query( + "SELECT id FROM roles WHERE name = 'Public' LIMIT 1;", + { transaction } + ); + const publicRoleId = roles[0]?.id; + + if (!publicRoleId) { + throw new Error("Public role not found"); + } + + const permissionsToGrant = [ + 'READ_POSTS', + 'READ_SERVICE_CATALOG_ITEMS', + 'READ_POST_CATEGORIES' + ]; + + const [permissions] = await queryInterface.sequelize.query( + `SELECT id FROM permissions WHERE name IN (${permissionsToGrant.map(p => `'${p}'`).join(',')});`, + { transaction } + ); + + const records = permissions.map(p => ({ + createdAt: new Date(), + updatedAt: new Date(), + roles_permissionsId: publicRoleId, + permissionId: p.id + })); + + if (records.length > 0) { + await queryInterface.bulkInsert('rolesPermissionsPermissions', records, { transaction }); + } + + await transaction.commit(); + } catch (err) { + await transaction.rollback(); + throw err; + } + }, + async down(queryInterface, Sequelize) { + // Implementation of down migration if needed + } +}; diff --git a/backend/src/db/models/users.js b/backend/src/db/models/users.js index 25fe0fb..736f223 100644 --- a/backend/src/db/models/users.js +++ b/backend/src/db/models/users.js @@ -16,94 +16,68 @@ module.exports = function(sequelize, DataTypes) { firstName: { type: DataTypes.TEXT, - - - }, lastName: { type: DataTypes.TEXT, - - - }, phoneNumber: { type: DataTypes.TEXT, - - - }, email: { type: DataTypes.TEXT, - - - }, disabled: { type: DataTypes.BOOLEAN, - allowNull: false, defaultValue: false, - - - }, password: { type: DataTypes.TEXT, - - - }, emailVerified: { type: DataTypes.BOOLEAN, - allowNull: false, defaultValue: false, - - - }, emailVerificationToken: { type: DataTypes.TEXT, - - - }, emailVerificationTokenExpiresAt: { type: DataTypes.DATE, - - - }, passwordResetToken: { type: DataTypes.TEXT, - - - }, passwordResetTokenExpiresAt: { type: DataTypes.DATE, - - - }, provider: { type: DataTypes.TEXT, - - - }, +country_of_origin: { + type: DataTypes.TEXT, +}, + +visa_type: { + type: DataTypes.TEXT, +}, + +arrival_date: { + type: DataTypes.DATE, +}, + importHash: { type: DataTypes.STRING(255), allowNull: true, @@ -323,5 +297,4 @@ function trimStringFields(users) { : null; return users; -} - +} \ No newline at end of file diff --git a/backend/src/index.js b/backend/src/index.js index 4e29511..a73367b 100644 --- a/backend/src/index.js +++ b/backend/src/index.js @@ -117,7 +117,7 @@ app.use('/api/roles', passport.authenticate('jwt', {session: false}), rolesRoute app.use('/api/permissions', passport.authenticate('jwt', {session: false}), permissionsRoutes); -app.use('/api/service_catalog_items', passport.authenticate('jwt', {session: false}), service_catalog_itemsRoutes); +app.use('/api/service_catalog_items', service_catalog_itemsRoutes); app.use('/api/service_requests', passport.authenticate('jwt', {session: false}), service_requestsRoutes); @@ -125,9 +125,9 @@ app.use('/api/service_updates', passport.authenticate('jwt', {session: false}), app.use('/api/service_documents', passport.authenticate('jwt', {session: false}), service_documentsRoutes); -app.use('/api/post_categories', passport.authenticate('jwt', {session: false}), post_categoriesRoutes); +app.use('/api/post_categories', post_categoriesRoutes); -app.use('/api/posts', passport.authenticate('jwt', {session: false}), postsRoutes); +app.use('/api/posts', postsRoutes); app.use('/api/post_comments', passport.authenticate('jwt', {session: false}), post_commentsRoutes); diff --git a/backend/src/services/auth.js b/backend/src/services/auth.js index 2862da4..0305ac8 100644 --- a/backend/src/services/auth.js +++ b/backend/src/services/auth.js @@ -10,7 +10,7 @@ const config = require('../config'); const helpers = require('../helpers'); class Auth { - static async signup(email, password, options = {}, host) { + static async signup(email, password, extraData = {}, options = {}, host) { const user = await UsersDBApi.findBy({email}); const hashedPassword = await bcrypt.hash( @@ -59,7 +59,7 @@ class Auth { firstName: email.split('@')[0], password: hashedPassword, email: email, - + ...extraData }, options, ); @@ -309,4 +309,4 @@ class Auth { } } -module.exports = Auth; +module.exports = Auth; \ No newline at end of file