Browse Source

Moved to CreateModal page.

pull/179/head
Halil İbrahim Kalkan 9 years ago
parent
commit
02dec7af51
  1. 113
      src/Volo.Abp.Identity.Web/Areas/Identity/Controllers/UsersController.cs
  2. 69
      src/Volo.Abp.Identity.Web/Pages/Identity/Users/CreateModal.cshtml
  3. 31
      src/Volo.Abp.Identity.Web/Pages/Identity/Users/CreateModal.cshtml.cs
  4. 8
      src/Volo.Abp.Identity.Web/Volo.Abp.Identity.Web.csproj
  5. 2
      src/Volo.Abp.Identity.Web/wwwroot/modules/identity/views/users/index.js

113
src/Volo.Abp.Identity.Web/Areas/Identity/Controllers/UsersController.cs

@ -9,67 +9,54 @@ using Volo.Abp.Identity.Web.Areas.Identity.Models;
namespace Volo.Abp.Identity.Web.Areas.Identity.Controllers
{
[Area("Identity")]
[Authorize]
public class UsersController : AbpController
{
private readonly IIdentityUserAppService _identityUserAppService;
private readonly IIdentityRoleAppService _identityRoleAppService;
public UsersController(IIdentityUserAppService identityUserAppService, IIdentityRoleAppService identityRoleAppService)
{
_identityUserAppService = identityUserAppService;
_identityRoleAppService = identityRoleAppService;
}
//public async Task<ActionResult> Index()
//{
// return View();
//}
public async Task<PartialViewResult> Create()
{
var model = await CreateViewModel(null);
return PartialView("_Create", model);
}
public async Task<PartialViewResult> Update(Guid id)
{
var user = await _identityUserAppService.GetAsync(id);
await _identityRoleAppService.GetAllListAsync();
var model = await CreateViewModel(user);
return PartialView("_Update", model);
}
private async Task<CreateOrUpdateUserViewModel> CreateViewModel(IdentityUserDto user)
{
var allRoles = await _identityRoleAppService.GetAllListAsync();
var model = new CreateOrUpdateUserViewModel
{
User = user ?? new IdentityUserDto(),
Roles = ObjectMapper.Map<List<IdentityRoleDto>, IdentityUserRoleDto[]>(allRoles)
};
var userRoles = new List<IdentityRoleDto>();
if (user != null)
{
userRoles = (await _identityUserAppService.GetRolesAsync(user.Id)).Items.ToList();
}
foreach (var role in model.Roles)
{
if (userRoles.Select(x=>x.Name).Contains(role.Name))
{
role.IsAssigned = true;
}
}
return model;
}
}
//[Area("Identity")]
//[Authorize]
//public class UsersController : AbpController
//{
// private readonly IIdentityUserAppService _identityUserAppService;
// private readonly IIdentityRoleAppService _identityRoleAppService;
// public UsersController(IIdentityUserAppService identityUserAppService, IIdentityRoleAppService identityRoleAppService)
// {
// _identityUserAppService = identityUserAppService;
// _identityRoleAppService = identityRoleAppService;
// }
// public async Task<PartialViewResult> Update(Guid id)
// {
// var user = await _identityUserAppService.GetAsync(id);
// await _identityRoleAppService.GetAllListAsync();
// var model = await CreateViewModel(user);
// return PartialView("_Update", model);
// }
// private async Task<CreateOrUpdateUserViewModel> CreateViewModel(IdentityUserDto user)
// {
// var allRoles = await _identityRoleAppService.GetAllListAsync();
// var model = new CreateOrUpdateUserViewModel
// {
// User = user ?? new IdentityUserDto(),
// Roles = ObjectMapper.Map<List<IdentityRoleDto>, IdentityUserRoleDto[]>(allRoles)
// };
// var userRoles = new List<IdentityRoleDto>();
// if (user != null)
// {
// userRoles = (await _identityUserAppService.GetRolesAsync(user.Id)).Items.ToList();
// }
// foreach (var role in model.Roles)
// {
// if (userRoles.Select(x=>x.Name).Contains(role.Name))
// {
// role.IsAssigned = true;
// }
// }
// return model;
// }
//}
}

69
src/Volo.Abp.Identity.Web/Pages/Identity/Users/CreateModal.cshtml

@ -0,0 +1,69 @@
@using Microsoft.Extensions.Localization
@using Volo.Abp.Identity.Web.Areas.Identity.Localization.Resource
@using Volo.Abp.Identity.Web.Pages.Identity.Users
@model CreateModalModel
@inject IStringLocalizer<IdentityResource> Localizer
<div class="modal-header">
<h5 class="modal-title" id="userModalLabel">@Localizer["CreateUser"]</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<form id="createUserForm">
<!-- Nav tabs -->
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item">
<a class="nav-link active" data-toggle="tab" href="#userInformations" role="tab">@Localizer["CreateUser"]</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#roles" role="tab">@Localizer["Roles"]</a>
</li>
</ul>
<!-- Tab panes -->
<div class="tab-content pt-3">
<div class="tab-pane active" id="userInformations" role="tabpanel">
<div class="form-group">
<label for="userName">@Localizer["UserName"]</label>
<input type="text" class="form-control" id="userName" name="UserName" placeholder="User name">
</div>
<div class="form-group">
<label for="password">@Localizer["Password"]</label>
<input type="password" class="form-control" id="password" name="Password" placeholder="Password">
</div>
<div class="form-group">
<label for="email">@Localizer["EmailAddress"]</label>
<input type="email" class="form-control" id="email" name="Email" placeholder="Enter email">
</div>
<div class="form-group">
<label for="phoneNumber">@Localizer["PhoneNumber"]</label>
<input type="tel" class="form-control" id="phoneNumber" name="PhoneNumber" placeholder="Phone number">
</div>
</div>
<div class="tab-pane" id="roles" role="tabpanel">
<div class="user-role-checkbox-list">
@foreach (var role in Model.Roles)
{
<div class="form-check">
<label class="form-check-label">
<input id="CreateUser_@(role.Name)" class="form-check-input" type="checkbox" name="@(role.Name)" value="true" @Html.Raw(role.IsAssigned ? "checked=\"checked\"" : "")>
@role.Name
</label>
</div>
}
</div>
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">@Localizer["Close"]</button>
<button type="button" class="btn btn-primary" id="btnCreateUserSave">@Localizer["Save"]</button>
</div>

31
src/Volo.Abp.Identity.Web/Pages/Identity/Users/CreateModal.cshtml.cs

@ -0,0 +1,31 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.AspNetCore.Mvc.RazorPages;
using Volo.Abp.Threading;
namespace Volo.Abp.Identity.Web.Pages.Identity.Users
{
public class CreateModalModel : AbpPageModel
{
public IdentityUserDto User { get; set; }
public IdentityUserRoleDto[] Roles { get; set; }
private readonly IIdentityUserAppService _identityUserAppService;
private readonly IIdentityRoleAppService _identityRoleAppService;
public CreateModalModel(IIdentityUserAppService identityUserAppService, IIdentityRoleAppService identityRoleAppService)
{
_identityUserAppService = identityUserAppService;
_identityRoleAppService = identityRoleAppService;
}
public void OnGet()
{
User = new IdentityUserDto();
Roles = ObjectMapper.Map<List<IdentityRoleDto>, IdentityUserRoleDto[]>(
AsyncHelper.RunSync(() => _identityRoleAppService.GetAllListAsync())
);
}
}
}

8
src/Volo.Abp.Identity.Web/Volo.Abp.Identity.Web.csproj

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk.Web">
<Import Project="..\..\common.props" />
@ -7,6 +7,7 @@
<AssemblyName>Volo.Abp.Identity.Web</AssemblyName>
<PackageId>Volo.Abp.Identity.Web</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
<OutputType>Library</OutputType>
</PropertyGroup>
<ItemGroup>
@ -15,6 +16,7 @@
<EmbeddedResource Include="Areas\**\*.json" />
<EmbeddedResource Include="Areas\**\*.css" />
<EmbeddedResource Include="wwwroot\**\*.*" />
<EmbeddedResource Include="Pages\**\*.cshtml" />
</ItemGroup>
<ItemGroup>
@ -22,10 +24,6 @@
<None Remove="wwwroot\modules\identity\helpers\jquery.js" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Pages\Identity\Users\Index.cshtml" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Volo.Abp.AspNetCore.Mvc.UI.Bootstrap\Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.csproj" />
<ProjectReference Include="..\Volo.Abp.Identity.Application.Contracts\Volo.Abp.Identity.Application.Contracts.csproj" />

2
src/Volo.Abp.Identity.Web/wwwroot/modules/identity/views/users/index.js

@ -71,7 +71,7 @@
_$wrapper.find('.create-user-button').click(function () {
$('#createUpdateUserModal').modal('show')
.find('.modal-content')
.load(abp.appPath + 'Identity/Users/Create');
.load(abp.appPath + 'Identity/Users/CreateModal');
});
//TODO: btnCreateUserSave and btnUpdateUserSave clicks should be handled in the modals. We may consider to create a model manager as before

Loading…
Cancel
Save