Editor/SyncToolProjectSecurity.cs
using System;
using System.IO;
using System.Text.Json;
public static partial class SyncToolConfig
{
public static string AuthSessionsLabel => EnableAuthSessions ? "Enabled" : "Disabled";
public static string EncryptedRequestsLabel => EnableEncryptedRequests ? "Enabled" : "Disabled";
public static bool ApplyProjectSecuritySettings( bool enableAuthSessions, bool enableEncryptedRequests )
{
var changed = EnableAuthSessions != enableAuthSessions
|| EnableEncryptedRequests != enableEncryptedRequests;
EnableAuthSessions = enableAuthSessions;
EnableEncryptedRequests = enableEncryptedRequests;
if ( changed && File.Exists( Abs( ProjectConfigFile ) ) )
Save( SecretKey, PublicApiKey, ProjectId, BaseUrl, DataSource, DataFolder, CdnUrl );
return changed;
}
public static bool TryApplyProjectSecuritySettings( JsonElement response )
{
if ( TryFindProjectSecuritySettings( response, out var authSessions, out var encryptedRequests ) )
return ApplyProjectSecuritySettings( authSessions, encryptedRequests );
return false;
}
private static bool TryFindProjectSecuritySettings( JsonElement value, out bool authSessions, out bool encryptedRequests )
{
authSessions = false;
encryptedRequests = false;
if ( value.ValueKind != JsonValueKind.Object )
return false;
if ( TryReadBool( value, "enableAuthSessions", out authSessions )
& TryReadBool( value, "enableEncryptedRequests", out encryptedRequests ) )
return true;
foreach ( var key in new[] { "project", "settings", "projectSettings", "data" } )
{
if ( value.TryGetProperty( key, out var child )
&& TryFindProjectSecuritySettings( child, out authSessions, out encryptedRequests ) )
return true;
}
return false;
}
private static bool TryReadBool( JsonElement value, string key, out bool result )
{
result = false;
if ( !value.TryGetProperty( key, out var property ) )
return false;
if ( property.ValueKind is JsonValueKind.True or JsonValueKind.False )
{
result = property.GetBoolean();
return true;
}
if ( property.ValueKind == JsonValueKind.String && bool.TryParse( property.GetString(), out result ) )
return true;
return false;
}
}