Skip to content

TAN-7396 - Remove enhanced user privacy FF#13594

Open
jamesspeake wants to merge 8 commits intomasterfrom
TAN-7396-remove-enhanced-user-profiles
Open

TAN-7396 - Remove enhanced user privacy FF#13594
jamesspeake wants to merge 8 commits intomasterfrom
TAN-7396-remove-enhanced-user-profiles

Conversation

@jamesspeake
Copy link
Copy Markdown
Contributor

@jamesspeake jamesspeake commented Apr 4, 2026

NOTE:

  • This removes all slug functionality for users EXCEPT the actual database column and generation of the slug, just in case we need to restore this - will remove the data in a later migration

Changelog

Changed

  • Turn on enhanced user privacy for all - this means that all user now use UUIDs for user profile URLs and the user slug eg 'bob-smith' is redundant. Also means that user profile pages are only visible for users who have posted publicly

@notion-workspace
Copy link
Copy Markdown

@cl-dev-bot
Copy link
Copy Markdown
Collaborator

cl-dev-bot commented Apr 4, 2026

Messages
📖 Changelog provided 🎉
📖 Notion issue: TAN-7396
📖

Run the e2e tests

📖 Check translation progress

Generated by 🚫 dangerJS against 6393b09

@jamesspeake jamesspeake changed the title TAN-7396 - Remove enhanced user privacy TAN-7396 - Remove enhanced user privacy FF Apr 6, 2026
Copy link
Copy Markdown
Contributor

@sebastienhoorens sebastienhoorens left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All good, always nice to see code getting removed.

Just checking that it's acceptable that existing user profile links might no longer work. What happens when following such a profile with slug link? Do you see a generic 404 page? Mentions of users, like @jamesspeake, will still work I guess as they use user IDs?

I don't think there's any concern around security? You could reason that by exposing the user IDs in the URLs the user IDs are now a slightly more discoverable target to try to get private user information (trying direct API calls, SQL injections...), but I suppose it was alway possible to figure out the user IDs.

Comment thread back/app/models/user.rb
self.class.enhanced_user_profile_privacy? && id ? id : super
end

def show_public_profile?
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So now we always want to hide profiles of users who didn't participate publicly? I guess it's really an edge case, but a user could post something, share their profile and then remove that post.


attribute :initiating_user_slug do |object|
object.initiating_user&.slug
attribute :initiating_user_id do |object|
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: All these could potentially just move to the top as attribute :initiating_user_id

Comment thread back/config/schemas/settings.schema.json.erb
# Conflicts:
#	front/app/components/admin/ModeratorList/ModeratorListRow.test.tsx
#	front/app/components/admin/UsersTable/NameAvatarEmail.tsx
@jamesspeake
Copy link
Copy Markdown
Contributor Author

Mentions of users, like @jamesspeake, will still work I guess as they use user IDs?

Just checked this and I think I'll need to also restrict that endpoint as any user can be found this way regardless of whether they have posted anything publicly. Also it appears to be broken on production - mentioned users appear as @b94bde59-a88b-4954-88c5-8c52499c1448 which I guess is not what we want

@jamesspeake jamesspeake modified the milestone: Quality Quest Apr 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants