public static SharedFolderPermission ResolveSharedFolderAccessPath(this IVault vault, string username,
                                                                           string sharedFolderUid, bool forManageUsers = false, bool forManageRecords = false)
        {
            if (string.IsNullOrEmpty(sharedFolderUid))
            {
                return(null);
            }
            if (!vault.TryGetSharedFolder(sharedFolderUid, out var sf))
            {
                return(null);
            }

            var permissions = sf.UsersPermissions
                              .Where(x =>
                                     x.UserType == UserType.User && x.UserId == username ||
                                     x.UserType == UserType.Team && vault.TryGetTeam(x.UserId, out _))
                              .Where(x => (!forManageUsers || x.ManageUsers) && (!forManageRecords || x.ManageRecords))
                              .ToArray();

            if (permissions.Length <= 0)
            {
                return(null);
            }
            return(permissions.FirstOrDefault(x => x.UserType == UserType.User) ?? permissions[0]);
        }