2025-01-21 05:41:31 +08:00
|
|
|
-- Your SQL goes here
|
|
|
|
CREATE OR REPLACE FUNCTION update_user_org_attributes()
|
|
|
|
RETURNS TRIGGER AS $$
|
|
|
|
BEGIN
|
2025-02-10 22:17:14 +08:00
|
|
|
UPDATE public.users
|
2025-01-21 05:41:31 +08:00
|
|
|
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
|
2025-01-21 05:41:31 +08:00
|
|
|
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;
|