diff --git a/Client/Modules/SZUAbsolventenverein.Module.AdminModules/Edit.razor b/Client/Modules/SZUAbsolventenverein.Module.AdminModules/Edit.razor index 17ddb0a..b275a06 100644 --- a/Client/Modules/SZUAbsolventenverein.Module.AdminModules/Edit.razor +++ b/Client/Modules/SZUAbsolventenverein.Module.AdminModules/Edit.razor @@ -11,16 +11,14 @@
- +
- +
-
- -
+
@@ -49,7 +47,7 @@ private bool validated = false; private int _id; - private string _name; + private string _betreff; private string _richText; private string _createdby; private DateTime _createdon; @@ -66,7 +64,7 @@ AdminModules AdminModules = await AdminModulesService.GetAdminModulesAsync(_id, ModuleState.ModuleId); if (AdminModules != null) { - _name = AdminModules.Name; + _betreff = AdminModules.Name; _richText = AdminModules.Content; _createdby = AdminModules.CreatedBy; _createdon = AdminModules.CreatedOn; @@ -98,7 +96,7 @@ { AdminModules AdminModules = new AdminModules(); AdminModules.ModuleId = ModuleState.ModuleId; - AdminModules.Name = _name; + AdminModules.Name = _betreff; AdminModules.Content = content; AdminModules = await AdminModulesService.AddAdminModulesAsync(AdminModules); await logger.LogInformation("AdminModules Added {AdminModules}", AdminModules); @@ -106,7 +104,7 @@ else { AdminModules AdminModules = await AdminModulesService.GetAdminModulesAsync(_id, ModuleState.ModuleId); - AdminModules.Name = _name; + AdminModules.Name = _betreff; AdminModules.Content = content; await AdminModulesService.UpdateAdminModulesAsync(AdminModules); await logger.LogInformation("AdminModules Updated {AdminModules}", AdminModules); diff --git a/Client/Services/AdminModulesService.cs b/Client/Services/AdminModulesService.cs index 0a8e562..785345d 100644 --- a/Client/Services/AdminModulesService.cs +++ b/Client/Services/AdminModulesService.cs @@ -73,7 +73,7 @@ namespace SZUAbsolventenverein.Module.AdminModules.Services public async Task SendMassNotification(EmailFields EmailFields) { - return await PutJsonAsync(CreateAuthorizationPolicyUrl($"{Apiurl}/{EmailFields.AdminModulesId}/send", EntityNames.Module, EmailFields.ModuleId), EmailFields); + return await PutJsonAsync(CreateAuthorizationPolicyUrl($"{Apiurl}/send/{EmailFields.AdminModulesId}", EntityNames.Module, EmailFields.ModuleId), EmailFields); } } } diff --git a/Server/Controllers/AdminModulesController.cs b/Server/Controllers/AdminModulesController.cs index 2b71f6a..12965d8 100644 --- a/Server/Controllers/AdminModulesController.cs +++ b/Server/Controllers/AdminModulesController.cs @@ -148,5 +148,23 @@ namespace SZUAbsolventenverein.Module.AdminModules.Controllers return null; } } + + // Post api//roles/5 + [HttpPut("send/{id}")] + [Authorize(Policy = PolicyNames.EditModule)] + public async Task PutSendMails(int id, [FromBody] EmailFields EmailFields) + { + if (ModelState.IsValid && EmailFields.AdminModulesId == id && IsAuthorizedEntityId(EntityNames.Module, EmailFields.ModuleId)) + { + return await _AdminModulesService.SendMassNotification(EmailFields); + } + else + { + _logger.Log(LogLevel.Error, this, LogFunction.Security, "Unauthorized AdminModules Put Attempt {AdminModules}", EmailFields); + HttpContext.Response.StatusCode = (int)HttpStatusCode.Forbidden; + EmailFields = null; + return null; + } + } } } diff --git a/Server/Services/AdminModulesService.cs b/Server/Services/AdminModulesService.cs index ec582d6..b64e269 100644 --- a/Server/Services/AdminModulesService.cs +++ b/Server/Services/AdminModulesService.cs @@ -119,7 +119,7 @@ namespace SZUAbsolventenverein.Module.AdminModules.Services { if (_userPermissions.IsAuthorized(_accessor.HttpContext.User, _alias.SiteId, EntityNames.Module, ModuleId, PermissionNames.View)) { - List role = new List(); + List role = new(); role.AddRange(_roleRepository.GetRoles(_alias.SiteId)); return Task.FromResult(role); } @@ -153,14 +153,16 @@ namespace SZUAbsolventenverein.Module.AdminModules.Services int emailsSent = 0; IEnumerable userids = _userRoleRepository - .GetUserRoles(_alias.SiteId) - .Where(ur => ur.Role.SiteId == EmailFields.Role.RoleId) + .GetUserRoles(EmailFields.Role.Name, _alias.SiteId) .Select(ur => ur.UserId) .Distinct() .AsEnumerable(); + Console.WriteLine("Should send emails to: " + userids.Count()); + foreach (int userid in userids) { + Console.WriteLine("Sending email to: " + userid); emailsSent++; User user = _userRepository.GetUser(userid); @@ -168,13 +170,13 @@ namespace SZUAbsolventenverein.Module.AdminModules.Services string body = template.Content; // Fields befüllen. - string token = await _identityUserManager.GenerateEmailConfirmationTokenAsync(identityuser); - string url = _alias.Protocol + _alias.Name + "/login?name=" + user.Username + "&token=" + WebUtility.UrlEncode(token); + string token = await _identityUserManager.GeneratePasswordResetTokenAsync(identityuser); + string url = _alias.Protocol + _alias.Name + "/reset?name=" + user.Username + "&token=" + WebUtility.UrlEncode(token); body = body.Replace("[UserDisplayName]", user.DisplayName); body = body.Replace("[URL]", url); - Notification notification = new Notification(_alias.SiteId, user, template.Name, body, DateTime.Now.AddDays(emailsSent / 100)); + Notification notification = new Notification(_alias.SiteId, user, template.Name, body, DateTime.UtcNow.AddDays(emailsSent / 100)); _notifications.AddNotification(notification); }