feat: added email domain trait to flagsmith (#25928) (#26211)

## Description
> This PR adds the email domain as a default trait in flagsmith. 

#### PR fixes following issue(s)
Fixes #25928 

#### Media
> A video or a GIF is preferred. when using Loom, don’t embed because it
looks like it’s a GIF. instead, just link to the video
>
>
#### Type of change
- Chore (housekeeping or task changes that don't impact user perception)

## Testing
>
#### How Has This Been Tested?
> Please describe the tests that you ran to verify your changes. Also
list any relevant details for your test configuration.
> Delete anything that is not relevant
- [x] Manual
- [ ] Jest
- [ ] Cypress
>
>
#### Test Plan
> Add Testsmith test cases links that relate to this PR
>
>
#### Issues raised during DP testing
> Link issues raised during DP testing for better visiblity and tracking
(copy link from comments dropped on this PR)
>
>
>
## Checklist:
#### Dev activity
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag


#### QA activity:
- [ ] [Speedbreak
features](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#speedbreakers-)
have been covered
- [ ] Test plan covers all impacted features and [areas of
interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#areas-of-interest-)
- [ ] Test plan has been peer reviewed by project stakeholders and other
QA members
- [ ] Manually tested functionality on DP
- [ ] We had an implementation alignment call with stakeholders post QA
Round 2
- [ ] Cypress test cases have been added and approved by SDET/manual QA
- [ ] Added `Test Plan Approved` label after Cypress tests were reviewed
- [ ] Added `Test Plan Approved` label after JUnit tests were reviewed
This commit is contained in:
Nilansh Bansal 2023-08-10 09:42:03 +05:30 committed by GitHub
parent 4a4e6267cb
commit 0d533dab90
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 19 additions and 0 deletions

View File

@ -71,14 +71,19 @@ public class CacheableFeatureFlagHelperCEImpl implements CacheableFeatureFlagHel
return configService.getInstanceId().map(instanceId -> {
Map<String, Object> userTraits = new HashMap<>();
String emailTrait;
String emailDomain = userIdentifierService.getEmailDomain(user.getEmail());
if (!commonConfig.isCloudHosting()) {
emailTrait = userIdentifierService.hash(user.getEmail());
if (emailDomain != null) {
emailDomain = userIdentifierService.hash(emailDomain);
}
} else {
emailTrait = user.getEmail();
}
userTraits.put("email", emailTrait);
userTraits.put("instanceId", instanceId);
userTraits.put("tenantId", user.getTenantId());
userTraits.put("emailDomain", emailDomain);
userTraits.put("isTelemetryOn", !commonConfig.isTelemetryDisabled());
// for anonymous user, user.getCreatedAt() is null
if (user.getCreatedAt() != null) {

View File

@ -7,4 +7,6 @@ public interface UserIdentifierServiceCE {
String getUserIdentifier(User user);
String hash(String value);
String getEmailDomain(String email);
}

View File

@ -34,4 +34,16 @@ public class UserIdentifierServiceCEImpl implements UserIdentifierServiceCE {
public String hash(String value) {
return value == null ? "" : DigestUtils.sha256Hex(value);
}
@Override
public String getEmailDomain(String email) {
String emailDomain = null;
if (email != null) {
int atIndex = email.indexOf('@');
if (atIndex > 0) {
emailDomain = email.substring(atIndex + 1).toLowerCase();
}
}
return emailDomain;
}
}