Moves IExternalLoginRepository, abstracts out IUserLoginInfo
This commit is contained in:
13
src/Umbraco.Abstractions/Models/Identity/IUserLoginInfo.cs
Normal file
13
src/Umbraco.Abstractions/Models/Identity/IUserLoginInfo.cs
Normal 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; }
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
28
src/Umbraco.Core/Models/Identity/UserLoginInfoWrapper.cs
Normal file
28
src/Umbraco.Core/Models/Identity/UserLoginInfoWrapper.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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 });
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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())
|
||||
{
|
||||
|
||||
@@ -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" />
|
||||
|
||||
Reference in New Issue
Block a user