Unbenutze Felder entfernen und einen Password-Reset Link versenden.
This commit is contained in:
@@ -11,16 +11,14 @@
|
|||||||
<form @ref="form" class="@(validated ? " was-validated" : "needs-validation" )" novalidate>
|
<form @ref="form" class="@(validated ? " was-validated" : "needs-validation" )" novalidate>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row mb-1 align-items-center">
|
<div class="row mb-1 align-items-center">
|
||||||
<Label Class="col-sm-3" For="name" HelpText="Enter a name" ResourceKey="Name">Name: </Label>
|
<Label Class="col-sm-3" For="betreff" HelpText="Gib einen Betreff ein" ResourceKey="Betreff">Betreff: </Label>
|
||||||
<div class="col-sm-9">
|
<div class="col-sm-9">
|
||||||
<input id="name" class="form-control" @bind="@_name" required />
|
<input id="betreff" class="form-control" @bind="@_betreff" required />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row mb-1 align-items-center">
|
<div class="row mb-1 align-items-center">
|
||||||
<Label Class="col-sm-3" For="Body" HelpText="Enter a body" ResourceKey="Body">Body: </Label>
|
<Label Class="col-sm-3" For="Body" HelpText="Enter a body" ResourceKey="Body">Body: </Label>
|
||||||
<div class="col-sm-9">
|
<RichTextEditor id="content" class="form-control" Content="@_richText" @ref="@RichTextEditorHtml" required />
|
||||||
<RichTextEditor id="content" class="form-control" @Content="@_richText" @ref="RichTextEditorHtml" required />
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button type="button" class="btn btn-success" @onclick="Save">@Localizer["Save"]</button>
|
<button type="button" class="btn btn-success" @onclick="Save">@Localizer["Save"]</button>
|
||||||
@@ -49,7 +47,7 @@
|
|||||||
private bool validated = false;
|
private bool validated = false;
|
||||||
|
|
||||||
private int _id;
|
private int _id;
|
||||||
private string _name;
|
private string _betreff;
|
||||||
private string _richText;
|
private string _richText;
|
||||||
private string _createdby;
|
private string _createdby;
|
||||||
private DateTime _createdon;
|
private DateTime _createdon;
|
||||||
@@ -66,7 +64,7 @@
|
|||||||
AdminModules AdminModules = await AdminModulesService.GetAdminModulesAsync(_id, ModuleState.ModuleId);
|
AdminModules AdminModules = await AdminModulesService.GetAdminModulesAsync(_id, ModuleState.ModuleId);
|
||||||
if (AdminModules != null)
|
if (AdminModules != null)
|
||||||
{
|
{
|
||||||
_name = AdminModules.Name;
|
_betreff = AdminModules.Name;
|
||||||
_richText = AdminModules.Content;
|
_richText = AdminModules.Content;
|
||||||
_createdby = AdminModules.CreatedBy;
|
_createdby = AdminModules.CreatedBy;
|
||||||
_createdon = AdminModules.CreatedOn;
|
_createdon = AdminModules.CreatedOn;
|
||||||
@@ -98,7 +96,7 @@
|
|||||||
{
|
{
|
||||||
AdminModules AdminModules = new AdminModules();
|
AdminModules AdminModules = new AdminModules();
|
||||||
AdminModules.ModuleId = ModuleState.ModuleId;
|
AdminModules.ModuleId = ModuleState.ModuleId;
|
||||||
AdminModules.Name = _name;
|
AdminModules.Name = _betreff;
|
||||||
AdminModules.Content = content;
|
AdminModules.Content = content;
|
||||||
AdminModules = await AdminModulesService.AddAdminModulesAsync(AdminModules);
|
AdminModules = await AdminModulesService.AddAdminModulesAsync(AdminModules);
|
||||||
await logger.LogInformation("AdminModules Added {AdminModules}", AdminModules);
|
await logger.LogInformation("AdminModules Added {AdminModules}", AdminModules);
|
||||||
@@ -106,7 +104,7 @@
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
AdminModules AdminModules = await AdminModulesService.GetAdminModulesAsync(_id, ModuleState.ModuleId);
|
AdminModules AdminModules = await AdminModulesService.GetAdminModulesAsync(_id, ModuleState.ModuleId);
|
||||||
AdminModules.Name = _name;
|
AdminModules.Name = _betreff;
|
||||||
AdminModules.Content = content;
|
AdminModules.Content = content;
|
||||||
await AdminModulesService.UpdateAdminModulesAsync(AdminModules);
|
await AdminModulesService.UpdateAdminModulesAsync(AdminModules);
|
||||||
await logger.LogInformation("AdminModules Updated {AdminModules}", AdminModules);
|
await logger.LogInformation("AdminModules Updated {AdminModules}", AdminModules);
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ namespace SZUAbsolventenverein.Module.AdminModules.Services
|
|||||||
|
|
||||||
public async Task<Models.EmailFields> SendMassNotification(EmailFields EmailFields)
|
public async Task<Models.EmailFields> SendMassNotification(EmailFields EmailFields)
|
||||||
{
|
{
|
||||||
return await PutJsonAsync<Models.EmailFields>(CreateAuthorizationPolicyUrl($"{Apiurl}/{EmailFields.AdminModulesId}/send", EntityNames.Module, EmailFields.ModuleId), EmailFields);
|
return await PutJsonAsync<Models.EmailFields>(CreateAuthorizationPolicyUrl($"{Apiurl}/send/{EmailFields.AdminModulesId}", EntityNames.Module, EmailFields.ModuleId), EmailFields);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -148,5 +148,23 @@ namespace SZUAbsolventenverein.Module.AdminModules.Controllers
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Post api/<controller>/roles/5
|
||||||
|
[HttpPut("send/{id}")]
|
||||||
|
[Authorize(Policy = PolicyNames.EditModule)]
|
||||||
|
public async Task<EmailFields> 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ namespace SZUAbsolventenverein.Module.AdminModules.Services
|
|||||||
{
|
{
|
||||||
if (_userPermissions.IsAuthorized(_accessor.HttpContext.User, _alias.SiteId, EntityNames.Module, ModuleId, PermissionNames.View))
|
if (_userPermissions.IsAuthorized(_accessor.HttpContext.User, _alias.SiteId, EntityNames.Module, ModuleId, PermissionNames.View))
|
||||||
{
|
{
|
||||||
List<Role> role = new List<Role>();
|
List<Role> role = new();
|
||||||
role.AddRange(_roleRepository.GetRoles(_alias.SiteId));
|
role.AddRange(_roleRepository.GetRoles(_alias.SiteId));
|
||||||
return Task.FromResult(role);
|
return Task.FromResult(role);
|
||||||
}
|
}
|
||||||
@@ -153,14 +153,16 @@ namespace SZUAbsolventenverein.Module.AdminModules.Services
|
|||||||
int emailsSent = 0;
|
int emailsSent = 0;
|
||||||
|
|
||||||
IEnumerable<int> userids = _userRoleRepository
|
IEnumerable<int> userids = _userRoleRepository
|
||||||
.GetUserRoles(_alias.SiteId)
|
.GetUserRoles(EmailFields.Role.Name, _alias.SiteId)
|
||||||
.Where(ur => ur.Role.SiteId == EmailFields.Role.RoleId)
|
|
||||||
.Select(ur => ur.UserId)
|
.Select(ur => ur.UserId)
|
||||||
.Distinct()
|
.Distinct()
|
||||||
.AsEnumerable();
|
.AsEnumerable();
|
||||||
|
|
||||||
|
Console.WriteLine("Should send emails to: " + userids.Count());
|
||||||
|
|
||||||
foreach (int userid in userids)
|
foreach (int userid in userids)
|
||||||
{
|
{
|
||||||
|
Console.WriteLine("Sending email to: " + userid);
|
||||||
emailsSent++;
|
emailsSent++;
|
||||||
|
|
||||||
User user = _userRepository.GetUser(userid);
|
User user = _userRepository.GetUser(userid);
|
||||||
@@ -168,13 +170,13 @@ namespace SZUAbsolventenverein.Module.AdminModules.Services
|
|||||||
string body = template.Content;
|
string body = template.Content;
|
||||||
|
|
||||||
// Fields bef<65>llen.
|
// Fields bef<65>llen.
|
||||||
string token = await _identityUserManager.GenerateEmailConfirmationTokenAsync(identityuser);
|
string token = await _identityUserManager.GeneratePasswordResetTokenAsync(identityuser);
|
||||||
string url = _alias.Protocol + _alias.Name + "/login?name=" + user.Username + "&token=" + WebUtility.UrlEncode(token);
|
string url = _alias.Protocol + _alias.Name + "/reset?name=" + user.Username + "&token=" + WebUtility.UrlEncode(token);
|
||||||
|
|
||||||
body = body.Replace("[UserDisplayName]", user.DisplayName);
|
body = body.Replace("[UserDisplayName]", user.DisplayName);
|
||||||
body = body.Replace("[URL]", url);
|
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);
|
_notifications.AddNotification(notification);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user