oncall-engine/engine/apps/api/serializers
Joey Orlando eb777f5415
address Google OAuth2 issues where user didn't grant us the https://www.googleapis.com/auth/calendar.events.readonly scope (#4802)
# What this PR does

Follow up PR to https://github.com/grafana/oncall/pull/4792

Basically if when communicating with Google Calendar's API we encounter
an HTTP 403, or the Google client throws a
`google.auth.exceptions.RefreshError` this means one of three things:
1. the refresh token we have persisted for the user is missing the
`https://www.googleapis.com/auth/calendar.events.readonly` scope (HTTP
403)
2. the Google user has been deleted
(`google.auth.exceptions.RefreshError`)
3. the refresh token has expired (`google.auth.exceptions.RefreshError`)

To prevent scenario 1 above from happening in the future we now will
check that the token has been granted the required scopes. If the user
doesn't grant us all the necessary scopes, we will show them an error
message in the UI:
https://www.loom.com/share/0055ef03192b4154b894c2221cecbd5f

For tokens that were granted prior to this PR and which are missing the
required scope, we will show the user a dismissible warning banner in
the UI letting them know that they will need to reconnect their account
and grant us the missing permissions (see [this second demo
video](https://www.loom.com/share/bf2ee8b840864a64893165370a892bcd)
showing this).

## Checklist

- [x] Unit, integration, and e2e (if applicable) tests updated
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] Added the relevant release notes label (see labels prefixed w/
`release:`). These labels dictate how your PR will
    show up in the autogenerated release notes.

---------

Co-authored-by: Dominik <dominik.broj@grafana.com>
2024-08-14 18:02:34 -04:00
..
__init__.py World, meet OnCall! 2022-06-03 08:09:47 -06:00
alert.py Improve OpenAPI schema coverage (#3629) 2024-01-12 15:11:22 +00:00
alert_group.py Fix N+1 issue on alert group list page (#4738) 2024-07-25 17:26:05 +00:00
alert_group_escalation_snapshot.py cleanup CustomButton backend code + add ngrok/express outgoing webhook e2e test (#2544) 2024-03-28 15:37:22 +00:00
alert_group_table_settings.py Fix alert group columns validation (#3577) 2023-12-15 17:15:50 +00:00
alert_receive_channel.py Reduce a number of requests to db on alert_receive_channel internal api endpoint (#4805) 2024-08-13 09:24:30 +00:00
alert_receive_channel_connection.py Backend support for "connected" integrations (#4030) 2024-03-07 17:47:33 +00:00
alerts_field_cache_buster_mixin.py Fix broken openapi schema + add integration test (#3364) 2023-11-16 12:15:05 +00:00
channel_filter.py Update regex to jinja route conversion to correctly escape double quotes (#4705) 2024-07-19 11:56:22 +00:00
custom_serializers.py World, meet OnCall! 2022-06-03 08:09:47 -06:00
escalation_chain.py Fix team changing on PUT request if team is not in request data (#3530) 2023-12-07 14:44:52 +00:00
escalation_policy.py Allow custom wait delay (#4446) 2024-06-03 13:06:47 +00:00
integration_heartbeat.py Improve OpenAPI schema coverage (#3629) 2024-01-12 15:11:22 +00:00
labels.py Support prescribed labels (#3848) 2024-02-20 14:42:51 +08:00
live_setting.py Allow no-auth SMTP connection for email notifications (#759) 2022-11-03 16:18:37 +00:00
on_call_shifts.py Disable updates for API/terraform shifts in internal API (#3224) 2023-10-31 15:08:07 +00:00
organization.py Unified Slack app reinstall (#4682) 2024-07-19 11:53:06 +00:00
organization_slack_settings.py World, meet OnCall! 2022-06-03 08:09:47 -06:00
paging.py Updates to POST /direct_paging internal API endpoint to support Grafana Incident use-cases (#3232) 2023-11-01 17:19:44 -04:00
public_api_token.py World, meet OnCall! 2022-06-03 08:09:47 -06:00
resolution_note.py Resolution note source mobile app (#3174) 2023-10-20 15:22:45 +01:00
schedule_base.py Refactor gaps and empty shift checks (#3785) 2024-01-31 15:25:06 +01:00
schedule_calendar.py Refactor gaps and empty shift checks (#3785) 2024-01-31 15:25:06 +01:00
schedule_ical.py Refactor gaps and empty shift checks (#3785) 2024-01-31 15:25:06 +01:00
schedule_polymorphic.py add mypy static type checker to backend codebase (#2151) 2023-06-12 12:50:33 -04:00
schedule_reminder.py World, meet OnCall! 2022-06-03 08:09:47 -06:00
schedule_web.py Refactor gaps and empty shift checks (#3785) 2024-01-31 15:25:06 +01:00
shift_swap.py Add optional param to return shift swaps detailed user information (#2923) 2023-08-31 14:46:45 +00:00
slack_channel.py World, meet OnCall! 2022-06-03 08:09:47 -06:00
slack_user_identity.py Improve OpenAPI schema coverage (#3629) 2024-01-12 15:11:22 +00:00
team.py Fix calculating number of oncall users per team (#3773) 2024-01-29 14:32:03 +00:00
telegram.py World, meet OnCall! 2022-06-03 08:09:47 -06:00
user.py address Google OAuth2 issues where user didn't grant us the https://www.googleapis.com/auth/calendar.events.readonly scope (#4802) 2024-08-14 18:02:34 -04:00
user_group.py World, meet OnCall! 2022-06-03 08:09:47 -06:00
user_notification_policy.py Allow custom wait delay (#4446) 2024-06-03 13:06:47 +00:00
webhook.py Allow setting integration_filter to null in webhooks internal API (#4011) 2024-03-05 17:11:47 +00:00