SkygearIO/skygear-server

[Auth UI] Banner image disappeared on Account Setting page after updates

keithtkl opened this issue · 9 comments

The banner image set for the project disappeared after adjusting authentication methods

  • Skygear Server Date/Version: Not sure
  • Application Platform: Tested on Rees

Expected Results

Banner image should be able to show on the Account Setting page at any time

Actual Results

Banner image disappeared after the user making any adjustment on the authentication methods

Steps to reproduce

  1. Login to the app
  2. Open Account Setting page
  3. Change / Connect / Disconnect of any authentication method
  4. See the banner image cannot be shown after returning to the Account Setting page

The cause is client_id is lost after redirect.

We now use display_app_name to show the app name but use clients[*].logo_uri. clients[*].logo_uri relies on client_id to be present.

@kiootic Thoughts?

Technically the logo should be associated with the whole app, not specific OAuth client?
We need to make a distinction between RP metadata and IdP metadata.
Actually, in Auth UI, most likely RP metadata is used only at the entry point, e.g. showing 'you're logging in to App A'

Proposal

  1. Add metadata to ODICConfiguration
  2. metadata has client_name and logo_uri which replaces display_app_name and client[*].logo_uri

Thoughts?

Add metadata to ODICConfiguration

AuthUIConfiguration is better?

metadata has client_name and logo_uri which replaces display_app_name and client[*].logo_uri

display_app_name should be kept, but moved to auth_ui.metadata.display_app_name. Both client_name and logo_uri should be kept for RPs.

clients:
- client_id: abc
  # client_name and logo_uri are ignored for now.
  client_name: My Client
  logo_uri: https://example.com/a.png
auth_ui:
  metadata:
    # app_name and logo_uri are used instead.
    app_name: My App
    logo_uri: https://example.com/b.png

I suppose we'll inject the metadata directly into template context? So no validation is needed on metadata?

We have to localize localizable fields, such as app_name and logo_uri. So it is not a naive injection into the template context. But why are you asking that question?

I'm just thinking whether developer can put custom data in metadata for consumption in their own template.