X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/561ee71129c7d40380d384ce93c1f062651de32b..a1798fe6fb238fd2e4b878cd1736ca2b3101daa7:/app/models/user.rb?ds=sidebyside diff --git a/app/models/user.rb b/app/models/user.rb index d7bfb2235..41f249d4e 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -210,6 +210,7 @@ class User < ApplicationRecord # Mark the account as deleted and remove personal data event :soft_destroy do before do + revoke_authentication_tokens remove_personal_data end @@ -237,8 +238,12 @@ class User < ApplicationRecord @preferred_languages ||= Locale.list(languages) end + def has_home? + home_lat && home_lon + end + def nearby(radius = Settings.nearby_radius, num = Settings.nearby_users) - if home_lon && home_lat + if has_home? gc = OSM::GreatCircle.new(home_lat, home_lon) sql_for_area = QuadTile.sql_for_area(gc.bounds(radius), "home_") sql_for_distance = gc.sql_for_distance("home_lat", "home_lon") @@ -299,6 +304,13 @@ class User < ApplicationRecord blocks.active.detect(&:needs_view?) end + ## + # revoke any authentication tokens + def revoke_authentication_tokens + oauth_tokens.authorized.each(&:invalidate!) + access_tokens.not_expired.each(&:revoke) + end + ## # remove personal data - leave the account but purge most personal data def remove_personal_data @@ -393,6 +405,6 @@ class User < ApplicationRecord end def update_tile - self.home_tile = QuadTile.tile_for_point(home_lat, home_lon) if home_lat && home_lon + self.home_tile = QuadTile.tile_for_point(home_lat, home_lon) if has_home? end end