Optional<UserPermissions> getSuperAdminUserPermissions(@Nonnull UserInfo.Username username, @Nonnull Application.Name applicationName) { List<com.intuit.wasabi.repository.cassandra.pojo.UserRole> resultList = getUserRolesWithWildcardAppName( username, applicationName ); return resultList.stream() .filter(t -> SUPERADMIN.equalsIgnoreCase(t.getRole())) .map(m -> UserPermissions.newInstance(applicationName, Role.SUPERADMIN.getRolePermissions()) .build() ) .findAny(); }
@Override public UserPermissions checkSuperAdminPermissions(UserInfo.Username userID, Application.Name applicationName) { List<com.intuit.wasabi.repository.cassandra.pojo.UserRole> resultList = getUserRolesWithWildcardAppName(userID, applicationName); Optional<com.intuit.wasabi.repository.cassandra.pojo.UserRole> adminRole = resultList .stream() .filter(t -> SUPERADMIN.equalsIgnoreCase(t.getRole())) .findAny(); if (!adminRole.isPresent()) return null; else return UserPermissions.newInstance(applicationName, Role.SUPERADMIN.getRolePermissions()) .build(); } //UserRole related operations
UserPermissions getAppSpecificPermission(UserInfo.Username username, Application.Name applicationName) { List<com.intuit.wasabi.repository.cassandra.pojo.UserRole> result = getUserRoleList(username, Optional.ofNullable(applicationName)); if (result.size() != 0) { assert result.size() <= 1 : "More than a single row returned"; com.intuit.wasabi.repository.cassandra.pojo.UserRole role = result.get(0); assert role.getRole() != null : "Role cannot be null"; return UserPermissions.newInstance(applicationName, Role.toRole(role.getRole()).getRolePermissions()) .build(); } return null; }
@Override public UserPermissionsList getUserPermissionsList(UserInfo.Username userID) { UserPermissionsList userPermissionsList = new UserPermissionsList(); Optional<UserPermissions> superAdminUserPermissions = getSuperAdminUserPermissions(userID, WILDCARD); if (superAdminUserPermissions.isPresent()) { List<String> allAppNames = getAllApplicationNameFromApplicationList(); allAppNames.stream() .map(t -> UserPermissions.newInstance( Application.Name.valueOf(t), superAdminUserPermissions.get().getPermissions() ).build()) .forEach(userPermissionsList::addPermissions); } else { List<com.intuit.wasabi.repository.cassandra.pojo.UserRole> resultList = getUserRoleList(userID, Optional.empty()); resultList.stream() .filter(t -> t.getRole() != null) .map(t -> UserPermissions.newInstance( Application.Name.valueOf(t.getAppName()) , Role.valueOf(t.getRole()).getRolePermissions()).build() ) .forEach(userPermissionsList::addPermissions); } return userPermissionsList; }