enrolment
This commit is contained in:
@ -21,7 +21,7 @@ namespace Yavsc.Controllers
|
||||
private readonly UserManager<ApplicationUser> _userManager;
|
||||
private readonly RoleManager<IdentityRole> _roleManager;
|
||||
|
||||
private readonly ApplicationDbContext context;
|
||||
private readonly ApplicationDbContext _dbContext;
|
||||
|
||||
public AdministrationController(UserManager<ApplicationUser> userManager,
|
||||
RoleManager<IdentityRole> roleManager,
|
||||
@ -29,7 +29,7 @@ namespace Yavsc.Controllers
|
||||
{
|
||||
_userManager = userManager;
|
||||
_roleManager = roleManager;
|
||||
this.context = context;
|
||||
this._dbContext = context;
|
||||
}
|
||||
|
||||
private async Task<bool> EnsureRoleList () {
|
||||
@ -101,7 +101,7 @@ namespace Yavsc.Controllers
|
||||
{
|
||||
var adminCount = await _userManager.GetUsersInRoleAsync(
|
||||
Constants.AdminGroupName);
|
||||
var userCount = await context.Users.CountAsync();
|
||||
var userCount = await _dbContext.Users.CountAsync();
|
||||
var youAreAdmin = await _userManager.IsInRoleAsync(
|
||||
await _userManager.FindByIdAsync(User.GetUserId()),
|
||||
Constants.AdminGroupName);
|
||||
@ -139,7 +139,7 @@ namespace Yavsc.Controllers
|
||||
var result = new RoleUserCollection {
|
||||
Id = role.Id,
|
||||
Name = role.Name,
|
||||
Users = context.Users.Where(u=>role.Users.Any(ru => u.Id == ru.UserId))
|
||||
Users = _dbContext.Users.Where(u=>role.Users.Any(ru => u.Id == ru.UserId))
|
||||
.Select( u => new UserInfo { UserName = u.UserName, Avatar = u.Avatar, UserId = u.Id } )
|
||||
.ToArray()
|
||||
};
|
||||
@ -147,29 +147,57 @@ namespace Yavsc.Controllers
|
||||
}
|
||||
|
||||
[Authorize("AdministratorOnly")]
|
||||
public IActionResult GiveAdmin()
|
||||
public IActionResult Enroll(string roleName)
|
||||
{
|
||||
ViewBag.NewAdminId = new SelectList(context.Users, "Id", "UserName");
|
||||
return View();
|
||||
ViewBag.UserId = new SelectList(_dbContext.Users, "Id", "UserName");
|
||||
return View(new EnrolerViewModel{ RoleName = roleName });
|
||||
}
|
||||
|
||||
[Authorize("AdministratorOnly")]
|
||||
[HttpPost()]
|
||||
public async Task<IActionResult> GiveAdmin(NewAdminViewModel model)
|
||||
public async Task<IActionResult> Enroll(EnrolerViewModel model)
|
||||
{
|
||||
if (ModelState.IsValid)
|
||||
{
|
||||
var newAdmin = await context.Users.FirstOrDefaultAsync(u=>u.Id==model.NewAdminId);
|
||||
var newAdmin = await _dbContext.Users.FirstOrDefaultAsync(u=>u.Id==model.EnroledUserId);
|
||||
if (newAdmin==null) return HttpNotFound();
|
||||
var addToRoleResult = await _userManager.AddToRoleAsync(newAdmin, Constants.AdminGroupName);
|
||||
if (!addToRoleResult.Succeeded)
|
||||
var addToRoleResult = await _userManager.AddToRoleAsync(newAdmin, model.RoleName);
|
||||
if (addToRoleResult.Succeeded)
|
||||
{
|
||||
return View("Index");
|
||||
return RedirectToAction("Index");
|
||||
}
|
||||
AddErrors(addToRoleResult);
|
||||
}
|
||||
ViewBag.NewAdminId = new SelectList(context.Users, "Id", "UserName");
|
||||
return View();
|
||||
ViewBag.UserId = new SelectList(_dbContext.Users, "Id", "UserName");
|
||||
return View(model);
|
||||
}
|
||||
|
||||
[Authorize("AdministratorOnly")]
|
||||
public async Task<IActionResult> Fire(string roleName, string userId)
|
||||
{
|
||||
var user = await _dbContext.Users.FirstOrDefaultAsync(u=>u.Id==userId);
|
||||
if (user == null) return HttpNotFound();
|
||||
|
||||
return View(new FireViewModel{ RoleName = roleName, EnroledUserId = userId, EnroledUserName = user.UserName });
|
||||
}
|
||||
|
||||
[Authorize("AdministratorOnly")]
|
||||
[HttpPost()]
|
||||
public async Task<IActionResult> Fire(FireViewModel model)
|
||||
{
|
||||
if (ModelState.IsValid)
|
||||
{
|
||||
var oldEnroled = await _dbContext.Users.FirstOrDefaultAsync(u=>u.Id==model.EnroledUserId);
|
||||
if (oldEnroled==null) return HttpNotFound();
|
||||
var removeFromRole = await _userManager.RemoveFromRoleAsync(oldEnroled, model.RoleName);
|
||||
if (removeFromRole.Succeeded)
|
||||
{
|
||||
return RedirectToAction("Index");
|
||||
}
|
||||
AddErrors(removeFromRole);
|
||||
}
|
||||
ViewBag.UserId = new SelectList(_dbContext.Users, "Id", "UserName");
|
||||
return View(model);
|
||||
}
|
||||
private void AddErrors(IdentityResult result)
|
||||
{
|
||||
|
@ -8,7 +8,7 @@ MAKEFILE_DIR=$(SOURCE_DIR)/scripts/build/make
|
||||
BASERESX= Resources/Yavsc.ChatHub.resx\
|
||||
Resources/Yavsc.ViewComponents.CommentViewComponent.resx\
|
||||
Resources/Yavsc.ViewModels.FrontOffice.PerformerProfileViewModel.resx\
|
||||
Resources/Yavsc.ViewModels.NewAdminViewModel.resx\
|
||||
Resources/Yavsc.ViewModels.EnrolerViewModel.resx\
|
||||
Resources/Yavsc.YavscLocalisation.resx
|
||||
BASERESXGEN=$(BASERESX:.resx=.Designer.cs)
|
||||
|
||||
|
@ -16,7 +16,7 @@ namespace Yavsc.ViewModels {
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
public partial class NewAdminViewModel {
|
||||
public partial class EnrolerViewModel {
|
||||
|
||||
private static System.Resources.ResourceManager resourceMan;
|
||||
|
||||
@ -26,7 +26,7 @@ namespace Yavsc.ViewModels {
|
||||
public static System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.Equals(null, resourceMan)) {
|
||||
System.Resources.ResourceManager temp = new System.Resources.ResourceManager(("Yavsc.Resources." + "Yavsc.ViewModels.NewAdminViewModel"), typeof(NewAdminViewModel).GetTypeInfo().Assembly);
|
||||
System.Resources.ResourceManager temp = new System.Resources.ResourceManager(("Yavsc.Resources." + "Yavsc.ViewModels.EnrolerViewModel"), typeof(EnrolerViewModel).GetTypeInfo().Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
@ -43,9 +43,15 @@ namespace Yavsc.ViewModels {
|
||||
}
|
||||
}
|
||||
|
||||
public static string NewAdminLabel {
|
||||
public static string EnroledLabel {
|
||||
get {
|
||||
return ResourceManager.GetString("NewAdminLabel", resourceCulture);
|
||||
return ResourceManager.GetString("EnroledLabel", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
public static string RoleNameLabel {
|
||||
get {
|
||||
return ResourceManager.GetString("RoleNameLabel", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
@ -58,5 +58,7 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="NewAdminLabel"><value>Nouvel administrateur</value></data>
|
||||
<data name="EnroledLabel"><value>Enrôlé</value></data>
|
||||
<data name="RoleNameLabel"><value>Rôle</value></data>
|
||||
|
||||
</root>
|
@ -2071,9 +2071,15 @@ namespace Yavsc {
|
||||
}
|
||||
}
|
||||
|
||||
public static string GiveAdmin {
|
||||
public static string Enroll {
|
||||
get {
|
||||
return ResourceManager.GetString("GiveAdmin", resourceCulture);
|
||||
return ResourceManager.GetString("Enroll", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
public static string Fire {
|
||||
get {
|
||||
return ResourceManager.GetString("Fire", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -497,5 +497,6 @@ Facture réglée: {5}</value></data>
|
||||
|
||||
<data name="AllowMonthlyEmail"><value>Recevoir la lettre mensuelle d'information</value></data>
|
||||
<data name="Join"><value>joindre</value></data>
|
||||
<data name="GiveAdmin"><value>Compromettre l'administration</value></data>
|
||||
<data name="Enroll"><value>Enrôler</value></data>
|
||||
<data name="Fire"><value>Licencier</value></data>
|
||||
</root>
|
||||
|
16
src/Yavsc/ViewModels/Administration/EnrolerViewModel.cs
Normal file
16
src/Yavsc/ViewModels/Administration/EnrolerViewModel.cs
Normal file
@ -0,0 +1,16 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Yavsc.ViewModels
|
||||
{
|
||||
public partial class EnrolerViewModel {
|
||||
|
||||
[Display(Name="EnroledLabel", ResourceType=typeof(EnrolerViewModel))]
|
||||
[Required]
|
||||
public string EnroledUserId { get; set; }
|
||||
|
||||
|
||||
[Display(Name="RoleNameLabel", ResourceType=typeof(EnrolerViewModel))]
|
||||
[Required]
|
||||
public string RoleName { get; set; }
|
||||
}
|
||||
}
|
18
src/Yavsc/ViewModels/Administration/FireViewModel.cs
Normal file
18
src/Yavsc/ViewModels/Administration/FireViewModel.cs
Normal file
@ -0,0 +1,18 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Yavsc.ViewModels
|
||||
{
|
||||
public partial class FireViewModel {
|
||||
|
||||
[Display(Name="EnroledLabel", ResourceType=typeof(EnrolerViewModel))]
|
||||
public string EnroledUserName { get; set; }
|
||||
|
||||
[Required]
|
||||
public string EnroledUserId { get; set; }
|
||||
|
||||
|
||||
[Display(Name="RoleNameLabel", ResourceType=typeof(EnrolerViewModel))]
|
||||
[Required]
|
||||
public string RoleName { get; set; }
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Yavsc.ViewModels
|
||||
{
|
||||
public partial class NewAdminViewModel {
|
||||
|
||||
[Display(Name="NewAdminLabel", ResourceType=typeof(NewAdminViewModel))]
|
||||
[Required]
|
||||
public string NewAdminId { get; set; }
|
||||
}
|
||||
}
|
@ -67,7 +67,7 @@
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-md-offset-2 col-md-10">
|
||||
<input type="submit" value="Create" class="btn btn-default" />
|
||||
<input type="submit" value="@SR["Create"]" class="btn btn-default" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
29
src/Yavsc/Views/Administration/Enroll.cshtml
Normal file
29
src/Yavsc/Views/Administration/Enroll.cshtml
Normal file
@ -0,0 +1,29 @@
|
||||
@model Yavsc.ViewModels.EnrolerViewModel
|
||||
|
||||
@{
|
||||
ViewBag.Title = SR["Enroll"]+" : "+Model.RoleName;
|
||||
}
|
||||
|
||||
<form asp-action="Enroll">
|
||||
<div class="form-horizontal">
|
||||
<h4>@ViewBag.Title</h4>
|
||||
<hr />
|
||||
<div asp-validation-summary="ValidationSummary.ModelOnly" class="text-danger"></div>
|
||||
|
||||
<div class="form-group">
|
||||
<label asp-for="EnroledUserId" class="col-md-2 control-label"></label>
|
||||
<div class="col-md-10">
|
||||
<select asp-for="EnroledUserId" asp-items=@ViewBag.UserId class="form-control" >
|
||||
</select>
|
||||
<span asp-validation-for="EnroledUserId" class="text-danger" ></span>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" asp-for="RoleName" />
|
||||
<div class="form-group">
|
||||
<div class="col-md-offset-2 col-md-10">
|
||||
<input type="submit" value="@SR["Submit"]" class="btn btn-default" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</form>
|
33
src/Yavsc/Views/Administration/Fire.cshtml
Normal file
33
src/Yavsc/Views/Administration/Fire.cshtml
Normal file
@ -0,0 +1,33 @@
|
||||
@model Yavsc.ViewModels.FireViewModel
|
||||
|
||||
@{
|
||||
ViewBag.Title = SR["Fire"]+" : "+Model.RoleName;
|
||||
}
|
||||
|
||||
<form asp-action="Fire">
|
||||
<div class="form-horizontal">
|
||||
<h4>@ViewBag.Title</h4>
|
||||
<hr />
|
||||
<span asp-validation-for="RoleName" class="text-danger" ></span>
|
||||
<div asp-validation-summary="ValidationSummary.ModelOnly" class="text-danger"></div>
|
||||
|
||||
<div class="form-group">
|
||||
<label asp-for="EnroledUserName" class="col-md-2 control-label"></label>
|
||||
<div class="col-md-10">
|
||||
<p class="col-md-7">
|
||||
@Html.DisplayFor(model => model.EnroledUserName)
|
||||
</p>
|
||||
|
||||
<span asp-validation-for="EnroledUserId" class="text-danger" ></span>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" asp-for="RoleName" />
|
||||
<input type="hidden" asp-for="EnroledUserId" />
|
||||
<div class="form-group">
|
||||
<div class="col-md-offset-2 col-md-10">
|
||||
<input type="submit" value="@SR["Submit"]" class="btn btn-default" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</form>
|
@ -1,23 +0,0 @@
|
||||
@model Yavsc.ViewModels.NewAdminViewModel
|
||||
|
||||
@{
|
||||
ViewBag.Title = SR["GiveAdmin"];
|
||||
}
|
||||
|
||||
<form asp-action="GiveAdmin">
|
||||
<div class="form-horizontal">
|
||||
<h4>@ViewBag.Title</h4>
|
||||
<hr />
|
||||
<div asp-validation-summary="ValidationSummary.ModelOnly" class="text-danger"></div>
|
||||
|
||||
<div class="form-group">
|
||||
<label asp-for="NewAdminId" class="col-md-2 control-label"></label>
|
||||
<div class="col-md-10">
|
||||
<select asp-for="NewAdminId" asp-items=@ViewBag.NewAdminId class="form-control" >
|
||||
</select>
|
||||
<span asp-validation-for="NewAdminId" class="text-danger" ></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</form>
|
@ -48,12 +48,13 @@ Nombre </dt><dd> @Model.AdminCount</dd>
|
||||
Gestion des couleurs
|
||||
</a>
|
||||
|
||||
<h3>GCM Devices</h3>
|
||||
<a asp-controller="GCMDevices" class="btn btn-primary">
|
||||
Google Cloud Messaging
|
||||
<h3>Devices</h3>
|
||||
<a asp-controller="Devices" class="btn btn-primary">
|
||||
Cloud Messaging
|
||||
</a>
|
||||
|
||||
<h3>Applications tièrces</h3>
|
||||
<a asp-controller="Client" class="btn btn-primary">
|
||||
@SR["OAuth key management"]
|
||||
</a>
|
||||
|
||||
|
@ -4,13 +4,17 @@
|
||||
}
|
||||
|
||||
<h2>@ViewBag.Title</h2>
|
||||
<p>
|
||||
<a asp-action="Enroll" asp-route-RoleName="@Model.Name" class="btn btn-default" >@SR["Enroll"]</a>
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
@foreach (var user in Model.Users) {
|
||||
<li> <img src="~/avatars/@(user.UserName).xs.png" alt="avatar"/>
|
||||
@user.UserName
|
||||
|
||||
<a asp-action="Fire" asp-route-RoleName="@Model.Name" asp-route-UserId="@user.UserId" class="btn btn-success" >
|
||||
<img src="~/images/ptcroix.png" /> @SR["Fire"]</a>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
|
||||
<a asp-action="GiveAdmin">@SR["GiveAdmin"]</a>
|
||||
</ul>
|
Reference in New Issue
Block a user