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 namespace Volo.Abp.Identity.Web.Areas.Identity.Controllers
{ {
[Area("Identity")] //[Area("Identity")]
[Authorize] //[Authorize]
public class UsersController : AbpController //public class UsersController : AbpController
{ //{
private readonly IIdentityUserAppService _identityUserAppService; // private readonly IIdentityUserAppService _identityUserAppService;
private readonly IIdentityRoleAppService _identityRoleAppService; // private readonly IIdentityRoleAppService _identityRoleAppService;
public UsersController(IIdentityUserAppService identityUserAppService, IIdentityRoleAppService identityRoleAppService) // public UsersController(IIdentityUserAppService identityUserAppService, IIdentityRoleAppService identityRoleAppService)
{ // {
_identityUserAppService = identityUserAppService; // _identityUserAppService = identityUserAppService;
_identityRoleAppService = identityRoleAppService; // _identityRoleAppService = identityRoleAppService;
} // }
//public async Task<ActionResult> Index() // public async Task<PartialViewResult> Update(Guid id)
//{ // {
// return View(); // var user = await _identityUserAppService.GetAsync(id);
//} // await _identityRoleAppService.GetAllListAsync();
// var model = await CreateViewModel(user);
public async Task<PartialViewResult> Create()
{ // return PartialView("_Update", model);
// }
var model = await CreateViewModel(null);
// private async Task<CreateOrUpdateUserViewModel> CreateViewModel(IdentityUserDto user)
return PartialView("_Create", model); // {
} // var allRoles = await _identityRoleAppService.GetAllListAsync();
public async Task<PartialViewResult> Update(Guid id) // var model = new CreateOrUpdateUserViewModel
{ // {
var user = await _identityUserAppService.GetAsync(id); // User = user ?? new IdentityUserDto(),
await _identityRoleAppService.GetAllListAsync(); // Roles = ObjectMapper.Map<List<IdentityRoleDto>, IdentityUserRoleDto[]>(allRoles)
var model = await CreateViewModel(user); // };
return PartialView("_Update", model); // var userRoles = new List<IdentityRoleDto>();
}
// if (user != null)
private async Task<CreateOrUpdateUserViewModel> CreateViewModel(IdentityUserDto user) // {
{ // userRoles = (await _identityUserAppService.GetRolesAsync(user.Id)).Items.ToList();
var allRoles = await _identityRoleAppService.GetAllListAsync(); // }
var model = new CreateOrUpdateUserViewModel // foreach (var role in model.Roles)
{ // {
User = user ?? new IdentityUserDto(), // if (userRoles.Select(x=>x.Name).Contains(role.Name))
Roles = ObjectMapper.Map<List<IdentityRoleDto>, IdentityUserRoleDto[]>(allRoles) // {
}; // role.IsAssigned = true;
// }
var userRoles = new List<IdentityRoleDto>(); // }
if (user != null) // return model;
{ // }
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" /> <Import Project="..\..\common.props" />
@ -7,6 +7,7 @@
<AssemblyName>Volo.Abp.Identity.Web</AssemblyName> <AssemblyName>Volo.Abp.Identity.Web</AssemblyName>
<PackageId>Volo.Abp.Identity.Web</PackageId> <PackageId>Volo.Abp.Identity.Web</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback> <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
<OutputType>Library</OutputType>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
@ -15,6 +16,7 @@
<EmbeddedResource Include="Areas\**\*.json" /> <EmbeddedResource Include="Areas\**\*.json" />
<EmbeddedResource Include="Areas\**\*.css" /> <EmbeddedResource Include="Areas\**\*.css" />
<EmbeddedResource Include="wwwroot\**\*.*" /> <EmbeddedResource Include="wwwroot\**\*.*" />
<EmbeddedResource Include="Pages\**\*.cshtml" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@ -22,10 +24,6 @@
<None Remove="wwwroot\modules\identity\helpers\jquery.js" /> <None Remove="wwwroot\modules\identity\helpers\jquery.js" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Pages\Identity\Users\Index.cshtml" />
</ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Volo.Abp.AspNetCore.Mvc.UI.Bootstrap\Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.csproj" /> <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" /> <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 () { _$wrapper.find('.create-user-button').click(function () {
$('#createUpdateUserModal').modal('show') $('#createUpdateUserModal').modal('show')
.find('.modal-content') .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 //TODO: btnCreateUserSave and btnUpdateUserSave clicks should be handled in the modals. We may consider to create a model manager as before

Loading…
Cancel
Save