2023-06-25 22:43:15 +01:00

35 lines
1.2 KiB
C#

using System.Text;
using System.Xml.Linq;
using Microsoft.AspNetCore.Mvc.Filters;
using sodoff.Util;
namespace sodoff.Attributes;
[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
public class DecryptRequest : Attribute, IAsyncActionFilter {
const string key = "56BB211B-CF06-48E1-9C1D-E40B5173D759";
private readonly string field;
public DecryptRequest(string field) {
this.field = field;
}
public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) {
if (context.HttpContext.Request.HasFormContentType) {
var form = context.HttpContext.Request.Form;
if (form.ContainsKey(field)) {
// Get field from submitted form and decrypt
var fieldValue = form[field].ToString();
string result = TripleDES.DecryptUnicode(fieldValue, key);
var dict = form.ToDictionary(x => x.Key, x => x.Value);
dict[field] = result;
var updatedForm = new FormCollection(dict);
// Update the form in the request
context.HttpContext.Request.Form = updatedForm;
}
}
await next();
}
}