The goal
Step 1 <- we are here
Having a user-facing UI for requesting account deletion to save time on doing this manually every time people ask for their Blender accounts to be deleted.
After deletion is requested, the following should happen Blender ID:
- user is deactivated → it's no longer possible to login into Blender ID or via Blender ID;
- existing account sessions are deleted (not implemented yet);
- date of deletion is saved for a possibility of a grace period, both for the sake of the person requesting deletion and the dependant applications;
- user-modified webhook is called and its payload contains the non-null deletion date.
Applications subscribing to the webhook handle this event at their own discretion.
Special considerations
Blender ID is an OAuth server, and it has no direct control over how applications, connected to it, store and delete their account data. Deleting Blender ID ≠ deleting all account data in all connected applications.
We'll be able to automate account deletion in *some* of them, starting with Blender Cloud, but definitely not most of them.
Step 2
Having a background task or a cronjob that handles deletion requests by anonymizing/deleting relevant data.
After the grace period is over, Blender ID can process deletion of its own data, e.g. delete all tokens and anonymize or delete the user record.
Step 3
Having Clouds handle deletion as well:
- via a command in Cloudv3
- automatically on user-modified in Cloudv4
What does it do
Frontend
Adds a "Danger zone" section at the bottom of the profile page, with a "Delete account" link to a "Delete account" page.
Changes to the database
bid_main_user.date_deletetion_requested column is added
bid_main_user.deletetion_requested column is removed
Backend
Adds a form with a confirmation checkbox, that, when submitted and valid, will
- save current date-time as bid_main_user.date_deletetion_requested
- deactivate current user's account
- log out
date_deletetion_requested field is also added to the API's userinfo and user-modified webhook payload.
(task in progress: https://developer.blender.org/T84610)




