This commit is contained in:
Nikita 2022-05-13 12:20:28 +03:00
parent 11ac66a1e0
commit 787a1ba172
6 changed files with 32 additions and 29 deletions

View File

@ -161,4 +161,9 @@ public class LdapCertificateConfirmRequest
return null;
}
}
public override string ToString()
{
return JsonSerializer.Serialize(this);
}
}

View File

@ -34,7 +34,6 @@ public class LdapOperationJob : DistributedTaskProgress
private string _culture;
public LdapSettings LDAPSettings { get; private set; }
protected DistributedTask TaskInfo { get; private set; }
protected string Source { get; private set; }
protected new string Status { get; set; }
protected string Error { get; set; }
@ -47,7 +46,7 @@ public class LdapOperationJob : DistributedTaskProgress
{
return _tenantId ?? this[nameof(_tenantId)];
}
set
private set
{
_tenantId = value;
this[nameof(_tenantId)] = value;
@ -116,7 +115,7 @@ public class LdapOperationJob : DistributedTaskProgress
{
_currentUser = userId != null ? _userManager.GetUsers(Guid.Parse(userId)) : null;
_tenantId = tenant.Id;
TenantId = tenant.Id;
_tenantManager.SetCurrentTenant(tenant);
_ldapChanges.Tenant = tenant;
@ -131,17 +130,17 @@ public class LdapOperationJob : DistributedTaskProgress
Status = "";
Error = "";
Warning = "";
Source = "";
Resource = resource ?? new LdapLocalization();
_lDAPUserManager.Init(Resource);
InitDisturbedTask();
}
protected override void DoJob()
{
try
{
FillDistributedTask();
{
_securityContext.AuthenticateMe(Core.Configuration.Constants.CoreSystem);
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(_culture);
@ -241,7 +240,7 @@ public class LdapOperationJob : DistributedTaskProgress
try
{
this[LdapTaskProperty.FINISHED] = true;
PublishChanges();
PublishTaskInfo();
_securityContext.Logout();
}
catch (Exception ex)
@ -1217,9 +1216,21 @@ public class LdapOperationJob : DistributedTaskProgress
_log.InfoFormat(PROGRESS_STRING, Percentage, Status, Source);
PublishTaskInfo();
}
private void PublishTaskInfo()
{
FillDistributedTask();
PublishChanges();
}
private void InitDisturbedTask()
{
this[LdapTaskProperty.FINISHED] = false;
this[LdapTaskProperty.CERT_REQUEST] = null;
FillDistributedTask();
}
private void FillDistributedTask()
{
this[LdapTaskProperty.SOURCE] = Source;

View File

@ -26,33 +26,23 @@
namespace ASC.ActiveDirectory.ComplexOperations;
[DataContract]
public class LdapOperationStatus
{
[DataMember]
public bool Completed { get; set; }
[DataMember]
public string Id { get; set; }
[DataMember]
public string Status { get; set; }
[DataMember]
public string Error { get; set; }
[DataMember]
public string Warning { get; set; }
[DataMember]
public int Percents { get; set; }
[DataMember]
public LdapCertificateConfirmRequest CertificateConfirmRequest { get; set; }
public string CertificateConfirmRequest { get; set; }
[DataMember]
public string Source { get; set; }
[DataMember]
public string OperationType { get; set; }
}

View File

@ -63,7 +63,7 @@ public class LdapSaveSyncOperation
public LdapOperationStatus TestLdapSave(LdapSettings ldapSettings, Tenant tenant, string userId)
{
var operations = _progressQueue.GetAllTasks()
var operations = _progressQueue.GetAllTasks<LdapOperationJob>()
.Where(t => t[LdapTaskProperty.OWNER] == tenant.Id)
.ToList();
@ -183,7 +183,7 @@ public class LdapSaveSyncOperation
public LdapOperationStatus ToLdapOperationStatus(int tenantId)
{
var operations = _progressQueue.GetAllTasks().ToList();
var operations = _progressQueue.GetAllTasks<LdapOperationJob>().ToList();
foreach (var o in operations)
{
@ -209,8 +209,6 @@ public class LdapSaveSyncOperation
_progressQueue.DequeueTask(operation.Id);
}
var certificateConfirmRequest = operation[LdapTaskProperty.CERT_REQUEST];
var result = new LdapOperationStatus
{
Id = operation.Id,
@ -218,10 +216,9 @@ public class LdapSaveSyncOperation
Percents = operation[LdapTaskProperty.PROGRESS],
Status = operation[LdapTaskProperty.RESULT],
Error = operation[LdapTaskProperty.ERROR],
CertificateConfirmRequest = certificateConfirmRequest,
CertificateConfirmRequest = operation[LdapTaskProperty.CERT_REQUEST] != "" ? operation[LdapTaskProperty.CERT_REQUEST] : null,
Source = operation[LdapTaskProperty.SOURCE],
OperationType = Enum.GetName(typeof(LdapOperationType),
(LdapOperationType)operation[LdapTaskProperty.OPERATION_TYPE]),
OperationType = operation[LdapTaskProperty.OPERATION_TYPE],
Warning = operation[LdapTaskProperty.WARNING]
};

View File

@ -347,7 +347,7 @@ public class LdapUserManager
private static void UpdateLdapUserContacts(UserInfo ldapUser, List<string> portalUserContacts)
{
if (!portalUserContacts.Any())
if (portalUserContacts == null || !portalUserContacts.Any())
return;
var ldapUserContacts = ldapUser.Contacts;
@ -458,8 +458,8 @@ public class LdapUserManager
needUpdate = true;
}
if (ldapUser.ContactsList.Count != portalUser.ContactsList.Count ||
!ldapUser.Contacts.All(portalUser.Contacts.Contains))
if (portalUser.ContactsList == null && ldapUser.ContactsList.Count != 0 || portalUser.ContactsList != null && (ldapUser.ContactsList.Count != portalUser.ContactsList.Count ||
!ldapUser.Contacts.All(portalUser.Contacts.Contains)))
{
_log.DebugFormat("NeedUpdateUser by Contacts -> portal: '{0}', ldap: '{1}'",
string.Join("|", portalUser.Contacts),

View File

@ -149,7 +149,7 @@ public static class LdapUtils
public static string GetContactsString(this UserInfo userInfo)
{
if (userInfo.ContactsList.Count == 0) return null;
if (userInfo.ContactsList == null || userInfo.ContactsList.Count == 0) return null;
var sBuilder = new StringBuilder();
foreach (var contact in userInfo.Contacts)
{