Exemplo n.º 1
0
        static SecuritySettingsTO ProcessSettingsFile(IResourceNameProvider resourceNameProvider, string encryptedData)
        {
            var decryptData = SecurityEncryption.Decrypt(encryptedData);

            Dev2Logger.Debug(decryptData, GlobalConstants.WarewolfDebug);

            var currentSecuritySettingsTo = JsonConvert.DeserializeObject <SecuritySettingsTO>(decryptData);

            if (currentSecuritySettingsTo.WindowsGroupPermissions.Any(a => a.ResourceID != Guid.Empty))
            {
                foreach (var perm in currentSecuritySettingsTo.WindowsGroupPermissions.Where(a => a.ResourceID != Guid.Empty))
                {
                    var resourceName = resourceNameProvider.GetResourceNameById(perm.ResourceID);
                    if (string.IsNullOrWhiteSpace(resourceName))
                    {
                        resourceName = perm.ResourcePath ?? string.Empty;
                    }
                    perm.ResourceName = resourceName;
                }
            }

            if (currentSecuritySettingsTo.AuthenticationOverrideWorkflow.Name.Length > 0 && currentSecuritySettingsTo.SecretKey == "")
            {
                var hmac = new HMACSHA256();
                currentSecuritySettingsTo.SecretKey = Convert.ToBase64String(hmac.Key);
            }

            var permissionGroup = currentSecuritySettingsTo.WindowsGroupPermissions;

            if (permissionGroup.Count > 0)
            {
                var adminGrp = permissionGroup[0].WindowsGroup;
                if (adminGrp == "BuiltIn\\Administrators")
                {
                    permissionGroup[0].WindowsGroup = WindowsGroupPermission.BuiltInAdministratorsText;
                }
            }

            var hasGuestPermission = permissionGroup.Any(permission => permission.IsBuiltInGuests);

            var hasAdminPermission = permissionGroup.Any(permission => permission.IsBuiltInAdministrators);

            if (!hasAdminPermission)
            {
                permissionGroup.Add(WindowsGroupPermission.CreateAdministrators());
                permissionGroup.Sort(QuickSortForPermissions);
            }

            if (!hasGuestPermission)
            {
                permissionGroup.Add(WindowsGroupPermission.CreateGuests());
                permissionGroup.Sort(QuickSortForPermissions);
            }

            return(currentSecuritySettingsTo);
        }