V14: Move towards get guid (#15889)

* Implement using keymap for member

* Remove current usages of GetUserById

* User userId resolver to resolve user key

* Refactor user repository to use GUID not int

* Add happy path test

* Remove user in cache when user gets updated

* Use await in async method

* Fix up according to review

* Update IMetricsConsentService.cs to have async method

* Fix according to review

* Fix more according to comments

* Revert "Fix up according to review"

This reverts commit a75acaaa

* Get current backoffice user from method

* Update user repository delete functionality

* Fix up more test

* Try to get user by id if key fails

* Add user key as required claim

* Fix tests

* Don't set claim in BackofficeController

* Create constant for the Sub claim

---------

Co-authored-by: kjac <kja@umbraco.dk>
This commit is contained in:
Nikolaj Geisle
2024-04-11 13:53:34 +02:00
committed by GitHub
parent 0b62df2bb4
commit d5809da665
31 changed files with 244 additions and 169 deletions

View File

@@ -20,8 +20,8 @@ namespace Umbraco.Cms.Core.Services
private readonly IMemberTypeRepository _memberTypeRepository;
private readonly IMemberGroupRepository _memberGroupRepository;
private readonly IAuditRepository _auditRepository;
private readonly IMemberGroupService _memberGroupService;
private readonly Lazy<IIdKeyMap> _idKeyMap;
#region Constructor
@@ -33,13 +33,15 @@ namespace Umbraco.Cms.Core.Services
IMemberRepository memberRepository,
IMemberTypeRepository memberTypeRepository,
IMemberGroupRepository memberGroupRepository,
IAuditRepository auditRepository)
IAuditRepository auditRepository,
Lazy<IIdKeyMap> idKeyMap)
: base(provider, loggerFactory, eventMessagesFactory)
{
_memberRepository = memberRepository;
_memberTypeRepository = memberTypeRepository;
_memberGroupRepository = memberGroupRepository;
_auditRepository = auditRepository;
_idKeyMap = idKeyMap;
_memberGroupService = memberGroupService ?? throw new ArgumentNullException(nameof(memberGroupService));
}
@@ -333,8 +335,7 @@ namespace Umbraco.Cms.Core.Services
{
using ICoreScope scope = ScopeProvider.CreateCoreScope(autoComplete: true);
scope.ReadLock(Constants.Locks.MemberTree);
IQuery<IMember> query = Query<IMember>().Where(x => x.Key == id);
return _memberRepository.Get(query)?.FirstOrDefault();
return GetMemberFromRepository(id);
}
[Obsolete($"Use {nameof(GetById)}. Will be removed in V15.")]
@@ -1069,6 +1070,12 @@ namespace Umbraco.Cms.Core.Services
private void Audit(AuditType type, int userId, int objectId, string? message = null) => _auditRepository.Save(new AuditItem(objectId, type, userId, ObjectTypes.GetName(UmbracoObjectTypes.Member), message));
private IMember? GetMemberFromRepository(Guid id)
=> _idKeyMap.Value.GetIdForKey(id, UmbracoObjectTypes.Member) switch
{
{ Success: false } => null,
{ Result: var intId } => _memberRepository.Get(intId),
};
#endregion
#region Membership