buster/apps/api/migrations/2025-01-17-182615_user_info.../up.sql

38 lines
982 B
MySQL
Raw Normal View History

-- Your SQL goes here
CREATE OR REPLACE FUNCTION update_user_org_attributes()
RETURNS TRIGGER AS $$
BEGIN
UPDATE public.users
SET attributes = jsonb_set(
jsonb_set(
COALESCE(attributes, '{}'::jsonb),
'{organization_id}',
to_jsonb(NEW.organization_id)
),
'{organization_role}',
to_jsonb(NEW.role)
)
WHERE id = NEW.user_id;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER sync_user_org_attributes
AFTER INSERT OR UPDATE ON users_to_organizations
FOR EACH ROW
EXECUTE FUNCTION update_user_org_attributes();
-- Update existing records
fix permission check on post_dataset rest (#59) * fix permission check on post_dataset rest * refactor: enhance dataset overview access lineage and permission checks - Updated the `get_dataset_overview` function to conditionally add default access lineage based on user roles and existing access paths. - Simplified the logic for adding user roles to the lineage, ensuring clarity and maintainability. - Improved handling for the `RestrictedQuerier` role to include checks for existing access before adding default lineage, enhancing permission accuracy. - Streamlined code by removing redundant checks and consolidating role handling, optimizing overall readability. * feat: Enhance permission group handling and data retrieval - Introduced a new `PermissionGroupInfo` struct to encapsulate detailed information about permission groups, including user and dataset counts. - Updated the `get_permission_group` and `list_permission_groups` functions to improve data retrieval and error handling. - Refactored SQL queries in `list_permission_groups` to include additional joins for counting users and datasets associated with permission groups, enhancing the overall functionality and clarity of the API. - Streamlined code for better readability and maintainability, ensuring consistent handling of user and permission group data. * refactor: Improve dataset access handling and permission checks - Enhanced the `get_restricted_user_datasets` and `get_restricted_user_datasets_with_metadata` functions to include additional permission checks for dataset groups and permission groups. - Consolidated SQL queries to ensure proper filtering of deleted records and improved clarity in dataset retrieval logic. - Introduced new joins and filters to handle dataset group permissions, ensuring accurate access control for users. - Streamlined code for better readability and maintainability, enhancing overall functionality in dataset access management. * fix: Update SQL migration and seed data for user attributes - Modified the SQL migration to specify the schema for the `users` table, ensuring clarity in the update statement. - Adjusted the seed data for `users_to_organizations` to change the `organization_id` from 'public' to 'none', reflecting a more accurate state for user roles and organization associations. - Ensured consistency in the formatting of SQL insert statements for better readability. * fix: Prevent users from updating their own profiles - Added a check in the `update_user_handler` to prevent users from updating their own information, returning an error if they attempt to do so. - This change enhances security by ensuring that users cannot modify their own records, which could lead to unauthorized changes. * refactor: Simplify dashboard permission queries by removing team-based joins - Removed left joins with `teams_to_users` table in dashboard permission queries - Simplified permission checks to only filter by direct user ID - Updated queries in `get_user_dashboard_permission`, `get_bulk_user_dashboard_permission`, and `list_dashboards_handler` - Streamlined SQL query logic for more direct and efficient permission checks
2025-01-24 07:22:07 +08:00
UPDATE public.users u
SET attributes = jsonb_set(
jsonb_set(
COALESCE(attributes, '{}'::jsonb),
'{organization_id}',
to_jsonb(uto.organization_id)
),
'{organization_role}',
to_jsonb(uto.role)
)
FROM users_to_organizations uto
WHERE u.id = uto.user_id;