mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
fix: add postgres triggers to remove deleted users from user_links (#12117)
* chore: add database test fixture to insert non-unique linked_ids * chore: create unit test to exercise failed email change bug * fix: add postgres triggers to keep user_links clear of deleted users * Add migrations to prevent deleted users with links * Force soft delete of users, do not allow un-delete
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
DROP TRIGGER IF EXISTS trigger_update_users ON users;
|
||||
DROP FUNCTION IF EXISTS delete_deleted_user_resources;
|
||||
|
||||
DROP TRIGGER IF EXISTS trigger_upsert_user_links ON user_links;
|
||||
DROP FUNCTION IF EXISTS insert_user_links_fail_if_user_deleted;
|
||||
|
||||
-- Restore the previous trigger
|
||||
CREATE FUNCTION delete_deleted_user_api_keys() RETURNS trigger
|
||||
LANGUAGE plpgsql
|
||||
AS $$
|
||||
DECLARE
|
||||
BEGIN
|
||||
IF (NEW.deleted) THEN
|
||||
DELETE FROM api_keys
|
||||
WHERE user_id = OLD.id;
|
||||
END IF;
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$;
|
||||
|
||||
|
||||
CREATE TRIGGER trigger_update_users
|
||||
AFTER INSERT OR UPDATE ON users
|
||||
FOR EACH ROW
|
||||
WHEN (NEW.deleted = true)
|
||||
EXECUTE PROCEDURE delete_deleted_user_api_keys();
|
||||
Reference in New Issue
Block a user