From a6fcf3d3d74da084922f85c369b841e19fa7c7a0 Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Sat, 22 Jun 2019 22:39:11 +0100 Subject: [PATCH] enrolment --- .../AdministrationController.cs | 56 ++++++++++++++----- .../HyperLinkController.cs | 0 .../{ => Communicating}/LiveFlowController.cs | 0 src/Yavsc/Makefile | 2 +- ...c.ViewModels.EnrolerViewModel.Designer.cs} | 14 +++-- ...=> Yavsc.ViewModels.EnrolerViewModel.resx} | 4 +- .../Yavsc.YavscLocalisation.Designer.cs | 10 +++- .../Resources/Yavsc.YavscLocalisation.resx | 3 +- .../Administration/EnrolerViewModel.cs | 16 ++++++ .../Administration/FireViewModel.cs | 18 ++++++ .../Administration/NewAdminViewModel.cs | 11 ---- src/Yavsc/Views/Activity/Create.cshtml | 2 +- src/Yavsc/Views/Administration/Enroll.cshtml | 29 ++++++++++ src/Yavsc/Views/Administration/Fire.cshtml | 33 +++++++++++ .../Views/Administration/GiveAdmin.cshtml | 23 -------- src/Yavsc/Views/Administration/Index.cshtml | 7 ++- src/Yavsc/Views/Administration/Role.cshtml | 10 +++- 17 files changed, 174 insertions(+), 64 deletions(-) rename src/Yavsc/Controllers/{ => Communicating}/HyperLinkController.cs (100%) rename src/Yavsc/Controllers/{ => Communicating}/LiveFlowController.cs (100%) rename src/Yavsc/Resources/{Yavsc.ViewModels.NewAdminViewModel.Designer.cs => Yavsc.ViewModels.EnrolerViewModel.Designer.cs} (81%) rename src/Yavsc/Resources/{Yavsc.ViewModels.NewAdminViewModel.resx => Yavsc.ViewModels.EnrolerViewModel.resx} (95%) create mode 100644 src/Yavsc/ViewModels/Administration/EnrolerViewModel.cs create mode 100644 src/Yavsc/ViewModels/Administration/FireViewModel.cs delete mode 100644 src/Yavsc/ViewModels/Administration/NewAdminViewModel.cs create mode 100644 src/Yavsc/Views/Administration/Enroll.cshtml create mode 100644 src/Yavsc/Views/Administration/Fire.cshtml delete mode 100644 src/Yavsc/Views/Administration/GiveAdmin.cshtml diff --git a/src/Yavsc/Controllers/Administration/AdministrationController.cs b/src/Yavsc/Controllers/Administration/AdministrationController.cs index 00aa3093..b6110d33 100644 --- a/src/Yavsc/Controllers/Administration/AdministrationController.cs +++ b/src/Yavsc/Controllers/Administration/AdministrationController.cs @@ -21,7 +21,7 @@ namespace Yavsc.Controllers private readonly UserManager _userManager; private readonly RoleManager _roleManager; - private readonly ApplicationDbContext context; + private readonly ApplicationDbContext _dbContext; public AdministrationController(UserManager userManager, RoleManager roleManager, @@ -29,7 +29,7 @@ namespace Yavsc.Controllers { _userManager = userManager; _roleManager = roleManager; - this.context = context; + this._dbContext = context; } private async Task 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 GiveAdmin(NewAdminViewModel model) + public async Task 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 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 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) { diff --git a/src/Yavsc/Controllers/HyperLinkController.cs b/src/Yavsc/Controllers/Communicating/HyperLinkController.cs similarity index 100% rename from src/Yavsc/Controllers/HyperLinkController.cs rename to src/Yavsc/Controllers/Communicating/HyperLinkController.cs diff --git a/src/Yavsc/Controllers/LiveFlowController.cs b/src/Yavsc/Controllers/Communicating/LiveFlowController.cs similarity index 100% rename from src/Yavsc/Controllers/LiveFlowController.cs rename to src/Yavsc/Controllers/Communicating/LiveFlowController.cs diff --git a/src/Yavsc/Makefile b/src/Yavsc/Makefile index 56dc2c7d..b237f6b3 100644 --- a/src/Yavsc/Makefile +++ b/src/Yavsc/Makefile @@ -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) diff --git a/src/Yavsc/Resources/Yavsc.ViewModels.NewAdminViewModel.Designer.cs b/src/Yavsc/Resources/Yavsc.ViewModels.EnrolerViewModel.Designer.cs similarity index 81% rename from src/Yavsc/Resources/Yavsc.ViewModels.NewAdminViewModel.Designer.cs rename to src/Yavsc/Resources/Yavsc.ViewModels.EnrolerViewModel.Designer.cs index 5b61ff0a..a765b326 100644 --- a/src/Yavsc/Resources/Yavsc.ViewModels.NewAdminViewModel.Designer.cs +++ b/src/Yavsc/Resources/Yavsc.ViewModels.EnrolerViewModel.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); } } } diff --git a/src/Yavsc/Resources/Yavsc.ViewModels.NewAdminViewModel.resx b/src/Yavsc/Resources/Yavsc.ViewModels.EnrolerViewModel.resx similarity index 95% rename from src/Yavsc/Resources/Yavsc.ViewModels.NewAdminViewModel.resx rename to src/Yavsc/Resources/Yavsc.ViewModels.EnrolerViewModel.resx index 07222d9f..b4ce2d7d 100644 --- a/src/Yavsc/Resources/Yavsc.ViewModels.NewAdminViewModel.resx +++ b/src/Yavsc/Resources/Yavsc.ViewModels.EnrolerViewModel.resx @@ -58,5 +58,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Nouvel administrateur + Enrôlé + Rôle + \ No newline at end of file diff --git a/src/Yavsc/Resources/Yavsc.YavscLocalisation.Designer.cs b/src/Yavsc/Resources/Yavsc.YavscLocalisation.Designer.cs index 280f5527..636ba9ac 100644 --- a/src/Yavsc/Resources/Yavsc.YavscLocalisation.Designer.cs +++ b/src/Yavsc/Resources/Yavsc.YavscLocalisation.Designer.cs @@ -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); } } } diff --git a/src/Yavsc/Resources/Yavsc.YavscLocalisation.resx b/src/Yavsc/Resources/Yavsc.YavscLocalisation.resx index 6fc7fc85..2f1ba2fa 100644 --- a/src/Yavsc/Resources/Yavsc.YavscLocalisation.resx +++ b/src/Yavsc/Resources/Yavsc.YavscLocalisation.resx @@ -497,5 +497,6 @@ Facture réglée: {5} Recevoir la lettre mensuelle d'information joindre -Compromettre l'administration +Enrôler +Licencier diff --git a/src/Yavsc/ViewModels/Administration/EnrolerViewModel.cs b/src/Yavsc/ViewModels/Administration/EnrolerViewModel.cs new file mode 100644 index 00000000..e7ed84e9 --- /dev/null +++ b/src/Yavsc/ViewModels/Administration/EnrolerViewModel.cs @@ -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; } + } +} \ No newline at end of file diff --git a/src/Yavsc/ViewModels/Administration/FireViewModel.cs b/src/Yavsc/ViewModels/Administration/FireViewModel.cs new file mode 100644 index 00000000..bd6df3e4 --- /dev/null +++ b/src/Yavsc/ViewModels/Administration/FireViewModel.cs @@ -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; } + } +} \ No newline at end of file diff --git a/src/Yavsc/ViewModels/Administration/NewAdminViewModel.cs b/src/Yavsc/ViewModels/Administration/NewAdminViewModel.cs deleted file mode 100644 index e881dd99..00000000 --- a/src/Yavsc/ViewModels/Administration/NewAdminViewModel.cs +++ /dev/null @@ -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; } - } -} \ No newline at end of file diff --git a/src/Yavsc/Views/Activity/Create.cshtml b/src/Yavsc/Views/Activity/Create.cshtml index 4b6c5aed..33f7ef2c 100644 --- a/src/Yavsc/Views/Activity/Create.cshtml +++ b/src/Yavsc/Views/Activity/Create.cshtml @@ -67,7 +67,7 @@
- +
diff --git a/src/Yavsc/Views/Administration/Enroll.cshtml b/src/Yavsc/Views/Administration/Enroll.cshtml new file mode 100644 index 00000000..699a72b1 --- /dev/null +++ b/src/Yavsc/Views/Administration/Enroll.cshtml @@ -0,0 +1,29 @@ +@model Yavsc.ViewModels.EnrolerViewModel + +@{  + ViewBag.Title = SR["Enroll"]+" : "+Model.RoleName; +} + +
+
+

@ViewBag.Title

+
+
+ +
+ +
+ + +
+
+ +
+
+ +
+
+ +
+
diff --git a/src/Yavsc/Views/Administration/Fire.cshtml b/src/Yavsc/Views/Administration/Fire.cshtml new file mode 100644 index 00000000..f1c4d56d --- /dev/null +++ b/src/Yavsc/Views/Administration/Fire.cshtml @@ -0,0 +1,33 @@ +@model Yavsc.ViewModels.FireViewModel + +@{  + ViewBag.Title = SR["Fire"]+" : "+Model.RoleName; +} + +
+
+

@ViewBag.Title

+
+ +
+ +
+ +
+

+ @Html.DisplayFor(model => model.EnroledUserName) +

+ + +
+
+ + +
+
+ +
+
+ +
+
diff --git a/src/Yavsc/Views/Administration/GiveAdmin.cshtml b/src/Yavsc/Views/Administration/GiveAdmin.cshtml deleted file mode 100644 index aec33b7c..00000000 --- a/src/Yavsc/Views/Administration/GiveAdmin.cshtml +++ /dev/null @@ -1,23 +0,0 @@ -@model Yavsc.ViewModels.NewAdminViewModel - -@{  - ViewBag.Title = SR["GiveAdmin"]; -} - -
-
-

@ViewBag.Title

-
-
- -
- -
- - -
-
- -
-
diff --git a/src/Yavsc/Views/Administration/Index.cshtml b/src/Yavsc/Views/Administration/Index.cshtml index a7364884..8ba2feea 100644 --- a/src/Yavsc/Views/Administration/Index.cshtml +++ b/src/Yavsc/Views/Administration/Index.cshtml @@ -48,12 +48,13 @@ Nombre
@Model.AdminCount
Gestion des couleurs -

GCM Devices

- - Google Cloud Messaging +

Devices

+
+ Cloud Messaging

Applications tièrces

@SR["OAuth key management"] + diff --git a/src/Yavsc/Views/Administration/Role.cshtml b/src/Yavsc/Views/Administration/Role.cshtml index ff76e329..9f84efa6 100644 --- a/src/Yavsc/Views/Administration/Role.cshtml +++ b/src/Yavsc/Views/Administration/Role.cshtml @@ -4,13 +4,17 @@ }

@ViewBag.Title

+

+@SR["Enroll"] +

    @foreach (var user in Model.Users) {
  • avatar @user.UserName + + + @SR["Fire"]
  • } -
- -@SR["GiveAdmin"] \ No newline at end of file + \ No newline at end of file