discourse/spec/requests/api
benj 72e4e53fda
FEATURE: add option to hide IP addresses from moderators (#33682)
# Hide IP Addresses from Moderators When `moderators_view_ips` is
Disabled

## Summary 
Feature Request Link -
https://meta.discourse.org/t/option-to-hide-ip-addresses-from-moderators/207715/51
This PR implements a feature to **hide IP addresses from moderators**
when the `moderators_view_ips` site setting is disabled. Previously,
moderators could view IPs in multiple locations across the admin UI.
This update ensures that IP addresses are visible to moderators when the
setting allows it.

## Changes Implemented  

### Backend Updates
- **Added `moderators_view_ips` site setting** in `site_settings.yml`
- **Updated `CurrentUserSerializer`** to include `can_see_ip` field
based on the user’s role and site setting.
- **Modified `AdminUserSerializer`** to restrict IP address visibility.
- **Updated `UsersController`** to prevent IP addresses from being
included in API responses.
- **Restricted IPs in `ScreenedIpAddressesController`** by throwing
`Discourse::InvalidAccess` if the user lacks permission.

### Frontend Updates
- **Hid "Screened IPs" tab** in `/admin/logs` when `moderators_view_ips`
is disabled.
- **Blocked direct access to `/admin/logs/screened_ip_addresses`** for
unauthorized users.
- **Updated `user-index.hbs` and `logs.hbs`** to conditionally hide IP
fields.

### UI Screenshots

New option for Admins in the Admin Security settings dashboard:
![Screenshot 2025-02-21 at 5 32
00 PM](https://github.com/user-attachments/assets/5b315434-7724-4cb9-a3dc-d88750df00a6)


Moderator's view before:
![Screenshot 2025-02-21 at 5 25
41 PM](https://github.com/user-attachments/assets/0fb269e2-db40-488b-b11d-8bdfbe2a5245)
Moderator's view after:
![Screenshot 2025-02-21 at 5 26
59 PM](https://github.com/user-attachments/assets/efb848b0-1d7f-4ec9-8238-d8ee4eddbbe1)

Moderator's view before:
![Screenshot 2025-02-21 at 5 23
52 PM](https://github.com/user-attachments/assets/226e6d63-df3e-45d0-833f-de52593a086e)
Moderator's view after:
![Screenshot 2025-02-21 at 5 23
15 PM](https://github.com/user-attachments/assets/af313af2-2329-46d1-827d-290243c320e5)

---------

Co-authored-by: Bennett Dungan <bennettdungan@gmail.com>
2025-08-05 10:09:02 -05:00
..
schemas FEATURE: add option to hide IP addresses from moderators (#33682) 2025-08-05 10:09:02 -05:00
shared DEV: Apply syntax_tree formatting to spec/* 2023-01-09 11:49:28 +00:00
backups_spec.rb DEV: Apply syntax_tree formatting to spec/* 2023-01-09 11:49:28 +00:00
badges_spec.rb DEV: Allow fab! without block (#24314) 2023-11-09 16:47:59 -06:00
categories_spec.rb DEV: Apply syntax_tree formatting to spec/* 2023-01-09 11:49:28 +00:00
groups_spec.rb FEATURE: Add the group show endpoint to search groups by id instead of only the slug name (#32442) 2025-05-13 14:22:06 -05:00
invites_spec.rb FIX: Create invite api docs (#21460) 2023-05-09 13:20:46 -06:00
multiple_invites_spec.rb FEATURE: change /invites.json api endpoint to optionally accept array of emails (#24853) 2023-12-28 10:16:04 -05:00
notifications_spec.rb DEV: Block accidental serialization of entire AR models (#27668) 2024-07-01 17:08:48 -03:00
posts_spec.rb FEATURE: Add translations to posts (#32564) 2025-05-08 10:40:36 -07:00
private_messages_spec.rb FIX: update id types in API docs to integers (#27412) 2024-06-26 20:44:39 -06:00
rate_limits_spec.rb DEV: API to register custom request rate limiting conditions (#30239) 2024-12-23 09:57:18 +08:00
search_spec.rb DEV: Document group param for search endpoint (#19806) 2023-01-09 14:46:07 -07:00
site_spec.rb DEV: Document basic-info endpoint (#26471) 2024-04-02 14:53:19 -06:00
tags_spec.rb FIX: update id types in API docs to integers (#27412) 2024-06-26 20:44:39 -06:00
topics_spec.rb DEV: Add per_page as public param for TopicQuery (#30716) 2025-01-14 09:19:19 -06:00
uploads_spec.rb DEV: Apply syntax_tree formatting to spec/* 2023-01-09 11:49:28 +00:00
user_badges_spec.rb DEV: Apply syntax_tree formatting to spec/* 2023-01-09 11:49:28 +00:00
users_spec.rb DEV: Add /admin/users.json to the api docs (#32512) 2025-04-29 09:28:47 -06:00