forked from SoDOff-Project/sodoff
35 lines
1.2 KiB
C#
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();
|
|
}
|
|
} |