Skip to content
Snippets Groups Projects
  • Quentin Gliech's avatar
    fe1daad6
    Move the "email unsubscribe" resource, refactor the macaroon generator &... · fe1daad6
    Quentin Gliech authored
    Move the "email unsubscribe" resource, refactor the macaroon generator & simplify the access token verification logic. (#12986)
    
    This simplifies the access token verification logic by removing the `rights`
    parameter which was only ever used for the unsubscribe link in email
    notifications. The latter has been moved under the `/_synapse` namespace,
    since it is not a standard API.
    
    This also makes the email verification link more secure, by embedding the
    app_id and pushkey in the macaroon and verifying it. This prevents the user
    from tampering the query parameters of that unsubscribe link.
    
    Macaroon generation is refactored:
    
    - Centralised all macaroon generation and verification logic to the
      `MacaroonGenerator`
    - Moved to `synapse.utils`
    - Changed the constructor to require only a `Clock`, hostname, and a secret key
      (instead of a full `Homeserver`).
    - Added tests for all methods.
    Move the "email unsubscribe" resource, refactor the macaroon generator &...
    Quentin Gliech authored
    Move the "email unsubscribe" resource, refactor the macaroon generator & simplify the access token verification logic. (#12986)
    
    This simplifies the access token verification logic by removing the `rights`
    parameter which was only ever used for the unsubscribe link in email
    notifications. The latter has been moved under the `/_synapse` namespace,
    since it is not a standard API.
    
    This also makes the email verification link more secure, by embedding the
    app_id and pushkey in the macaroon and verifying it. This prevents the user
    from tampering the query parameters of that unsubscribe link.
    
    Macaroon generation is refactored:
    
    - Centralised all macaroon generation and verification logic to the
      `MacaroonGenerator`
    - Moved to `synapse.utils`
    - Changed the constructor to require only a `Clock`, hostname, and a secret key
      (instead of a full `Homeserver`).
    - Added tests for all methods.