[ 
https://issues.apache.org/jira/browse/KNOX-2859?focusedWorklogId=837905&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-837905
 ]

ASF GitHub Bot logged work on KNOX-2859:
----------------------------------------

                Author: ASF GitHub Bot
            Created on: 09/Jan/23 11:54
            Start Date: 09/Jan/23 11:54
    Worklog Time Spent: 10m 
      Work Description: zeroflag commented on code in PR #713:
URL: https://github.com/apache/knox/pull/713#discussion_r1064559699


##########
knox-token-management-ui/token-management/app/token.management.component.ts:
##########
@@ -42,6 +55,53 @@ export class TokenManagementComponent implements OnInit {
     }
 
     constructor(private tokenManagementService: TokenManagementService) {
+        let isMatch: (record: KnoxToken, filter: String, impersonated: 
boolean) => boolean = (record, filter, impersonated) => {
+          let normalizedFilter = filter.trim().toLocaleLowerCase();
+          let matchesTokenId = 
record.tokenId.toLocaleLowerCase().includes(normalizedFilter);
+          let matchesComment = record.metadata.comment && 
record.metadata.comment.toLocaleLowerCase().includes(normalizedFilter);
+          let matchesCustomMetadata = false;
+          if (record.metadata.customMetadataMap) {
+            for (let entry of 
Array.from(Object.entries(record.metadata.customMetadataMap))) {
+                 if (entry[0].toLocaleLowerCase().includes(normalizedFilter) 
|| entry[1].toLocaleLowerCase().includes(normalizedFilter)) {
+                  matchesCustomMetadata = true;
+                  break;
+              }
+            }
+          } else {
+            matchesCustomMetadata = true; // nothing to match
+          }
+
+          let matchesImpersonatedUserName = false;  // doAs username should be 
checked only if impersonation is enabled
+          if (impersonated) {
+              matchesImpersonatedUserName = 
record.metadata.userName.toLocaleLowerCase().includes(normalizedFilter);
+          }
+
+          return matchesTokenId || matchesComment || matchesCustomMetadata || 
matchesImpersonatedUserName;
+        };
+
+        this.knoxTokens.filterPredicate = function (record, filter) {
+             return isMatch(record, filter, false);
+        };
+
+        this.doAsKnoxTokens.filterPredicate = function (record, filter) {
+          return isMatch(record, filter, true);
+        };
+
+        this.knoxTokens.sortingDataAccessor = (item, property) => {
+           switch(property) {
+             case 'metadata.comment': return item.metadata.comment;
+             default: return item[property];
+           }
+        };
+
+        this.doAsKnoxTokens.sortingDataAccessor = (item, property) => {
+              let normalizedPropertyName = property.replace('impersonation.', 
'');

Review Comment:
   nit: wrong indentation





Issue Time Tracking
-------------------

    Worklog Id:     (was: 837905)
    Time Spent: 0.5h  (was: 20m)

> Search/filter tokens on Token Management page
> ---------------------------------------------
>
>                 Key: KNOX-2859
>                 URL: https://issues.apache.org/jira/browse/KNOX-2859
>             Project: Apache Knox
>          Issue Type: Improvement
>          Components: TokenManagementUI
>    Affects Versions: 2.0.0
>            Reporter: Sandor Molnar
>            Assignee: Sandor Molnar
>            Priority: Major
>             Fix For: 2.1.0
>
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> In 2.0.0, the Knox team introduced a new UI where logged-in users can see 
> their own tokens as well as tokens generated by them on behalf of other users 
> (impersonated tokens).
> These tables show different useful information, such as custom metadata, in 
> tables where pagination is used. However, there is no way that end-users can 
> filter/search for specific tokens based on their needs. In the case of a huge 
> token list (e.g. when the token limit is disabled), it may be very hard for 
> them to find the token they are interested in (e.g. they want to 
> revoke/disable one).
> The scope of this task is to find another Angular DataTable implementation 
> where these features are supported and integrate them on the token management 
> page (we may want to do the same on tables on the Admin UI).



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to