Moves IExternalLoginRepository, abstracts out IUserLoginInfo

This commit is contained in:
Shannon
2019-11-12 14:39:27 +11:00
parent 8cc218f716
commit 570e9ca7bd
8 changed files with 50 additions and 10 deletions

View File

@@ -0,0 +1,13 @@
namespace Umbraco.Core.Models.Identity
{
public interface IUserLoginInfo
{
/// <summary>
/// Provider for the linked login, i.e. Facebook, Google, etc.
/// </summary>
string LoginProvider { get; set; }
/// <summary>User specific key for the login provider</summary>
string ProviderKey { get; set; }
}
}

View File

@@ -1,12 +1,11 @@
using System.Collections.Generic;
using Microsoft.AspNet.Identity;
using Umbraco.Core.Models.Identity;
namespace Umbraco.Core.Persistence.Repositories
{
public interface IExternalLoginRepository : IReadWriteQueryRepository<int, IIdentityUserLogin>
{
void SaveUserLogins(int memberId, IEnumerable<UserLoginInfo> logins);
void SaveUserLogins(int memberId, IEnumerable<IUserLoginInfo> logins);
void DeleteUserLogins(int memberId);
}
}

View File

@@ -0,0 +1,28 @@
using Microsoft.AspNet.Identity;
namespace Umbraco.Core.Models.Identity
{
internal class UserLoginInfoWrapper : IUserLoginInfo
{
private readonly UserLoginInfo _info;
public static IUserLoginInfo Wrap(UserLoginInfo info) => new UserLoginInfoWrapper(info);
private UserLoginInfoWrapper(UserLoginInfo info)
{
_info = info;
}
public string LoginProvider
{
get => _info.LoginProvider;
set => _info.LoginProvider = value;
}
public string ProviderKey
{
get => _info.ProviderKey;
set => _info.ProviderKey = value;
}
}
}

View File

@@ -25,7 +25,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
Database.Execute("DELETE FROM ExternalLogins WHERE UserId=@userId", new { userId = memberId });
}
public void SaveUserLogins(int memberId, IEnumerable<UserLoginInfo> logins)
public void SaveUserLogins(int memberId, IEnumerable<IUserLoginInfo> logins)
{
//clear out logins for member
Database.Execute("DELETE FROM umbracoExternalLogin WHERE userId=@userId", new { userId = memberId });

View File

@@ -141,7 +141,7 @@ namespace Umbraco.Core.Security
if (isLoginsPropertyDirty)
{
var logins = await GetLoginsAsync(user);
_externalLoginService.SaveUserLogins(found.Id, logins);
_externalLoginService.SaveUserLogins(found.Id, logins.Select(UserLoginInfoWrapper.Wrap));
}
}
}
@@ -382,7 +382,7 @@ namespace Umbraco.Core.Security
if (login == null) throw new ArgumentNullException("login");
//get all logins associated with the login id
var result = _externalLoginService.Find(login).ToArray();
var result = _externalLoginService.Find(UserLoginInfoWrapper.Wrap(login)).ToArray();
if (result.Any())
{
//return the first user that matches the result

View File

@@ -22,14 +22,14 @@ namespace Umbraco.Core.Services
/// </summary>
/// <param name="login"></param>
/// <returns></returns>
IEnumerable<IIdentityUserLogin> Find(UserLoginInfo login);
IEnumerable<IIdentityUserLogin> Find(IUserLoginInfo login);
/// <summary>
/// Save user logins
/// </summary>
/// <param name="userId"></param>
/// <param name="logins"></param>
void SaveUserLogins(int userId, IEnumerable<UserLoginInfo> logins);
void SaveUserLogins(int userId, IEnumerable<IUserLoginInfo> logins);
/// <summary>
/// Deletes all user logins - normally used when a member is deleted

View File

@@ -40,7 +40,7 @@ namespace Umbraco.Core.Services.Implement
/// </summary>
/// <param name="login"></param>
/// <returns></returns>
public IEnumerable<IIdentityUserLogin> Find(UserLoginInfo login)
public IEnumerable<IIdentityUserLogin> Find(IUserLoginInfo login)
{
using (var scope = ScopeProvider.CreateScope(autoComplete: true))
{
@@ -54,7 +54,7 @@ namespace Umbraco.Core.Services.Implement
/// </summary>
/// <param name="userId"></param>
/// <param name="logins"></param>
public void SaveUserLogins(int userId, IEnumerable<UserLoginInfo> logins)
public void SaveUserLogins(int userId, IEnumerable<IUserLoginInfo> logins)
{
using (var scope = ScopeProvider.CreateScope())
{

View File

@@ -234,6 +234,7 @@
<Compile Include="Models\IDataType.cs" />
<Compile Include="Models\IDataValueEditor.cs" />
<Compile Include="Models\Identity\IdentityMapDefinition.cs" />
<Compile Include="Models\Identity\UserLoginInfoWrapper.cs" />
<Compile Include="Models\IMedia.cs" />
<Compile Include="Models\IMediaType.cs" />
<Compile Include="Models\IMember.cs" />
@@ -922,7 +923,6 @@
<Compile Include="Persistence\Repositories\IDocumentTypeContainerRepository.cs" />
<Compile Include="Persistence\Repositories\IEntityContainerRepository.cs" />
<Compile Include="Persistence\Repositories\IEntityRepository.cs" />
<Compile Include="Persistence\Repositories\IExternalLoginRepository.cs" />
<Compile Include="Persistence\Repositories\IMediaRepository.cs" />
<Compile Include="Persistence\Repositories\IMediaTypeContainerRepository.cs" />
<Compile Include="Persistence\Repositories\IMediaTypeRepository.cs" />