using AppLibs.Libs; using SysApp.Models; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Connections.Features; using System.Diagnostics.Metrics; using System.Security.Cryptography; using System.Text.Encodings; using System.Text; using AppLibs.Libs.Crypt; namespace SysApp.Controllers { public class StorageController : Controller { [PageInfor("6101", "Config Storage")] public Task Index() { return this.ViewAsync(); } [PageInfor("6102", "Type Storage")] public Task Type() { return this.ViewAsync(); } [PageInfor("6103", "Validation Domain")] public Task ValidationDomain() { return this.ViewAsync(); } [HttpPost] public async Task AddValidationDomain([FromForm] ValidationDomainModel model) { return Json(await model.AddAsync()); } [HttpPost] public async Task GetValidationDomain([FromForm] ValidationDomainModel model) { return await model.GetValidationDomainAsync(); } [HttpPost] public async Task UpdateValidationDomain([FromForm] ValidationDomainModel model) { return Json(await model.UpdateAsync()); } [HttpPost] public async Task AddType([FromBody] TypeStorageServerModel model) { return Json(await model.AddAsync()); } [HttpPost] public async Task GetTypeStorage([FromForm] TypeStorageServerModel model) { return await model.GetTypeStoragesAsync(); } [HttpGet] public async Task GetTypeStorage() { return await TypeStorageServerModel.GetAllTypeStorage(); } [HttpGet] public async Task GetValidationDomain() { return await ValidationDomainModel.GetAllValidationDomain(); } [HttpPost] public async Task UpdateType([FromBody] TypeStorageServerModel model) { return Json(await model.UpdateAsync()); } [HttpGet] public async Task GenerationAccessToken() { var t1 = Task.Run(() => { var g = Guid.NewGuid(); return Base64UrlTextEncoder.Encode(g.ToByteArray().Concat(BitConverter.GetBytes(DateTime.UtcNow.ToFileTime())).ToArray()); }); var t2 = Task.Run(() => { var g = Guid.NewGuid(); var bytes = BitConverter.GetBytes(DateTime.UtcNow.Ticks); Array.Resize(ref bytes, 16); byte[] data = new byte[32]; bytes.CopyTo(data, 0); g.ToByteArray().CopyTo(data, 16); var hash = new CRC64(); return hash.HashToString(data); }); await Task.WhenAll(t1, t2); return Json(new { idToken = t2.Result.ToLower(), tokenValue = t1.Result }); } } }