Meeds-io / MIPs

The Meeds Improvement Proposal repository
0 stars 0 forks source link

Hidden Fields on Profile #111

Closed Julien-Dubois-eXo closed 2 months ago

Julien-Dubois-eXo commented 5 months ago

0. Rationale

To be compliant with the GDPR we should provide the ability for each user to hide a field of its contact information.

1. Functional requirements

Whole user journey here: hide fields in a profile

2. Non Functional Requirements

Expected volume & Performance requirements

No special requirements

Security requirements (Authentication, Authorizations, Audit track / traceability, data retention…)

Security is inherited from up level application

Extensibility requirements (Identified extension points, plugables implementations...)

No extensibility requirements

Configurability requirements (properties introduced, default settings, jobs, etc...)

The list of fields that cannot be hidden could be altered in exo.properties

Requirements related to existing users data

No requirements

Requirements related to existing features (ex: Add a button to existing modules...)

Feature Flag (property name, default status, target audience, functional behaviour)

No feature flag will be used

Other NFR (ex: Use of VueX, Vue, Vuetify)

Make sure that the new developments respect the accessibility requirements

3. Impacts

No impacts

4. Software Architecture

Security

Rest endpoints should be configured correctly with the @RolesAllowed annotation

Access (GUI, API…)

Rest API design (Entry points, domain objects)

Portlet Vue & Vuetify, simple portlet, extension WAR ...

Services & processing

Ex: Scheduled Jobs

Data and persistence

  1. A new field will be aded to the ProfilePropertySettingEntity :

    • name : isHiddenable
    • Type : boolean
    • default value: false
  2. Liquibase should update all old records with the new attribute having the default value to false

  3. User preferences to hide/show a field will be stored in the SettingsService with Context = USER and SCOPE = Application

    • Save a field : settingService.set(Context.USER.id(String.valueOf(userIdentityId)), Scope.APPLICATION.id("SocialUserProfile"), "FieldsSettings", fieldsSettingsObject);
    • Get the value of the settings of a field : settingService.get(Context.USER.id(String.valueOf(userIdentityId)), Scope.APPLICATION.id("SocialUserProfile"), "FieldsSettings");

Macro data model

Persistence layer (RDBMS, elasticsearch...)

5. Annexes

Reasoning that explain the technical choices Impacts (ex: impact on public REST/Java API) References (links...)

rdenarie commented 5 months ago

@srenault-meeds can you check for go-fonc ? Thanks

srenault-meeds commented 5 months ago

Thanks @Julien-Dubois-eXo. I have edited the issue for some typo review (you can check versions if needed).

It seems that some items are missing. Indeed:

Julien-Dubois-eXo commented 5 months ago

Updated

srenault-meeds commented 5 months ago

Ok thanks. I'd rather get the screenshots than the design link FYI

margondicco commented 5 months ago

@rdenarie @boubaker tech review needed thank you

boubaker commented 5 months ago

@rdenarie @boubaker tech review needed thank you

A "go func" is needed first before submitting a tech review to make sure that functional behavior doesn't change.

srenault-meeds commented 5 months ago

Hello I have edited the description to have the screenshot / gif instead of the design as required.

Before go-func, I need a validation regarding phones and URL additions. Indeed, the UX has been changed a bit. Do you change it as discussed or have you changed your mind? Indeed, with the hide/visibility option, this changed a bit.

AND BTW, we talked about getting rid of the IM field. Is that something you will take care of during this MIP?

Julien-Dubois-eXo commented 5 months ago

@srenault-meeds Honestly the rework of the contact information edition drawer will probably not be done. It is the latest thing we will do if we have time but as it was not part of the initial scope I have doubts.

The IM field will not be modified during this MIP.

srenault-meeds commented 5 months ago

Ok so understood: the UI revamping of the Contact information edition drawer might not be done. No blocker.

Go-Fonc

boubaker commented 5 months ago

Go-tech added

Julien-Dubois-eXo commented 5 months ago

FYI By default, first name, last name, and full name cannot be hidden and it can't be changed the other fields can be hidden by the user

this part has been designed so that it can be parameterized by property the server property that defines the unhiddenable profile properties is "social.profile.unHiddenable.properties" by default its : social.profile.unHiddenable.properties=fullName, firstName,lastName

Julien-Dubois-eXo commented 5 months ago

@srenault-meeds I confirm we will not do the rework of the contact information edition drawer and the "expand drawer" will be addressed by the maintenance, not the FT.

ahamdi commented 3 months ago

PRs ready and acceptance is up with latest changes ready to review by Meeds DAO members @boubaker

margondicco commented 3 months ago

@Julien-Dubois-eXo please, could you push a functional information for @srenault-meeds ? thank you

boubaker commented 3 months ago

PRs ready and acceptance is up with latest changes ready to review by Meeds DAO members @boubaker

Thanks, can you please link PRs

srenault-meeds commented 3 months ago

Yes we need some information so we post a new product update to inform our users and customers (they are on CI/CD)

srenault-meeds commented 3 months ago

Hello,

FYI no delivery for now until we have the functional information. Thanks

srenault-meeds commented 3 months ago

Hi,

Few feedbacks:

  1. Position hidden, still displayed in the profile card and below the full name in the profile

    image
  2. When an attribute is made not visible, the user has still the option to hide it. This creates confusion to the user. Indeed, I think I can display it but it doesn't work.

  3. Missing tooltip when a field is not editable by the user (previously identified in the design)

Waiting for your feedbacks and your decision

Julien-Dubois-eXo commented 3 months ago

@srenault-meeds

Missing tooltip when a field is not editable by the user (previously identified in the design)

The not editable feature is linked to a previous work so it's not on the delivery scope.

When an attribute is made not visible, the user has still the option to hide it. This creates confusion to the user. Indeed, I think I can display it but it doesn't work.

I agree, I propose to still display the hide button disabled with a tooltip that explains why you cannot use it "The attribute is already hidden by the administrator".

Position hidden, still displayed in the profile card and below the full name in the profile

We wil fix it.

srenault-meeds commented 3 months ago

Discussed with @Julien-Dubois-eXo and ok for me What was discussed: feedbacks will be fixed/enhanced after the MIP delivery

No blocker for me

boubaker commented 3 months ago

Discussed with @Julien-Dubois-eXo and ok for me What was discussed: feedbacks will be fixed/enhanced after the MIP delivery

No blocker for me

Since the PR holds both MIPs, we will wait for Meeds-io/MIPs#110 functional approval as mentioned here https://github.com/Meeds-io/MIPs/issues/110#issuecomment-1994852537

ahamdi commented 2 months ago

@srenault-meeds Mips acceptance was redeployed with latest fixes. Ready to review

srenault-meeds commented 2 months ago

OK for me. I will create issues for these remaining feedback

Position hidden, still displayed in the profile card and below the full name in the profile image When an attribute is made not visible, the user has still the option to hide it. This creates confusion to the user.

No blocker as discussed

margondicco commented 2 months ago

@Julien-Dubois-eXo to be checked with the new people card. Thank you

boubaker commented 2 months ago

No blocker as discussed

For my part, no objection to merge MIPs (no need to review PRs to merge BTW)