Radicale: check radicale available

This commit is contained in:
Nikolay Rechkin 2023-07-15 12:03:59 +03:00
parent 5e5d0c99ef
commit 615df7a72c
2 changed files with 66 additions and 55 deletions

View File

@ -435,54 +435,58 @@ public class UserManager
new Uri(_cache.Get<string>("REWRITE_URL" + tenant.Id)).ToString() : tenant.GetTenantDomain(_coreSettings);
var rootAuthorization = _cardDavAddressbook.GetSystemAuthorization();
var allUserEmails = GetDavUserEmails().ToList();
if (oldUserData != null && oldUserData.Status != newUser.Status && newUser.Status == EmployeeStatus.Terminated)
if (rootAuthorization != null)
{
var userAuthorization = oldUserData.Email.ToLower() + ":" + _instanceCrypto.Encrypt(oldUserData.Email);
var requestUrlBook = _cardDavAddressbook.GetRadicaleUrl(myUri, newUser.Email.ToLower(), true, true);
var collection = await _cardDavAddressbook.GetCollection(requestUrlBook, userAuthorization, myUri.ToString());
if (collection.Completed && collection.StatusCode != 404)
var allUserEmails = GetDavUserEmails().ToList();
if (oldUserData != null && oldUserData.Status != newUser.Status && newUser.Status == EmployeeStatus.Terminated)
{
await _cardDavAddressbook.Delete(myUri, newUser.Id, newUser.Email, tenant.Id);
}
foreach (var email in allUserEmails)
{
var requestUrlItem = _cardDavAddressbook.GetRadicaleUrl(myUri.ToString(), email.ToLower(), true, true, itemID: newUser.Id.ToString());
try
var userAuthorization = oldUserData.Email.ToLower() + ":" + _instanceCrypto.Encrypt(oldUserData.Email);
var requestUrlBook = _cardDavAddressbook.GetRadicaleUrl(myUri, newUser.Email.ToLower(), true, true);
var collection = await _cardDavAddressbook.GetCollection(requestUrlBook, userAuthorization, myUri.ToString());
if (collection.Completed && collection.StatusCode != 404)
{
var davItemRequest = new DavRequest()
await _cardDavAddressbook.Delete(myUri, newUser.Id, newUser.Email, tenant.Id);
}
foreach (var email in allUserEmails)
{
var requestUrlItem = _cardDavAddressbook.GetRadicaleUrl(myUri.ToString(), email.ToLower(), true, true, itemID: newUser.Id.ToString());
try
{
Url = requestUrlItem,
Authorization = rootAuthorization,
Header = myUri
};
await _radicaleClient.RemoveAsync(davItemRequest).ConfigureAwait(false);
}
catch (Exception ex)
{
_log.ErrorWithException(ex);
var davItemRequest = new DavRequest()
{
Url = requestUrlItem,
Authorization = rootAuthorization,
Header = myUri
};
await _radicaleClient.RemoveAsync(davItemRequest).ConfigureAwait(false);
}
catch (Exception ex)
{
_log.ErrorWithException(ex);
}
}
}
}
else
{
try
else
{
var cardDavUser = new CardDavItem(u.Id, u.FirstName, u.LastName, u.UserName, u.BirthDate, u.Sex, u.Title, u.Email, u.ContactsList, u.MobilePhone);
try
{
await _cardDavAddressbook.UpdateItemForAllAddBooks(allUserEmails, myUri, cardDavUser, _tenantManager.GetCurrentTenant().Id, oldUserData != null && oldUserData.Email != newUser.Email ? oldUserData.Email : null);
var cardDavUser = new CardDavItem(u.Id, u.FirstName, u.LastName, u.UserName, u.BirthDate, u.Sex, u.Title, u.Email, u.ContactsList, u.MobilePhone);
try
{
await _cardDavAddressbook.UpdateItemForAllAddBooks(allUserEmails, myUri, cardDavUser, _tenantManager.GetCurrentTenant().Id, oldUserData != null && oldUserData.Email != newUser.Email ? oldUserData.Email : null);
}
catch (Exception ex)
{
_log.ErrorWithException(ex);
}
}
catch (Exception ex)
{
_log.ErrorWithException(ex);
}
}
catch (Exception ex)
{
_log.ErrorWithException(ex);
}
}
}
@ -524,38 +528,41 @@ public class UserManager
new Uri(_cache.Get<string>("REWRITE_URL" + tenant.Id)).ToString() : tenant.GetTenantDomain(_coreSettings);
var davUsersEmails = GetDavUserEmails();
var requestUrlBook = _cardDavAddressbook.GetRadicaleUrl(myUri, delUser.Email.ToLower(), true, true);
var addBookCollection = await _cardDavAddressbook.GetCollection(requestUrlBook, userAuthorization, myUri.ToString());
if (addBookCollection.Completed && addBookCollection.StatusCode != 404)
if(rootAuthorization != null)
{
var davbookRequest = new DavRequest()
var addBookCollection = await _cardDavAddressbook.GetCollection(requestUrlBook, userAuthorization, myUri.ToString());
if (addBookCollection.Completed && addBookCollection.StatusCode != 404)
{
Url = requestUrlBook,
Authorization = rootAuthorization,
Header = myUri
};
await _radicaleClient.RemoveAsync(davbookRequest).ConfigureAwait(false);
}
foreach (var email in davUsersEmails)
{
var requestUrlItem = _cardDavAddressbook.GetRadicaleUrl(myUri.ToString(), email.ToLower(), true, true, itemID: delUser.Id.ToString());
try
{
var davItemRequest = new DavRequest()
var davbookRequest = new DavRequest()
{
Url = requestUrlItem,
Url = requestUrlBook,
Authorization = rootAuthorization,
Header = myUri
};
await _radicaleClient.RemoveAsync(davItemRequest).ConfigureAwait(false);
await _radicaleClient.RemoveAsync(davbookRequest).ConfigureAwait(false);
}
catch (Exception ex)
foreach (var email in davUsersEmails)
{
_log.ErrorWithException(ex);
var requestUrlItem = _cardDavAddressbook.GetRadicaleUrl(myUri.ToString(), email.ToLower(), true, true, itemID: delUser.Id.ToString());
try
{
var davItemRequest = new DavRequest()
{
Url = requestUrlItem,
Authorization = rootAuthorization,
Header = myUri
};
await _radicaleClient.RemoveAsync(davItemRequest).ConfigureAwait(false);
}
catch (Exception ex)
{
_log.ErrorWithException(ex);
}
}
}
}
catch (Exception ex)
{

View File

@ -68,7 +68,11 @@ public abstract class RadicaleEntity
}
public string GetSystemAuthorization()
{
{
if(_configuration["radicale:admin"] == null || _configuration["radicale:admin"] == "")
{
return null;
}
return _configuration["radicale:admin"] + ":" + _instanceCrypto.Encrypt(_configuration["radicale:admin"]);
}