Browse Source

Make interception working for identity host project.

pull/96/head
Halil İbrahim Kalkan 9 years ago
parent
commit
5d69d017f5
  1. 3
      .gitignore
  2. 33
      src/AbpDesk/AbpDesk.ConsoleDemo/AbpDesk/ConsoleDemo/BlogPostLister.cs
  3. 29
      src/AbpDesk/AbpDesk.ConsoleDemo/AbpDesk/ConsoleDemo/UserLister.cs
  4. 15
      src/AbpDesk/AbpDesk.MongoBlog/Areas/Blog/Controllers/PostsController.cs
  5. BIN
      src/AbpDesk/Web_PlugIns/AbpDesk.MongoBlog.dll
  6. 51
      src/Volo.Abp.Identity.Application/Volo/Abp/Identity/UserAppService.cs
  7. 3
      src/Volo.Abp.Identity.HttpApi.Host/AbpIdentityHttpApiHostModule.cs
  8. 15
      src/Volo.Abp.Identity.HttpApi.Host/Startup.cs
  9. 3
      src/Volo.Abp.Identity.HttpApi.Host/Volo.Abp.Identity.HttpApi.Host.csproj

3
.gitignore

@ -253,4 +253,5 @@ paket-files/
# ABP # ABP
build/outputs build/outputs
src/AbpDesk/AbpDesk.Web.Mvc/Logs src/AbpDesk/AbpDesk.Web.Mvc/Logs
/src/Volo.Abp.Identity.HttpApi.Host/Logs

33
src/AbpDesk/AbpDesk.ConsoleDemo/AbpDesk/ConsoleDemo/BlogPostLister.cs

@ -11,44 +11,37 @@ namespace AbpDesk.ConsoleDemo
public class BlogPostLister : ITransientDependency public class BlogPostLister : ITransientDependency
{ {
private readonly IQueryableRepository<BlogPost> _blogPostRepository; private readonly IQueryableRepository<BlogPost> _blogPostRepository;
private readonly IUnitOfWorkManager _unitOfWorkManager;
private readonly IGuidGenerator _guidGenerator; private readonly IGuidGenerator _guidGenerator;
public BlogPostLister( public BlogPostLister(
IQueryableRepository<BlogPost> blogPostRepository, IQueryableRepository<BlogPost> blogPostRepository,
IUnitOfWorkManager unitOfWorkManager,
IGuidGenerator guidGenerator) IGuidGenerator guidGenerator)
{ {
_blogPostRepository = blogPostRepository; _blogPostRepository = blogPostRepository;
_unitOfWorkManager = unitOfWorkManager;
_guidGenerator = guidGenerator; _guidGenerator = guidGenerator;
} }
public void List() [UnitOfWork]
public virtual void List()
{ {
Console.WriteLine(); Console.WriteLine();
Console.WriteLine("List of blog posts:"); Console.WriteLine("List of blog posts:");
using (var unitOfWork = _unitOfWorkManager.Begin()) //var blog = _blogPostRepository.FirstOrDefault(b => b.Title.StartsWith("Hello World 3!"));
{ //blog.SetTitle(blog.Title + "'");
//var blog = _blogPostRepository.FirstOrDefault(b => b.Title.StartsWith("Hello World 3!")); //blog.Comments.Add(new BlogPostComment("@john", "good post! " + DateTime.Now.ToString(CultureInfo.InvariantCulture), star: (byte)RandomHelper.GetRandom(1, 6)));
//blog.SetTitle(blog.Title + "'"); //_blogPostRepository.Update(blog);
//blog.Comments.Add(new BlogPostComment("@john", "good post! " + DateTime.Now.ToString(CultureInfo.InvariantCulture), star: (byte)RandomHelper.GetRandom(1, 6)));
//_blogPostRepository.Update(blog);
//_blogPostRepository.Insert(new BlogPost(_guidGenerator.Create(), "Hello World 1!", DateTime.Now.ToString(CultureInfo.InvariantCulture))); //_blogPostRepository.Insert(new BlogPost(_guidGenerator.Create(), "Hello World 1!", DateTime.Now.ToString(CultureInfo.InvariantCulture)));
foreach (var blogPost in _blogPostRepository) foreach (var blogPost in _blogPostRepository)
{ {
Console.WriteLine("# " + blogPost); Console.WriteLine("# " + blogPost);
foreach (var comment in blogPost.Comments) foreach (var comment in blogPost.Comments)
{ {
Console.WriteLine(" - " + comment); Console.WriteLine(" - " + comment);
}
} }
unitOfWork.Complete();
} }
} }
} }

29
src/AbpDesk/AbpDesk.ConsoleDemo/AbpDesk/ConsoleDemo/UserLister.cs

@ -1,7 +1,6 @@
using System; using System;
using System.Linq; using System.Linq;
using Volo.Abp.Domain.Repositories; using Volo.Abp.Domain.Repositories;
using Volo.Abp.Guids;
using Volo.Abp.Identity; using Volo.Abp.Identity;
using Volo.Abp.Threading; using Volo.Abp.Threading;
using Volo.Abp.Uow; using Volo.Abp.Uow;
@ -12,40 +11,30 @@ namespace AbpDesk.ConsoleDemo
public class UserLister : ITransientDependency public class UserLister : ITransientDependency
{ {
private readonly IdentityUserManager _userManager; private readonly IdentityUserManager _userManager;
private readonly IUnitOfWorkManager _unitOfWorkManager;
private readonly IGuidGenerator _guidGenerator;
private readonly IQueryableRepository<IdentityUser> _userRepository; private readonly IQueryableRepository<IdentityUser> _userRepository;
public UserLister( public UserLister(
IdentityUserManager userManager, IdentityUserManager userManager,
IQueryableRepository<IdentityUser> userRepository, IQueryableRepository<IdentityUser> userRepository)
IUnitOfWorkManager unitOfWorkManager,
IGuidGenerator guidGenerator)
{ {
_userManager = userManager; _userManager = userManager;
_userRepository = userRepository; _userRepository = userRepository;
_unitOfWorkManager = unitOfWorkManager;
_guidGenerator = guidGenerator;
} }
public void List() [UnitOfWork]
public virtual void List()
{ {
Console.WriteLine(); Console.WriteLine();
Console.WriteLine("List of users:"); Console.WriteLine("List of users:");
using (var uow = _unitOfWorkManager.Begin()) foreach (var user in _userRepository.ToList())
{ {
foreach (var user in _userRepository.ToList()) Console.WriteLine("# " + user);
{
Console.WriteLine("# " + user);
foreach (var roleName in AsyncHelper.RunSync(() => _userManager.GetRolesAsync(user))) foreach (var roleName in AsyncHelper.RunSync(() => _userManager.GetRolesAsync(user)))
{ {
Console.WriteLine(" - " + roleName); Console.WriteLine(" - " + roleName);
}
} }
AsyncHelper.RunSync(() => uow.CompleteAsync());
} }
} }
} }

15
src/AbpDesk/AbpDesk.MongoBlog/Areas/Blog/Controllers/PostsController.cs

@ -3,7 +3,6 @@ using AbpDesk.Blogging;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.Domain.Repositories; using Volo.Abp.Domain.Repositories;
using Volo.Abp.Uow;
namespace Areas.Blog.Controllers namespace Areas.Blog.Controllers
{ {
@ -11,24 +10,16 @@ namespace Areas.Blog.Controllers
public class PostsController : AbpController public class PostsController : AbpController
{ {
private readonly IQueryableRepository<BlogPost> _blogPostRepository; private readonly IQueryableRepository<BlogPost> _blogPostRepository;
private readonly IUnitOfWorkManager _unitOfWorkManager;
public PostsController(IQueryableRepository<BlogPost> blogPostRepository, IUnitOfWorkManager unitOfWorkManager) public PostsController(IQueryableRepository<BlogPost> blogPostRepository)
{ {
_blogPostRepository = blogPostRepository; _blogPostRepository = blogPostRepository;
_unitOfWorkManager = unitOfWorkManager;
} }
public async Task<ActionResult> Index() public async Task<ActionResult> Index()
{ {
using (var unitOfWork = _unitOfWorkManager.Begin()) var posts = await _blogPostRepository.GetListAsync(HttpContext.RequestAborted);
{ return View(posts);
var posts = await _blogPostRepository.GetListAsync(HttpContext.RequestAborted);
await unitOfWork.CompleteAsync(HttpContext.RequestAborted);
return View(posts);
}
} }
} }
} }

BIN
src/AbpDesk/Web_PlugIns/AbpDesk.MongoBlog.dll

Binary file not shown.

51
src/Volo.Abp.Identity.Application/Volo/Abp/Identity/UserAppService.cs

@ -2,7 +2,6 @@
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp.Application.Services.Dtos; using Volo.Abp.Application.Services.Dtos;
using Volo.Abp.Uow;
namespace Volo.Abp.Identity namespace Volo.Abp.Identity
{ {
@ -11,52 +10,36 @@ namespace Volo.Abp.Identity
public class UserAppService : IUserAppService public class UserAppService : IUserAppService
{ {
private readonly IIdentityUserRepository _userRepository; private readonly IIdentityUserRepository _userRepository;
private readonly IUnitOfWorkManager _unitOfWorkManager;
public UserAppService( public UserAppService(IIdentityUserRepository userRepository)
IIdentityUserRepository userRepository,
IUnitOfWorkManager unitOfWorkManager)
{ {
_userRepository = userRepository; _userRepository = userRepository;
_unitOfWorkManager = unitOfWorkManager;
} }
public async Task<ListResultDto<IdentityUserDto>> GetAll() public async Task<ListResultDto<IdentityUserDto>> GetAll()
{ {
//Use conventional unit of work for application services when it's available! var users = (await _userRepository.GetListAsync())
using (var unitOfWork = _unitOfWorkManager.Begin()) .Select(u => new IdentityUserDto
{ {
var users = (await _userRepository.GetListAsync()) Id = u.Id,
.Select(u => new IdentityUserDto Email = u.Email,
{ UserName = u.UserName
Id = u.Id, })
Email = u.Email, .ToList();
UserName = u.UserName
})
.ToList();
await unitOfWork.CompleteAsync();
return new ListResultDto<IdentityUserDto>(users); return new ListResultDto<IdentityUserDto>(users);
}
} }
public async Task<IdentityUserDto> Get(Guid id) public async Task<IdentityUserDto> Get(Guid id)
{ {
//Use conventional unit of work for application services when it's available! var user = await _userRepository.GetAsync(id);
using (var unitOfWork = _unitOfWorkManager.Begin())
{
var user = await _userRepository.GetAsync(id);
await unitOfWork.CompleteAsync(); return new IdentityUserDto
{
return new IdentityUserDto Id = user.Id,
{ UserName = user.UserName,
Id = user.Id, Email = user.Email
UserName = user.UserName, };
Email = user.Email
};
}
} }
} }
} }

3
src/Volo.Abp.Identity.HttpApi.Host/AbpIdentityHttpApiHostModule.cs

@ -5,6 +5,7 @@ using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Volo.Abp.AspNetCore.Modularity; using Volo.Abp.AspNetCore.Modularity;
using Volo.Abp.Autofac;
using Volo.Abp.Data; using Volo.Abp.Data;
using Volo.Abp.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.Identity.EntityFrameworkCore; using Volo.Abp.Identity.EntityFrameworkCore;
@ -12,7 +13,7 @@ using Volo.Abp.Modularity;
namespace Volo.Abp.Identity.HttpApi.Host namespace Volo.Abp.Identity.HttpApi.Host
{ {
[DependsOn(typeof(AbpIdentityHttpApiModule), typeof(AbpIdentityEntityFrameworkCoreModule))] [DependsOn(typeof(AbpIdentityHttpApiModule), typeof(AbpIdentityEntityFrameworkCoreModule), typeof(AbpAutofacModule))]
public class AbpIdentityHttpApiHostModule : AbpModule public class AbpIdentityHttpApiHostModule : AbpModule
{ {
public override void ConfigureServices(IServiceCollection services) public override void ConfigureServices(IServiceCollection services)

15
src/Volo.Abp.Identity.HttpApi.Host/Startup.cs

@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Serilog;
namespace Volo.Abp.Identity.HttpApi.Host namespace Volo.Abp.Identity.HttpApi.Host
{ {
@ -10,7 +11,10 @@ namespace Volo.Abp.Identity.HttpApi.Host
{ {
public IServiceProvider ConfigureServices(IServiceCollection services) public IServiceProvider ConfigureServices(IServiceCollection services)
{ {
services.AddApplication<AbpIdentityHttpApiHostModule>(); services.AddApplication<AbpIdentityHttpApiHostModule>(options =>
{
options.UseAutofac();
});
//TODO: This is needed because ASP.NET Core does not use IServiceProviderFactory! //TODO: This is needed because ASP.NET Core does not use IServiceProviderFactory!
return services.BuildServiceProviderFromFactory(); return services.BuildServiceProviderFromFactory();
@ -18,6 +22,15 @@ namespace Volo.Abp.Identity.HttpApi.Host
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{ {
loggerFactory
.AddConsole()
.AddDebug()
.AddSerilog(new LoggerConfiguration()
.Enrich.FromLogContext()
.WriteTo.RollingFile("Logs/logs.txt")
.CreateLogger()
);
app.InitializeApplication(); app.InitializeApplication();
} }
} }

3
src/Volo.Abp.Identity.HttpApi.Host/Volo.Abp.Identity.HttpApi.Host.csproj

@ -17,6 +17,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Volo.Abp.Autofac\Volo.Abp.Autofac.csproj" />
<ProjectReference Include="..\Volo.Abp.Identity.EntityFrameworkCore\Volo.Abp.Identity.EntityFrameworkCore.csproj" /> <ProjectReference Include="..\Volo.Abp.Identity.EntityFrameworkCore\Volo.Abp.Identity.EntityFrameworkCore.csproj" />
<ProjectReference Include="..\Volo.Abp.Identity.HttpApi\Volo.Abp.Identity.HttpApi.csproj" /> <ProjectReference Include="..\Volo.Abp.Identity.HttpApi\Volo.Abp.Identity.HttpApi.csproj" />
</ItemGroup> </ItemGroup>
@ -32,6 +33,8 @@
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="1.1.1"> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="1.1.1">
<PrivateAssets>All</PrivateAssets> <PrivateAssets>All</PrivateAssets>
</PackageReference> </PackageReference>
<PackageReference Include="Serilog.Extensions.Logging" Version="1.4.0" />
<PackageReference Include="Serilog.Sinks.RollingFile" Version="3.3.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

Loading…
Cancel
Save