nextcloud / nextcloud/activity

Relative time in email is UTC and does not display time zone

Open
#742 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug feature: email
Dominant language
JavaScript
Stars
145
Forks
72
Avg merge
6d 9h
Merged PRs (30d)
42

Description

Steps to reproduce
  1. Set activity notifications for events such as uploads, downloads, etc.
  2. Do one of the activities with notifications set.
  3. Receive a notification email.
Expected behaviour

Email should indicate the time of the event in a time format that is clear to the user.

Actual behaviour

Email time event shows with an unqualified timestamp such as "Yesterday at 11:26 PM," which is not the time zone local to the user but apparently UTC. If the user is in a time zone other than GMT/UTC then the user may be confused or alarmed, depending on the practical or security implications of the unexpected time of action.

Server configuration

Operating system:
Ubuntu 20.04.3 LTS

Web server:
Apache/2.4.51 (Debian)

Database:
mariadb 10.5

PHP version:
PHP 8.0.14 (cli)

Nextcloud version: (see Nextcloud admin page)
Nextcloud 23.0.0

Where did you install Nextcloud from:
Ubuntu standard repositories, on a Docker instance.

Signing status:

No errors have been found.

List of activated apps:

Enabled:
  - accessibility: 1.9.0
  - activity: 2.15.0
  - admin_audit: 1.13.0
  - announcementcenter: 6.1.1
  - bruteforcesettings: 2.3.0
  - cloud_federation_api: 1.6.0
  - comments: 1.13.0
  - contactsinteraction: 1.4.0
  - dav: 1.21.0
  - federatedfilesharing: 1.13.0
  - federation: 1.13.0
  - files: 1.18.0
  - files_accesscontrol: 1.13.0
  - files_automatedtagging: 1.13.0
  - files_pdfviewer: 2.4.0
  - files_retention: 1.12.0
  - files_rightclick: 1.2.0
  - files_sharing: 1.15.0
  - files_trashbin: 1.13.0
  - files_versions: 1.16.0
  - files_videoplayer: 1.12.0
  - firstrunwizard: 2.12.0
  - groupfolders: 11.1.2
  - logreader: 2.8.0
  - lookup_server_connector: 1.11.0
  - nextcloud_announcements: 1.12.0
  - notifications: 2.11.1
  - oauth2: 1.11.0
  - password_policy: 1.13.0
  - photos: 1.5.0
  - privacy: 1.7.0
  - provisioning_api: 1.13.0
  - quota_warning: 1.13.0
  - recommendations: 1.2.0
  - serverinfo: 1.13.0
  - settings: 1.5.0
  - sharebymail: 1.13.0
  - support: 1.6.0
  - survey_client: 1.11.0
  - systemtags: 1.13.0
  - text: 3.4.0
  - theming: 1.14.0
  - twofactor_backupcodes: 1.12.0
  - updatenotification: 1.13.0
  - user_oidc: 1.1.0
  - user_status: 1.3.1
  - viewer: 1.7.0
  - workflowengine: 2.5.0
Disabled:
  - circles
  - dashboard
  - encryption
  - files_external
  - user_ldap
  - weather_status

Nextcloud configuration:

{
    "system": {
        "htaccess.RewriteBase": "\/",
        "memcache.local": "\\OC\\Memcache\\APCu",
        "apps_paths": [
            {
                "path": "\/var\/www\/html\/apps",
                "url": "\/apps",
                "writable": false
            },
            {
                "path": "\/var\/www\/html\/custom_apps",
                "url": "\/custom_apps",
                "writable": true
            }
        ],
        "memcache.distributed": "\\OC\\Memcache\\Redis",
        "memcache.locking": "\\OC\\Memcache\\Redis",
        "redis": {
            "host": "***REMOVED SENSITIVE VALUE***",
            "password": "***REMOVED SENSITIVE VALUE***",
            "port": 6379
        },
        "passwordsalt": "***REMOVED SENSITIVE VALUE***",
        "secret": "***REMOVED SENSITIVE VALUE***",
        "trusted_domains": [
            "localhost",
            "[redacted]",
            "[redacted].[redacted].com",
            "[redacted].[redacted].com"
        ],
        "trusted_proxies": "***REMOVED SENSITIVE VALUE***",
        "overwritehost": "[redacted].[redacted].com",
        "overwriteprotocol": "https",
        "datadirectory": "***REMOVED SENSITIVE VALUE***",
        "dbtype": "mysql",
        "version": "23.0.0.10",
        "overwrite.cli.url": "https:\/\/[redacted].[redacted].com",
        "dbname": "***REMOVED SENSITIVE VALUE***",
        "dbhost": "***REMOVED SENSITIVE VALUE***",
        "dbport": "",
        "dbtableprefix": "oc_",
        "mysql.utf8mb4": true,
        "dbuser": "***REMOVED SENSITIVE VALUE***",
        "dbpassword": "***REMOVED SENSITIVE VALUE***",
        "installed": true,
        "instanceid": "***REMOVED SENSITIVE VALUE***",
        "app_install_overwrite": [
            "oidc_login"
        ],
        "mail_smtpmode": "smtp",
        "mail_smtphost": "***REMOVED SENSITIVE VALUE***",
        "mail_sendmailmode": "smtp",
        "mail_smtpport": "25",
        "twofactor_enforced": "false",
        "twofactor_enforced_groups": [],
        "twofactor_enforced_excluded_groups": [],
        "mail_from_address": "***REMOVED SENSITIVE VALUE***",
        "mail_domain": "***REMOVED SENSITIVE VALUE***"
    },
    "apps": {
        "accessibility": {
            "enabled": "yes",
            "installed_version": "1.9.0",
            "types": ""
        },
        "activity": {
            "enabled": "yes",
            "installed_version": "2.15.0",
            "notify_email_calendar": "1",
            "notify_email_calendar_event": "0",
            "notify_email_calendar_todo": "0",
            "notify_email_comments": "1",
            "notify_email_contacts": "0",
            "notify_email_favorite": "0",
            "notify_email_file_changed": "0",
            "notify_email_group_settings": "1",
            "notify_email_public_links": "1",
            "notify_email_remote_share": "1",
            "notify_email_shared": "1",
            "notify_email_systemtags": "0",
            "notify_notification_calendar": "0",
            "notify_notification_calendar_event": "0",
            "notify_notification_calendar_todo": "0",
            "notify_notification_comments": "0",
            "notify_notification_contacts": "0",
            "notify_notification_favorite": "0",
            "notify_notification_file_changed": "0",
            "notify_notification_file_favorite_changed": "0",
            "notify_notification_group_settings": "1",
            "notify_notification_personal_settings": "0",
            "notify_notification_public_links": "1",
            "notify_notification_remote_share": "0",
            "notify_notification_security": "1",
            "notify_notification_shared": "0",
            "notify_notification_systemtags": "0",
            "notify_setting_batchtime": "3600",
            "notify_setting_self": "0",
            "notify_setting_selfemail": "0",
            "types": "filesystem"
        },
        "admin_audit": {
            "enabled": "yes",
            "installed_version": "1.13.0",
            "types": "logging"
        },
        "announcementcenter": {
            "enabled": "yes",
            "installed_version": "6.1.1",
            "types": "logging"
        },
        "backgroundjob": {
            "lastjob": "15100"
        },
        "bruteforcesettings": {
            "enabled": "yes",
            "installed_version": "2.3.0",
            "types": ""
        },
        "circles": {
            "enabled": "no",
            "installed_version": "23.0.0",
            "loopback_tmp_scheme": "http",
            "maintenance_run": "0",
            "maintenance_update": "{\"maximum\":3,\"3\":1641570600,\"2\":1641570300,\"1\":1641570600,\"4\":1641520800,\"5\":1641006001}",
            "types": "filesystem,dav"
        },
        "cloud_federation_api": {
            "enabled": "yes",
            "installed_version": "1.6.0",
            "types": "filesystem"
        },
        "comments": {
            "enabled": "yes",
            "installed_version": "1.13.0",
            "types": "logging"
        },
        "contactsinteraction": {
            "enabled": "yes",
            "installed_version": "1.4.0",
            "types": "dav"
        },
        "core": {
            "backgroundjobs_mode": "cron",
            "installedat": "1640028539.1888",
            "lastcron": "1644612601",
            "lastupdateResult": "[]",
            "lastupdatedat": "1644534433",
            "public_files": "files_sharing\/public.php",
            "public_webdav": "dav\/appinfo\/v1\/publicwebdav.php",
            "shareapi_allow_resharing": "no",
            "shareapi_default_expire_date": "yes",
            "shareapi_default_internal_expire_date": "yes",
            "shareapi_default_permission_canshare": "no",
            "shareapi_default_permissions": "15",
            "shareapi_default_remote_expire_date": "yes",
            "shareapi_enable_link_password_by_default": "yes",
            "shareapi_enforce_expire_date": "yes",
            "shareapi_enforce_links_password": "yes",
            "shareapi_restrict_user_enumeration_to_group": "yes",
            "theming.variables": "6047fc529cefe8fcd5ba2fafe616ce37",
            "vendor": "nextcloud"
        },
        "dashboard": {
            "enabled": "no",
            "installed_version": "7.3.0",
            "types": ""
        },
        "dav": {
            "enabled": "yes",
            "generateBirthdayCalendar": "no",
            "installed_version": "1.21.0",
            "sendEventReminders": "no",
            "sendInvitations": "no",
            "types": "filesystem"
        },
        "federatedfilesharing": {
            "enabled": "yes",
            "installed_version": "1.13.0",
            "types": ""
        },
        "federation": {
            "enabled": "yes",
            "installed_version": "1.13.0",
            "types": "authentication"
        },
        "files": {
            "default_quota": "1 GB",
            "enabled": "yes",
            "installed_version": "1.18.0",
            "types": "filesystem"
        },
        "files_accesscontrol": {
            "enabled": "yes",
            "installed_version": "1.13.0",
            "types": "filesystem"
        },
        "files_automatedtagging": {
            "enabled": "yes",
            "installed_version": "1.13.0",
            "types": "filesystem"
        },
        "files_pdfviewer": {
            "enabled": "yes",
            "installed_version": "2.4.0",
            "types": ""
        },
        "files_retention": {
            "enabled": "yes",
            "installed_version": "1.12.0",
            "notify_before": "yes",
            "types": ""
        },
        "files_rightclick": {
            "enabled": "yes",
            "installed_version": "1.2.0",
            "types": ""
        },
        "files_sharing": {
            "enabled": "yes",
            "incoming_server2server_share_enabled": "no",
            "installed_version": "1.15.0",
            "lookupServerEnabled": "no",
            "lookupServerUploadEnabled": "no",
            "outgoing_server2server_share_enabled": "no",
            "types": "filesystem"
        },
        "files_trashbin": {
            "enabled": "yes",
            "installed_version": "1.13.0",
            "types": "filesystem,dav"
        },
        "files_versions": {
            "enabled": "yes",
            "installed_version": "1.16.0",
            "types": "filesystem,dav"
        },
        "files_videoplayer": {
            "enabled": "yes",
            "installed_version": "1.12.0",
            "types": ""
        },
        "firstrunwizard": {
            "enabled": "yes",
            "installed_version": "2.12.0",
            "types": "logging"
        },
        "groupfolders": {
            "enabled": "yes",
            "installed_version": "11.1.2",
            "types": "filesystem,dav"
        },
        "logreader": {
            "enabled": "yes",
            "installed_version": "2.8.0",
            "levels": "01111",
            "types": ""
        },
        "lookup_server_connector": {
            "enabled": "yes",
            "installed_version": "1.11.0",
            "types": "authentication"
        },
        "nextcloud_announcements": {
            "enabled": "yes",
            "installed_version": "1.12.0",
            "pub_date": "Thu, 24 Oct 2019 00:00:00 +0200",
            "types": "logging"
        },
        "notifications": {
            "enabled": "yes",
            "installed_version": "2.11.1",
            "types": "logging"
        },
        "oauth2": {
            "enabled": "yes",
            "installed_version": "1.11.0",
            "types": "authentication"
        },
        "password_policy": {
            "enabled": "yes",
            "expiration": "0",
            "installed_version": "1.13.0",
            "maximumLoginAttempts": "10",
            "minLength": "12",
            "types": "authentication"
        },
        "photos": {
            "enabled": "yes",
            "installed_version": "1.5.0",
            "types": ""
        },
        "privacy": {
            "enabled": "yes",
            "installed_version": "1.7.0",
            "types": ""
        },
        "provisioning_api": {
            "enabled": "yes",
            "installed_version": "1.13.0",
            "types": "prevent_group_restriction"
        },
        "quota_warning": {
            "enabled": "yes",
            "installed_version": "1.13.0",
            "types": "filesystem"
        },
        "recommendations": {
            "enabled": "yes",
            "installed_version": "1.2.0",
            "types": ""
        },
        "serverinfo": {
            "cached_count_filecache": "44946",
            "cached_count_storages": "148",
            "enabled": "yes",
            "installed_version": "1.13.0",
            "types": ""
        },
        "settings": {
            "enabled": "yes",
            "installed_version": "1.5.0",
            "types": ""
        },
        "sharebymail": {
            "enabled": "yes",
            "installed_version": "1.13.0",
            "sendpasswordmail": "no",
            "types": "filesystem"
        },
        "support": {
            "enabled": "yes",
            "installed_version": "1.6.0",
            "types": "session"
        },
        "survey_client": {
            "enabled": "yes",
            "installed_version": "1.11.0",
            "types": ""
        },
        "systemtags": {
            "enabled": "yes",
            "installed_version": "1.13.0",
            "types": "logging"
        },
        "text": {
            "enabled": "yes",
            "installed_version": "3.4.0",
            "types": "dav"
        },
        "theming": {
            "backgroundMime": "image\/jpeg",
            "cachebuster": "13",
            "enabled": "yes",
            "installed_version": "1.14.0",
            "name": "[redacted] Nextcloud",
            "slogan": "***REMOVED SENSITIVE VALUE***",
            "types": "logging",
            "url": "***REMOVED SENSITIVE VALUE***"
        },
        "twofactor_backupcodes": {
            "enabled": "yes",
            "installed_version": "1.12.0",
            "types": ""
        },
        "updatenotification": {
            "enabled": "yes",
            "installed_version": "1.13.0",
            "types": "",
            "update_check_errors": "0"
        },
        "user_oidc": {
            "enabled": "yes",
            "id4me_enabled": "0",
            "installed_version": "1.1.0",
            "provider-1-checkBearer": "0",
            "provider-1-mappingDisplayName": "",
            "provider-1-mappingEmail": "",
            "provider-1-mappingQuota": "",
            "provider-1-mappingUid": "",
            "provider-1-uniqueUid": "1",
            "types": "authentication"
        },
        "user_status": {
            "enabled": "yes",
            "installed_version": "1.3.1",
            "types": ""
        },
        "viewer": {
            "enabled": "yes",
            "installed_version": "1.7.0",
            "types": ""
        },
        "weather_status": {
            "enabled": "no",
            "installed_version": "1.3.0",
            "types": ""
        },
        "workflowengine": {
            "enabled": "yes",
            "installed_version": "2.5.0",
            "types": "filesystem"
        }
    }
}

Using Azure AD through oauth2

Client configuration

Version 98.0.4758.102 (Official Build) (64-bit)

Microsoft Windows 10 Version 20H2 (build 19042.1526)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the activity app's email-notification entry point and tracing how event timestamps are formatted for recipients. Reproduce an activity email in a non-UTC time zone, then verify that the displayed event time uses the user's time zone and clearly indicates the zone; add or update the relevant tests if the notification path exposes them.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.