/* * Copyright OpenSearch Contributors * SPDX-License-Identifier: Apache-2.0 */ package org.opensearch.search.asynchronous.utils; import org.opensearch.commons.authuser.User; import org.opensearch.common.Nullable; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; public class UserAuthUtils { @SuppressWarnings("unchecked") public static User parseUser(Map userDetails) throws IOException { if(userDetails == null) { return null; } String name = ""; List backendRoles = new ArrayList<>(); List roles = new ArrayList<>(); List customAttNames = new ArrayList<>(); for (Map.Entry userDetail : userDetails.entrySet()) { String fieldName = userDetail.getKey(); switch (fieldName) { case User.NAME_FIELD: name = (String) userDetail.getValue(); break; case User.BACKEND_ROLES_FIELD: if(userDetail.getValue()!= null) backendRoles = (List) userDetail.getValue(); break; case User.ROLES_FIELD: if(userDetail.getValue()!= null) roles = (List) userDetail.getValue(); break; case User.CUSTOM_ATTRIBUTE_NAMES_FIELD: if(userDetail.getValue()!= null) customAttNames = (List) userDetail.getValue(); break; default: break; } } return new User(name, backendRoles, roles, customAttNames); } public static boolean isUserValid(@Nullable User currentUser, @Nullable User originalUser) { if(originalUser == null || currentUser == null) { return true; } if(currentUser.getBackendRoles() == null) { return originalUser.getBackendRoles() == null; } return currentUser.getBackendRoles().containsAll(originalUser.getBackendRoles()); } }