commit 65c3fe5f9338695544ce0aab5e647ade0ed2fe30 Author: Aurelien Rebourg Date: Tue Mar 23 18:53:03 2021 +0000 homework diff --git a/Back.sln b/Back.sln new file mode 100644 index 0000000..8dd9447 --- /dev/null +++ b/Back.sln @@ -0,0 +1,16 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shop", "Shop\Shop.csproj", "{6CD64A6D-4A60-425D-8E06-1E28096A4D52}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {6CD64A6D-4A60-425D-8E06-1E28096A4D52}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6CD64A6D-4A60-425D-8E06-1E28096A4D52}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6CD64A6D-4A60-425D-8E06-1E28096A4D52}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6CD64A6D-4A60-425D-8E06-1E28096A4D52}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/Shop/Controllers/CustomerController.cs b/Shop/Controllers/CustomerController.cs new file mode 100644 index 0000000..37b5ea5 --- /dev/null +++ b/Shop/Controllers/CustomerController.cs @@ -0,0 +1,119 @@ +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using Shop.Data; +using Shop.DTO; +using Shop.Model; + +namespace Shop.Controllers +{ + [ApiController] + [Route("[controller]")] + public class CustomerController : ControllerBase + { + private readonly Context _context; + + public CustomerController(Context context) + { + _context = context; + } + + [HttpGet] + public async Task>> GetCustomer() + { + return await _context.customer.ToListAsync(); + } + + [HttpGet("{id}")] + public ActionResult GetCustomer_byId(int id) + { + var order = from orders in _context.orders + join product in _context.products on orders.products_id equals product.product_id + join customer in _context.customer on orders.customer_id equals customer.customer_id + select new OrderDTO + { + customer_id = customer.customer_id, + price = product.price, + order_id = orders.order_id, + product_id = product.product_id + }; + + var customers = from customer in _context.customer + join orders in _context.orders on customer.customer_id equals orders.customer_id + select new CustomerOrderListDTO() + { + Customer_id = customer.customer_id, + Name = customer.customer_name, + Orders = order.Where(x => x.customer_id == customer.customer_id).ToList() + }; + + var customer_by_id = customers.ToList().Find(x => x.Customer_id == id); + + if (customer_by_id == null) + { + return NotFound(); + } + return customer_by_id; + } + + [HttpPost] + public async Task> PostCustomer(Customer customer) + { + _context.customer.Add(customer); + await _context.SaveChangesAsync(); + + return CreatedAtAction("GetCustomer", new { id = customer.customer_id }, customer); + } + + [HttpPut("{id}")] + public async Task Put_Values(int id, Customer customer) + { + if (id != customer.customer_id) + { + return BadRequest(); + } + + _context.Entry(customer).State = EntityState.Modified; + + try + { + await _context.SaveChangesAsync(); + } + catch (DbUpdateConcurrencyException) + { + if (!ValuesExists(id)) + { + return NotFound(); + } + else + { + throw; + } + } + + return NoContent(); + } + + private bool ValuesExists(int id) + { + return _context.customer.Any(e => e.customer_id == id); + } + + [HttpDelete("{id}")] + public async Task> Delete_values(int id) + { + var values = await _context.customer.FindAsync(id); + if (values == null) + { + return NotFound(); + } + + _context.customer.Remove(values); + await _context.SaveChangesAsync(); + + return values; + } + } +} \ No newline at end of file diff --git a/Shop/Controllers/OrdersController.cs b/Shop/Controllers/OrdersController.cs new file mode 100644 index 0000000..51b4851 --- /dev/null +++ b/Shop/Controllers/OrdersController.cs @@ -0,0 +1,119 @@ +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using Shop.Data; +using Shop.DTO; +using Shop.Models; + +namespace Shop.Controllers +{ + [ApiController] + [Route("[controller]")] + public class OrdersController : ControllerBase + { + private readonly Context _context; + + public OrdersController(Context context) + { + _context = context; + } + + [HttpGet] + public ActionResult> GetOrder() + { + var order = from orders in _context.orders + join product in _context.products on orders.products_id equals product.product_id + select new OrderDTO() + { + customer_id = orders.customer_id, + order_id = orders.order_id, + product_id = product.product_id, + price = product.price + }; + + return Ok(order); + } + + [HttpGet("{id}")] + public ActionResult GetOrder_byId(int id) + { + var order = from orders in _context.orders + join product in _context.products on orders.products_id equals product.product_id + join customer in _context.customer on orders.customer_id equals customer.customer_id + select new OrderDTO + { + customer_id = customer.customer_id, + order_id = orders.order_id, + product_id = product.product_id, + price = product.price + }; + + var order_by_id = order.ToList().Find(x => x.order_id == id); + + if (order_by_id == null) + { + return NotFound(); + } + return order_by_id; + } + + [HttpPost] + public async Task> PostOrders(Orders order) + { + _context.orders.Add(order); + await _context.SaveChangesAsync(); + return CreatedAtAction("GetOrder", new { id = order.order_id }, order); + } + + [HttpPut("{id}")] + public async Task Put_Values(int id, Orders orders) + { + if (id != orders.order_id) + { + return BadRequest(); + } + + _context.Entry(orders).State = EntityState.Modified; + + try + { + await _context.SaveChangesAsync(); + } + catch (DbUpdateConcurrencyException) + { + if (!ValuesExists(id)) + { + return NotFound(); + } + else + { + throw; + } + } + + return NoContent(); + } + + private bool ValuesExists(int id) + { + return _context.orders.Any(e => e.order_id == id); + } + + [HttpDelete("{id}")] + public async Task> Delete_orders(int id) + { + var values = await _context.orders.FindAsync(id); + if (values == null) + { + return NotFound(); + } + + _context.orders.Remove(values); + await _context.SaveChangesAsync(); + + return values; + } + } +} \ No newline at end of file diff --git a/Shop/Controllers/ProductsController.cs b/Shop/Controllers/ProductsController.cs new file mode 100644 index 0000000..7594c66 --- /dev/null +++ b/Shop/Controllers/ProductsController.cs @@ -0,0 +1,97 @@ +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using Shop.Data; +using Shop.DTO; +using Shop.Model; + +namespace Shop.Controllers +{ + [ApiController] + [Route("[controller]")] + public class ProductsController : Controller + { + private readonly Context _context; + + public ProductsController(Context context) + { + _context = context; + } + + [HttpGet] + public async Task>> GetProduct() + { + return await _context.products.ToListAsync(); + } + + [HttpPost] + public async Task> Add_Product(AddProducts.AddProduct productDTO) + { + if (!ModelState.IsValid) + { + return BadRequest(ModelState); + } + + var product = new Products() + { + product_id = productDTO.product_id, + price = productDTO.price, + product_name = productDTO.product_name + }; + await _context.products.AddAsync(product); + await _context.SaveChangesAsync(); + + + return CreatedAtAction("GetProduct", new {id = product.product_id}, productDTO); + } + [HttpPut("{id}")] + public async Task Put_Values(int id, Products products) + { + if (id != products.product_id) + { + return BadRequest(); + } + + _context.Entry(products).State = EntityState.Modified; + + try + { + await _context.SaveChangesAsync(); + } + catch (DbUpdateConcurrencyException) + { + if (!ValuesExists(id)) + { + return NotFound(); + } + else + { + throw; + } + } + + return NoContent(); + } + + private bool ValuesExists(int id) + { + return _context.products.Any(e => e.product_id == id); + } + [HttpDelete("{id}")] + public async Task> Delete_values(int id) + { + var values = await _context.products.FindAsync(id); + if (values == null) + { + return NotFound(); + } + + _context.products.Remove(values); + await _context.SaveChangesAsync(); + + return values; + } + } +} \ No newline at end of file diff --git a/Shop/Controllers/UserController.cs b/Shop/Controllers/UserController.cs new file mode 100644 index 0000000..36c8cc5 --- /dev/null +++ b/Shop/Controllers/UserController.cs @@ -0,0 +1,144 @@ +using System; +using System.Collections.Generic; +using System.IdentityModel.Tokens.Jwt; +using System.Security.Claims; +using System.Text; +using AutoMapper; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Configuration; +using Microsoft.IdentityModel.Tokens; + +using Shop.DTO; +using Shop.Helpers; +using Shop.Model; +using Shop.Services; + +namespace Controllers +{ + [Authorize] + [ApiController] + [Route("[controller]")] + public class UsersController : ControllerBase + { + private UserServices.IUserService _userService; + private IMapper _mapper; + public IConfiguration Configuration; + + public UsersController( + UserServices.IUserService userService, + IMapper mapper, + IConfiguration configuration) + { + _userService = userService; + _mapper = mapper; + Configuration = configuration; + } + + [AllowAnonymous] + [HttpPost("authenticate")] + public IActionResult Authenticate([FromBody]AuthenticateModel model) + { + var user = _userService.Authenticate(model.Username, model.Password); + + if (user == null) + return BadRequest(new { message = "Username or password is incorrect" }); + + var tokenHandler = new JwtSecurityTokenHandler(); + var key = Encoding.ASCII.GetBytes(Configuration["Secret"]); + var tokenDescriptor = new SecurityTokenDescriptor + { + Subject = new ClaimsIdentity(new Claim[] + { + new Claim(ClaimTypes.Name, user.Id.ToString()) + }), + Expires = DateTime.UtcNow.AddDays(7), + SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) + }; + var token = tokenHandler.CreateToken(tokenDescriptor); + var tokenString = tokenHandler.WriteToken(token); + + // return basic user info and authentication token + return Ok(new + { + Id = user.Id, + Username = user.Username, + FirstName = user.FirstName, + LastName = user.LastName, + Token = tokenString + }); + } + + [AllowAnonymous] + [HttpPost("register")] + public IActionResult Register([FromBody]RegisterModel model) + { + // map model to entity + var user = _mapper.Map(model); + + try + { + // create user + _userService.Create(user, model.Password); + return Ok(); + } + catch (AppException ex) + { + // return error message if there was an exception + return BadRequest(new { message = ex.Message }); + } + } + + [HttpGet] + public IActionResult GetAll() + { + var users = _userService.GetAll(); + var model = _mapper.Map>(users); + return Ok(model); + } + + [HttpGet("{id}")] + public IActionResult GetById(int id) + { + var user = _userService.GetById(id); + var model = _mapper.Map(user); + return Ok(model); + } + + [HttpPut("{id}")] + public IActionResult Update(int id, [FromBody]UpdateModel model) + { + //Finding who is logged in + int logged_in_user = int.Parse(User.Identity.Name); + + // map model to entity and set id + var user = _mapper.Map(model); + user.Id = id; + + //Rejecting access if the logged in user is not same as the user updating information + if(logged_in_user != id) + { + return BadRequest(new { message = "Access Denied" }); + } + + try + { + // update user + _userService.Update(user, model.CurrentPassword, model.NewPassword, model.ConfirmNewPassword); + return Ok(); + } + catch (AppException ex) + { + // return error message if there was an exception + return BadRequest(new { message = ex.Message }); + } + } + + [HttpDelete("{id}")] + public IActionResult Delete(int id) + { + _userService.Delete(id); + return Ok(); + } + } +} diff --git a/Shop/DTO/AddProducts.cs b/Shop/DTO/AddProducts.cs new file mode 100644 index 0000000..2fb0c34 --- /dev/null +++ b/Shop/DTO/AddProducts.cs @@ -0,0 +1,17 @@ +using System.ComponentModel.DataAnnotations; + +namespace Shop.DTO +{ + public class AddProducts + { + public class AddProduct + { + [Required] + public int product_id { get; set; } + [Required] + public string product_name { get; set; } + [Required] + public decimal price { get; set; } + } + } +} \ No newline at end of file diff --git a/Shop/DTO/AuthenticateModel.cs b/Shop/DTO/AuthenticateModel.cs new file mode 100644 index 0000000..93f9645 --- /dev/null +++ b/Shop/DTO/AuthenticateModel.cs @@ -0,0 +1,13 @@ +using System.ComponentModel.DataAnnotations; + +namespace Shop.DTO +{ + public class AuthenticateModel + { + [Required] + public string Username { get; set; } + + [Required] + public string Password { get; set; } + } +} \ No newline at end of file diff --git a/Shop/DTO/CustomerDTO.cs b/Shop/DTO/CustomerDTO.cs new file mode 100644 index 0000000..06f5721 --- /dev/null +++ b/Shop/DTO/CustomerDTO.cs @@ -0,0 +1,9 @@ +namespace Shop.DTO +{ + public class CustomerDTO + { + public int Customer_id { get; set; } + + public string Name { get; set; } + } +} \ No newline at end of file diff --git a/Shop/DTO/CustomerOrderListDTO.cs b/Shop/DTO/CustomerOrderListDTO.cs new file mode 100644 index 0000000..5ef7c23 --- /dev/null +++ b/Shop/DTO/CustomerOrderListDTO.cs @@ -0,0 +1,10 @@ +using System.Collections.Generic; + +namespace Shop.DTO +{ + public class CustomerOrderListDTO : CustomerDTO + { + public List Orders { get; set; } + + } +} \ No newline at end of file diff --git a/Shop/DTO/OrderDTO.cs b/Shop/DTO/OrderDTO.cs new file mode 100644 index 0000000..31a8c68 --- /dev/null +++ b/Shop/DTO/OrderDTO.cs @@ -0,0 +1,13 @@ +namespace Shop.DTO +{ + public class OrderDTO + { + public int order_id { get; set; } + + public int customer_id { get; set; } + + public int product_id { get; set; } + + public decimal price { get; set; } + } +} \ No newline at end of file diff --git a/Shop/DTO/RegisterModel.cs b/Shop/DTO/RegisterModel.cs new file mode 100644 index 0000000..5384a10 --- /dev/null +++ b/Shop/DTO/RegisterModel.cs @@ -0,0 +1,19 @@ +using System.ComponentModel.DataAnnotations; + +namespace Shop.DTO +{ + public class RegisterModel + { + [Required] + public string FirstName { get; set; } + + [Required] + public string LastName { get; set; } + + [Required] + public string Username { get; set; } + + [Required] + public string Password { get; set; } + } +} \ No newline at end of file diff --git a/Shop/DTO/UpdateModel.cs b/Shop/DTO/UpdateModel.cs new file mode 100644 index 0000000..37d18a0 --- /dev/null +++ b/Shop/DTO/UpdateModel.cs @@ -0,0 +1,12 @@ +namespace Shop.DTO +{ + public class UpdateModel + { + public string FirstName { get; set; } + public string LastName { get; set; } + public string Username { get; set; } + public string CurrentPassword { get; set; } + public string NewPassword { get; set; } + public string ConfirmNewPassword { get; set; } + } +} \ No newline at end of file diff --git a/Shop/DTO/UserModel.cs b/Shop/DTO/UserModel.cs new file mode 100644 index 0000000..1c96cd0 --- /dev/null +++ b/Shop/DTO/UserModel.cs @@ -0,0 +1,10 @@ +namespace Shop.DTO +{ + public class UserModel + { + public int Id { get; set; } + public string FirstName { get; set; } + public string LastName { get; set; } + public string Username { get; set; } + } +} \ No newline at end of file diff --git a/Shop/Data/Context.cs b/Shop/Data/Context.cs new file mode 100644 index 0000000..616a06e --- /dev/null +++ b/Shop/Data/Context.cs @@ -0,0 +1,19 @@ +using Microsoft.EntityFrameworkCore; +using Shop.Model; +using Shop.Models; + +namespace Shop.Data +{ + public class Context : DbContext + { + public Context(DbContextOptions options) : base(options) {} + + public DbSet customer { get; set; } + + public DbSet orders { get; set; } + + public DbSet products { get; set; } + public DbSet User {get; set;} + } + +} \ No newline at end of file diff --git a/Shop/Helpers/AppException.cs b/Shop/Helpers/AppException.cs new file mode 100644 index 0000000..32347fa --- /dev/null +++ b/Shop/Helpers/AppException.cs @@ -0,0 +1,18 @@ +using System; +using System.Globalization; + +namespace Shop.Helpers +{ + // Custom exception class for throwing application specific exceptions (e.g. for validation) + // that can be caught and handled within the application + public class AppException : Exception + { + public AppException() : base() {} + public AppException(string message) : base(message) { } + + public AppException(string message, params object[] args) + : base(String.Format(CultureInfo.CurrentCulture, message, args)) + { + } + } +} \ No newline at end of file diff --git a/Shop/Helpers/AutoMapperProfile.cs b/Shop/Helpers/AutoMapperProfile.cs new file mode 100644 index 0000000..ce488ce --- /dev/null +++ b/Shop/Helpers/AutoMapperProfile.cs @@ -0,0 +1,17 @@ +using AutoMapper; +using Shop.DTO; +using Shop.Model; + + +namespace Shop.Helpers +{ + public class AutoMapperProfile : Profile + { + public AutoMapperProfile() + { + CreateMap(); + CreateMap(); + CreateMap(); + } + } +} \ No newline at end of file diff --git a/Shop/Model/Customer.cs b/Shop/Model/Customer.cs new file mode 100644 index 0000000..ad51492 --- /dev/null +++ b/Shop/Model/Customer.cs @@ -0,0 +1,12 @@ +using System.ComponentModel.DataAnnotations; + +namespace Shop.Model +{ + public class Customer + { + [Key] + public int customer_id { get; set; } + + public string customer_name { get; set; } + } +} \ No newline at end of file diff --git a/Shop/Model/Orders.cs b/Shop/Model/Orders.cs new file mode 100644 index 0000000..4220441 --- /dev/null +++ b/Shop/Model/Orders.cs @@ -0,0 +1,14 @@ +using System.ComponentModel.DataAnnotations; + +namespace Shop.Models +{ + public class Orders + { + [Key] + public int order_id { get; set; } + + public int customer_id { get; set; } + + public int products_id { get; set; } + } +} \ No newline at end of file diff --git a/Shop/Model/Products.cs b/Shop/Model/Products.cs new file mode 100644 index 0000000..4727ed9 --- /dev/null +++ b/Shop/Model/Products.cs @@ -0,0 +1,12 @@ +using System.ComponentModel.DataAnnotations; + +namespace Shop.Model +{ + public class Products + { + [Key] + public int product_id { get; set; } + public string product_name { get; set; } + public decimal price { get; set; } + } +} diff --git a/Shop/Model/User.cs b/Shop/Model/User.cs new file mode 100644 index 0000000..0be8365 --- /dev/null +++ b/Shop/Model/User.cs @@ -0,0 +1,11 @@ +namespace Shop.Model +{ + public class User + { + public int Id { get; set; } + public string FirstName { get; set; } + public string LastName { get; set; } + public string Username { get; set; } + public string PasswordHash { get; set; } + } +} \ No newline at end of file diff --git a/Shop/Program.cs b/Shop/Program.cs new file mode 100644 index 0000000..2dd6141 --- /dev/null +++ b/Shop/Program.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; + +namespace Shop +{ + public class Program + { + public static void Main(string[] args) + { + CreateHostBuilder(args).Build().Run(); + } + + public static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup(); }); + } +} \ No newline at end of file diff --git a/Shop/Properties/launchSettings.json b/Shop/Properties/launchSettings.json new file mode 100644 index 0000000..e087cfd --- /dev/null +++ b/Shop/Properties/launchSettings.json @@ -0,0 +1,30 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": true, + "anonymousAuthentication": false, + "iisExpress": { + "applicationUrl": "http://localhost:7781", + "sslPort": 44394 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "launchUrl": "swagger", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "Shop": { + "commandName": "Project", + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "https://localhost:5001;http://localhost:5000", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} \ No newline at end of file diff --git a/Shop/Services/UserServices.cs b/Shop/Services/UserServices.cs new file mode 100644 index 0000000..aad7f5f --- /dev/null +++ b/Shop/Services/UserServices.cs @@ -0,0 +1,165 @@ +using System.Collections.Generic; +using System.Linq; +using System.Security.Cryptography; +using System.Text; +using Shop.Data; +using Shop.Helpers; +using Shop.Model; + +namespace Shop.Services +{ + public class UserServices + { + public interface IUserService + { + User Authenticate(string username, string password); + IEnumerable GetAll(); + User GetById(int id); + User Create(User user, string password); + void Update(User user, string currentPassword, string password, string confirmPassword); + void Delete(int id); + } + + public class UserService : IUserService + { + private Context _context; + + public UserService(Context context) + { + _context = context; + } + + public User Authenticate(string username, string password) + { + if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password)) + { + return null; + } + + var user = _context.User.FirstOrDefault(x => x.Username == username) ?? null; + + // check if username exists + if (user == null) + { + return null; + } + + // Granting access if the hashed password in the database matches with the password(hashed in computeHash method) entered by user. + if(computeHash(password) != user.PasswordHash) + { + return null; + } + return user; + } + + public IEnumerable GetAll() + { + return _context.User; + } + + public User GetById(int id) + { + return _context.User.Find(id); + } + + public User Create(User user, string password) + { + // validation + if (string.IsNullOrWhiteSpace(password)) + { + throw new AppException("Password is required"); + } + + if (_context.User.Any(x => x.Username == user.Username)) + { + throw new AppException("Username \"" + user.Username + "\" is already taken"); + } + + //Saving hashed password into Database table + user.PasswordHash = computeHash(password); + + _context.User.Add(user); + _context.SaveChanges(); + + return user; + } + + public void Update(User userParam, string currentPassword = null, string password = null, string confirmPassword = null) + { + //Find the user by Id + var user = _context.User.Find(userParam.Id); + + if (user == null) + { + throw new AppException("User not found"); + } + // update user properties if provided + if (!string.IsNullOrWhiteSpace(userParam.Username) && userParam.Username != user.Username) + { + // throw error if the new username is already taken + if (_context.User.Any(x => x.Username == userParam.Username)) + { + throw new AppException("Username " + userParam.Username + " is already taken"); + } + else + { + user.Username = userParam.Username; + } + } + if (!string.IsNullOrWhiteSpace(userParam.FirstName)) + { + user.FirstName = userParam.FirstName; + } + if (!string.IsNullOrWhiteSpace(userParam.LastName)) + { + user.LastName = userParam.LastName; + } + if (!string.IsNullOrWhiteSpace(currentPassword)) + { + if(computeHash(currentPassword) != user.PasswordHash) + { + throw new AppException("Invalid Current password!"); + } + + if(currentPassword == password) + { + throw new AppException("Please choose another password!"); + } + + if(password != confirmPassword) + { + throw new AppException("Password doesn't match!"); + } + + //Updating hashed password into Database table + user.PasswordHash = computeHash(password); + } + + _context.User.Update(user); + _context.SaveChanges(); + } + + public void Delete(int id) + { + var user = _context.User.Find(id); + if (user != null) + { + _context.User.Remove(user); + _context.SaveChanges(); + } + } + + private static string computeHash(string Password) + { + MD5 md5 = new MD5CryptoServiceProvider(); + var input = md5.ComputeHash(Encoding.UTF8.GetBytes(Password)); + var hashstring = ""; + foreach(var hashbyte in input) + { + hashstring += hashbyte.ToString("x2"); + } + return hashstring; + } + } + } +} \ No newline at end of file diff --git a/Shop/Shop.csproj b/Shop/Shop.csproj new file mode 100644 index 0000000..c7bac73 --- /dev/null +++ b/Shop/Shop.csproj @@ -0,0 +1,18 @@ + + + + netcoreapp3.1 + + + + + + + + + + + + + + diff --git a/Shop/Startup.cs b/Shop/Startup.cs new file mode 100644 index 0000000..5bba2d2 --- /dev/null +++ b/Shop/Startup.cs @@ -0,0 +1,143 @@ +using System; +using System.Text; +using System.Threading.Tasks; +using AutoMapper; +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Microsoft.IdentityModel.Tokens; +using Microsoft.OpenApi.Models; +using Shop.Data; +using Shop.Services; + +namespace Shop +{ + public class Startup + { + public Startup(IConfiguration configuration) + { + Configuration = configuration; + } + + public IConfiguration Configuration { get; } + + // This method gets called by the runtime. Use this method to add services to the container. + public void ConfigureServices(IServiceCollection services) + { + services.AddDbContext(opt => + { + opt.UseMySql(Configuration.GetConnectionString("DefaultConnection")); + }); + services.AddCors(); + services.AddControllers(); + services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); + + // configure jwt authentication + var key = Encoding.ASCII.GetBytes(Configuration["Secret"]); + services.AddAuthentication(x => + { + x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; + x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; + }) + .AddJwtBearer(x => + { + x.Events = new JwtBearerEvents + { + OnTokenValidated = context => + { + var userService = context.HttpContext.RequestServices.GetRequiredService(); + var userId = int.Parse(context.Principal.Identity.Name); + var user = userService.GetById(userId); + if (user == null) + { + // return unauthorized if user no longer exists + context.Fail("Unauthorized"); + } + return Task.CompletedTask; + } + }; + x.RequireHttpsMetadata = false; + x.SaveToken = true; + x.TokenValidationParameters = new TokenValidationParameters + { + ValidateIssuerSigningKey = true, + IssuerSigningKey = new SymmetricSecurityKey(key), + ValidateIssuer = false, + ValidateAudience = false + }; + }); + + // configure DI for application services + services.AddScoped(); + + services.AddSwaggerGen(swagger => + { + //This is to generate the Default UI of Swagger Documentation + swagger.SwaggerDoc("v1", new OpenApiInfo + { + Version= "v1", + Title = "Dorset College API", + Description="Web API" + }); + // To Enable authorization using Swagger (JWT) + swagger.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme() + { + Name = "Authorization", + Type = SecuritySchemeType.ApiKey, + Scheme = "Bearer", + BearerFormat = "JWT", + In = ParameterLocation.Header, + Description = "JWT Authorization header using the Bearer scheme. \r\n\r\n Enter 'Bearer' [space] and then your token in the text input below.\r\n\r\nExample: \"Bearer 12345abcdef\"", + }); + swagger.AddSecurityRequirement(new OpenApiSecurityRequirement + { + { + new OpenApiSecurityScheme + { + Reference = new OpenApiReference + { + Type = ReferenceType.SecurityScheme, + Id = "Bearer" + } + }, + new string[] {} + } + }); + }); + } + + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) + { + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + app.UseSwagger(); + app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "API Aurelien " + + "Rebourg")); + } + + app.UseCors(x => x + .AllowAnyOrigin() + .AllowAnyMethod() + .AllowAnyHeader()); + + app.UseHttpsRedirection(); + + app.UseRouting(); + + app.UseAuthentication(); + + app.UseAuthorization(); + + app.UseEndpoints(endpoints => + { + endpoints.MapControllers(); + }); + } + } +} \ No newline at end of file diff --git a/Shop/appsettings.Development.json b/Shop/appsettings.Development.json new file mode 100644 index 0000000..8983e0f --- /dev/null +++ b/Shop/appsettings.Development.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + } +} diff --git a/Shop/obj/Debug/netcoreapp3.1/.NETCoreApp,Version=v3.1.AssemblyAttributes.cs b/Shop/obj/Debug/netcoreapp3.1/.NETCoreApp,Version=v3.1.AssemblyAttributes.cs new file mode 100644 index 0000000..03fd1de --- /dev/null +++ b/Shop/obj/Debug/netcoreapp3.1/.NETCoreApp,Version=v3.1.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v3.1", FrameworkDisplayName = "")] diff --git a/Shop/obj/Debug/netcoreapp3.1/Shop.AssemblyInfo.cs b/Shop/obj/Debug/netcoreapp3.1/Shop.AssemblyInfo.cs new file mode 100644 index 0000000..7f6af37 --- /dev/null +++ b/Shop/obj/Debug/netcoreapp3.1/Shop.AssemblyInfo.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("Shop")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] +[assembly: System.Reflection.AssemblyProductAttribute("Shop")] +[assembly: System.Reflection.AssemblyTitleAttribute("Shop")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// Generated by the MSBuild WriteCodeFragment class. + diff --git a/Shop/obj/Debug/netcoreapp3.1/Shop.AssemblyInfoInputs.cache b/Shop/obj/Debug/netcoreapp3.1/Shop.AssemblyInfoInputs.cache new file mode 100644 index 0000000..f324411 --- /dev/null +++ b/Shop/obj/Debug/netcoreapp3.1/Shop.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +a09a70cd7c468cb3fe40bda428f1e1aee9f97668 diff --git a/Shop/obj/Debug/netcoreapp3.1/Shop.assets.cache b/Shop/obj/Debug/netcoreapp3.1/Shop.assets.cache new file mode 100644 index 0000000..bd4d851 Binary files /dev/null and b/Shop/obj/Debug/netcoreapp3.1/Shop.assets.cache differ diff --git a/Shop/obj/Debug/netcoreapp3.1/Shop.csprojAssemblyReference.cache b/Shop/obj/Debug/netcoreapp3.1/Shop.csprojAssemblyReference.cache new file mode 100644 index 0000000..640a2a3 Binary files /dev/null and b/Shop/obj/Debug/netcoreapp3.1/Shop.csprojAssemblyReference.cache differ diff --git a/Shop/obj/Shop.csproj.nuget.dgspec.json b/Shop/obj/Shop.csproj.nuget.dgspec.json new file mode 100644 index 0000000..25a3c9d --- /dev/null +++ b/Shop/obj/Shop.csproj.nuget.dgspec.json @@ -0,0 +1,101 @@ +{ + "format": 1, + "restore": { + "/home/aurelien/Bureau/dorset/Dorset-back-master/Homework2/Shop/Shop.csproj": {} + }, + "projects": { + "/home/aurelien/Bureau/dorset/Dorset-back-master/Homework2/Shop/Shop.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "/home/aurelien/Bureau/dorset/Dorset-back-master/Homework2/Shop/Shop.csproj", + "projectName": "Shop", + "projectPath": "/home/aurelien/Bureau/dorset/Dorset-back-master/Homework2/Shop/Shop.csproj", + "packagesPath": "/home/aurelien/.nuget/packages/", + "outputPath": "/home/aurelien/Bureau/dorset/Dorset-back-master/Homework2/Shop/obj/", + "projectStyle": "PackageReference", + "configFilePaths": [ + "/home/aurelien/.nuget/NuGet/NuGet.Config" + ], + "originalTargetFrameworks": [ + "netcoreapp3.1" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "netcoreapp3.1": { + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + } + }, + "frameworks": { + "netcoreapp3.1": { + "dependencies": { + "AutoMapper": { + "target": "Package", + "version": "[10.1.1, )" + }, + "AutoMapper.Extensions.Microsoft.DependencyInjection": { + "target": "Package", + "version": "[8.1.1, )" + }, + "Microsoft.AspNetCore.Authentication.JwtBearer": { + "target": "Package", + "version": "[3.1.12, )" + }, + "Microsoft.EntityFrameworkCore": { + "target": "Package", + "version": "[3.1.12, )" + }, + "Pomelo.EntityFrameworkCore.MySql": { + "target": "Package", + "version": "[3.1.1, )" + }, + "Swashbuckle.AspNetCore": { + "target": "Package", + "version": "[5.6.3, )" + }, + "System.IdentityModel.Tokens.Jwt": { + "target": "Package", + "version": "[6.9.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48" + ], + "assetTargetFallback": true, + "warn": true, + "downloadDependencies": [ + { + "name": "Microsoft.AspNetCore.App.Ref", + "version": "[3.1.10, 3.1.10]" + }, + { + "name": "Microsoft.NETCore.App.Host.linux-x64", + "version": "[3.1.13, 3.1.13]" + } + ], + "frameworkReferences": { + "Microsoft.AspNetCore.App": { + "privateAssets": "none" + }, + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "/usr/share/dotnet/sdk/5.0.201/RuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/Shop/obj/Shop.csproj.nuget.g.props b/Shop/obj/Shop.csproj.nuget.g.props new file mode 100644 index 0000000..0adf102 --- /dev/null +++ b/Shop/obj/Shop.csproj.nuget.g.props @@ -0,0 +1,22 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + /home/aurelien/.nuget/packages/ + /home/aurelien/.nuget/packages/ + PackageReference + 5.5.0 + + + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) + + + + + + + /home/aurelien/.nuget/packages/microsoft.extensions.apidescription.server/3.0.0 + + \ No newline at end of file diff --git a/Shop/obj/Shop.csproj.nuget.g.targets b/Shop/obj/Shop.csproj.nuget.g.targets new file mode 100644 index 0000000..5f2d0a1 --- /dev/null +++ b/Shop/obj/Shop.csproj.nuget.g.targets @@ -0,0 +1,9 @@ + + + + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) + + + + + \ No newline at end of file diff --git a/Shop/obj/project.assets.json b/Shop/obj/project.assets.json new file mode 100644 index 0000000..665bf2f --- /dev/null +++ b/Shop/obj/project.assets.json @@ -0,0 +1,1576 @@ +{ + "version": 3, + "targets": { + ".NETCoreApp,Version=v3.1": { + "AutoMapper/10.1.1": { + "type": "package", + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.Reflection.Emit": "4.7.0" + }, + "compile": { + "lib/netstandard2.0/AutoMapper.dll": {} + }, + "runtime": { + "lib/netstandard2.0/AutoMapper.dll": {} + } + }, + "AutoMapper.Extensions.Microsoft.DependencyInjection/8.1.1": { + "type": "package", + "dependencies": { + "AutoMapper": "[10.1.1, 11.0.0)", + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.0.0", + "Microsoft.Extensions.Options": "3.0.0" + }, + "compile": { + "lib/netstandard2.0/AutoMapper.Extensions.Microsoft.DependencyInjection.dll": {} + }, + "runtime": { + "lib/netstandard2.0/AutoMapper.Extensions.Microsoft.DependencyInjection.dll": {} + } + }, + "Microsoft.AspNetCore.Authentication.JwtBearer/3.1.12": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "5.5.0" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.AspNetCore.Authentication.JwtBearer.dll": {} + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.AspNetCore.Authentication.JwtBearer.dll": {} + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "Microsoft.Bcl.AsyncInterfaces/1.1.1": { + "type": "package", + "compile": { + "ref/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": {} + }, + "runtime": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": {} + } + }, + "Microsoft.Bcl.HashCode/1.1.1": { + "type": "package", + "compile": { + "ref/netcoreapp2.1/Microsoft.Bcl.HashCode.dll": {} + }, + "runtime": { + "lib/netcoreapp2.1/Microsoft.Bcl.HashCode.dll": {} + } + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "compile": { + "ref/netcoreapp2.0/_._": {} + }, + "runtime": { + "lib/netcoreapp2.0/_._": {} + } + }, + "Microsoft.EntityFrameworkCore/3.1.12": { + "type": "package", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "1.1.1", + "Microsoft.Bcl.HashCode": "1.1.1", + "Microsoft.EntityFrameworkCore.Abstractions": "3.1.12", + "Microsoft.EntityFrameworkCore.Analyzers": "3.1.12", + "Microsoft.Extensions.Caching.Memory": "3.1.12", + "Microsoft.Extensions.DependencyInjection": "3.1.12", + "Microsoft.Extensions.Logging": "3.1.12", + "System.Collections.Immutable": "1.7.1", + "System.ComponentModel.Annotations": "4.7.0", + "System.Diagnostics.DiagnosticSource": "4.7.1" + }, + "compile": { + "lib/netstandard2.0/Microsoft.EntityFrameworkCore.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Microsoft.EntityFrameworkCore.dll": {} + } + }, + "Microsoft.EntityFrameworkCore.Abstractions/3.1.12": { + "type": "package", + "compile": { + "lib/netstandard2.0/Microsoft.EntityFrameworkCore.Abstractions.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Microsoft.EntityFrameworkCore.Abstractions.dll": {} + } + }, + "Microsoft.EntityFrameworkCore.Analyzers/3.1.12": { + "type": "package", + "compile": { + "lib/netstandard2.0/_._": {} + }, + "runtime": { + "lib/netstandard2.0/_._": {} + } + }, + "Microsoft.EntityFrameworkCore.Relational/3.1.0": { + "type": "package", + "dependencies": { + "Microsoft.EntityFrameworkCore": "3.1.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.EntityFrameworkCore.Relational.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Microsoft.EntityFrameworkCore.Relational.dll": {} + } + }, + "Microsoft.Extensions.ApiDescription.Server/3.0.0": { + "type": "package", + "build": { + "build/Microsoft.Extensions.ApiDescription.Server.props": {}, + "build/Microsoft.Extensions.ApiDescription.Server.targets": {} + }, + "buildMultiTargeting": { + "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.props": {}, + "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.targets": {} + } + }, + "Microsoft.Extensions.Caching.Abstractions/3.1.12": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "3.1.12" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.Extensions.Caching.Abstractions.dll": {} + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.Extensions.Caching.Abstractions.dll": {} + } + }, + "Microsoft.Extensions.Caching.Memory/3.1.12": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "3.1.12", + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.12", + "Microsoft.Extensions.Logging.Abstractions": "3.1.12", + "Microsoft.Extensions.Options": "3.1.12" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.Extensions.Caching.Memory.dll": {} + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.Extensions.Caching.Memory.dll": {} + } + }, + "Microsoft.Extensions.Configuration/3.1.12": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "3.1.12" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.dll": {} + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.dll": {} + } + }, + "Microsoft.Extensions.Configuration.Abstractions/3.1.12": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "3.1.12" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Abstractions.dll": {} + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Abstractions.dll": {} + } + }, + "Microsoft.Extensions.Configuration.Binder/3.1.12": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "3.1.12" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Binder.dll": {} + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Binder.dll": {} + } + }, + "Microsoft.Extensions.DependencyInjection/3.1.12": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.12" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.Extensions.DependencyInjection.dll": {} + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.Extensions.DependencyInjection.dll": {} + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/3.1.12": { + "type": "package", + "compile": { + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} + } + }, + "Microsoft.Extensions.Logging/3.1.12": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Binder": "3.1.12", + "Microsoft.Extensions.DependencyInjection": "3.1.12", + "Microsoft.Extensions.Logging.Abstractions": "3.1.12", + "Microsoft.Extensions.Options": "3.1.12" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.Extensions.Logging.dll": {} + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.Extensions.Logging.dll": {} + } + }, + "Microsoft.Extensions.Logging.Abstractions/3.1.12": { + "type": "package", + "compile": { + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll": {} + } + }, + "Microsoft.Extensions.Options/3.1.12": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.12", + "Microsoft.Extensions.Primitives": "3.1.12" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.Extensions.Options.dll": {} + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.Extensions.Options.dll": {} + } + }, + "Microsoft.Extensions.Primitives/3.1.12": { + "type": "package", + "compile": { + "lib/netcoreapp3.1/Microsoft.Extensions.Primitives.dll": {} + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.Extensions.Primitives.dll": {} + } + }, + "Microsoft.IdentityModel.JsonWebTokens/6.9.0": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Tokens": "6.9.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.dll": {} + } + }, + "Microsoft.IdentityModel.Logging/6.9.0": { + "type": "package", + "compile": { + "lib/netstandard2.0/Microsoft.IdentityModel.Logging.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Microsoft.IdentityModel.Logging.dll": {} + } + }, + "Microsoft.IdentityModel.Protocols/5.5.0": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Logging": "5.5.0", + "Microsoft.IdentityModel.Tokens": "5.5.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.IdentityModel.Protocols.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Microsoft.IdentityModel.Protocols.dll": {} + } + }, + "Microsoft.IdentityModel.Protocols.OpenIdConnect/5.5.0": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Protocols": "5.5.0", + "Newtonsoft.Json": "10.0.1", + "System.IdentityModel.Tokens.Jwt": "5.5.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll": {} + } + }, + "Microsoft.IdentityModel.Tokens/6.9.0": { + "type": "package", + "dependencies": { + "Microsoft.CSharp": "4.5.0", + "Microsoft.Extensions.Caching.Memory": "2.1.1", + "Microsoft.IdentityModel.Logging": "6.9.0", + "System.Security.Cryptography.Cng": "4.5.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.IdentityModel.Tokens.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Microsoft.IdentityModel.Tokens.dll": {} + } + }, + "Microsoft.OpenApi/1.2.3": { + "type": "package", + "compile": { + "lib/netstandard2.0/Microsoft.OpenApi.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Microsoft.OpenApi.dll": {} + } + }, + "MySqlConnector/0.61.0": { + "type": "package", + "compile": { + "lib/netcoreapp3.0/MySqlConnector.dll": {} + }, + "runtime": { + "lib/netcoreapp3.0/MySqlConnector.dll": {} + } + }, + "Newtonsoft.Json/11.0.2": { + "type": "package", + "compile": { + "lib/netstandard2.0/Newtonsoft.Json.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Newtonsoft.Json.dll": {} + } + }, + "Pomelo.EntityFrameworkCore.MySql/3.1.1": { + "type": "package", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "3.1.0", + "MySqlConnector": "0.61.0", + "Pomelo.JsonObject": "2.2.1" + }, + "compile": { + "lib/netstandard2.0/Pomelo.EntityFrameworkCore.MySql.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Pomelo.EntityFrameworkCore.MySql.dll": {} + } + }, + "Pomelo.JsonObject/2.2.1": { + "type": "package", + "dependencies": { + "Microsoft.CSharp": "4.5.0", + "Newtonsoft.Json": "11.0.2" + }, + "compile": { + "lib/netstandard2.0/Pomelo.JsonObject.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Pomelo.JsonObject.dll": {} + } + }, + "Swashbuckle.AspNetCore/5.6.3": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.ApiDescription.Server": "3.0.0", + "Swashbuckle.AspNetCore.Swagger": "5.6.3", + "Swashbuckle.AspNetCore.SwaggerGen": "5.6.3", + "Swashbuckle.AspNetCore.SwaggerUI": "5.6.3" + }, + "build": { + "build/Swashbuckle.AspNetCore.props": {} + } + }, + "Swashbuckle.AspNetCore.Swagger/5.6.3": { + "type": "package", + "dependencies": { + "Microsoft.OpenApi": "1.2.3" + }, + "compile": { + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.Swagger.dll": {} + }, + "runtime": { + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.Swagger.dll": {} + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "Swashbuckle.AspNetCore.SwaggerGen/5.6.3": { + "type": "package", + "dependencies": { + "Swashbuckle.AspNetCore.Swagger": "5.6.3" + }, + "compile": { + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerGen.dll": {} + }, + "runtime": { + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerGen.dll": {} + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "Swashbuckle.AspNetCore.SwaggerUI/5.6.3": { + "type": "package", + "compile": { + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerUI.dll": {} + }, + "runtime": { + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerUI.dll": {} + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "System.Collections.Immutable/1.7.1": { + "type": "package", + "compile": { + "lib/netstandard2.0/System.Collections.Immutable.dll": {} + }, + "runtime": { + "lib/netstandard2.0/System.Collections.Immutable.dll": {} + } + }, + "System.ComponentModel.Annotations/4.7.0": { + "type": "package", + "compile": { + "ref/netstandard2.1/System.ComponentModel.Annotations.dll": {} + }, + "runtime": { + "lib/netstandard2.1/System.ComponentModel.Annotations.dll": {} + } + }, + "System.Diagnostics.DiagnosticSource/4.7.1": { + "type": "package", + "compile": { + "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll": {} + } + }, + "System.IdentityModel.Tokens.Jwt/6.9.0": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.JsonWebTokens": "6.9.0", + "Microsoft.IdentityModel.Tokens": "6.9.0" + }, + "compile": { + "lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.dll": {} + }, + "runtime": { + "lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.dll": {} + } + }, + "System.Reflection.Emit/4.7.0": { + "type": "package", + "compile": { + "ref/netcoreapp2.0/_._": {} + }, + "runtime": { + "lib/netcoreapp2.0/_._": {} + } + }, + "System.Security.Cryptography.Cng/4.5.0": { + "type": "package", + "compile": { + "ref/netcoreapp2.1/System.Security.Cryptography.Cng.dll": {} + }, + "runtime": { + "lib/netcoreapp2.1/System.Security.Cryptography.Cng.dll": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netcoreapp2.1/System.Security.Cryptography.Cng.dll": { + "assetType": "runtime", + "rid": "win" + } + } + } + } + }, + "libraries": { + "AutoMapper/10.1.1": { + "sha512": "uMgbqOdu9ZG5cIOty0C85hzzayBH2i9BthnS5FlMqKtMSHDv4ts81a2jS1VFaDBVhlBeIqJ/kQKjQY95BZde9w==", + "type": "package", + "path": "automapper/10.1.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "automapper.10.1.1.nupkg.sha512", + "automapper.nuspec", + "icon.png", + "lib/net461/AutoMapper.dll", + "lib/net461/AutoMapper.xml", + "lib/netstandard2.0/AutoMapper.dll", + "lib/netstandard2.0/AutoMapper.xml" + ] + }, + "AutoMapper.Extensions.Microsoft.DependencyInjection/8.1.1": { + "sha512": "xSWoVzOipuDU4PeZcUfaZQ+xqXU8QmGv5jrdlxt3MYm9xaOmrefqcfzGQ3SQ+D+8wfBa/ZwSuL0qKOVj080inA==", + "type": "package", + "path": "automapper.extensions.microsoft.dependencyinjection/8.1.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "automapper.extensions.microsoft.dependencyinjection.8.1.1.nupkg.sha512", + "automapper.extensions.microsoft.dependencyinjection.nuspec", + "icon.png", + "lib/netstandard2.0/AutoMapper.Extensions.Microsoft.DependencyInjection.dll" + ] + }, + "Microsoft.AspNetCore.Authentication.JwtBearer/3.1.12": { + "sha512": "Kl6VnydiO9kh4xGo5PugXYViy6kVNxV3UrAvF1sDmMTpkSKtcLsdHWVflzGTD8HUnm8VpvzF1z9/1cmNBeYXOg==", + "type": "package", + "path": "microsoft.aspnetcore.authentication.jwtbearer/3.1.12", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/netcoreapp3.1/Microsoft.AspNetCore.Authentication.JwtBearer.dll", + "lib/netcoreapp3.1/Microsoft.AspNetCore.Authentication.JwtBearer.xml", + "microsoft.aspnetcore.authentication.jwtbearer.3.1.12.nupkg.sha512", + "microsoft.aspnetcore.authentication.jwtbearer.nuspec" + ] + }, + "Microsoft.Bcl.AsyncInterfaces/1.1.1": { + "sha512": "yuvf07qFWFqtK3P/MRkEKLhn5r2UbSpVueRziSqj0yJQIKFwG1pq9mOayK3zE5qZCTs0CbrwL9M6R8VwqyGy2w==", + "type": "package", + "path": "microsoft.bcl.asyncinterfaces/1.1.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net461/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/net461/Microsoft.Bcl.AsyncInterfaces.xml", + "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.xml", + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml", + "microsoft.bcl.asyncinterfaces.1.1.1.nupkg.sha512", + "microsoft.bcl.asyncinterfaces.nuspec", + "ref/net461/Microsoft.Bcl.AsyncInterfaces.dll", + "ref/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", + "ref/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "Microsoft.Bcl.HashCode/1.1.1": { + "sha512": "MalY0Y/uM/LjXtHfX/26l2VtN4LDNZ2OE3aumNOHDLsT4fNYy2hiHXI4CXCqKpNUNm7iJ2brrc4J89UdaL56FA==", + "type": "package", + "path": "microsoft.bcl.hashcode/1.1.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net461/Microsoft.Bcl.HashCode.dll", + "lib/net461/Microsoft.Bcl.HashCode.xml", + "lib/netcoreapp2.1/Microsoft.Bcl.HashCode.dll", + "lib/netcoreapp2.1/Microsoft.Bcl.HashCode.xml", + "lib/netstandard2.0/Microsoft.Bcl.HashCode.dll", + "lib/netstandard2.0/Microsoft.Bcl.HashCode.xml", + "lib/netstandard2.1/Microsoft.Bcl.HashCode.dll", + "lib/netstandard2.1/Microsoft.Bcl.HashCode.xml", + "microsoft.bcl.hashcode.1.1.1.nupkg.sha512", + "microsoft.bcl.hashcode.nuspec", + "ref/net461/Microsoft.Bcl.HashCode.dll", + "ref/netcoreapp2.1/Microsoft.Bcl.HashCode.dll", + "ref/netstandard2.0/Microsoft.Bcl.HashCode.dll", + "ref/netstandard2.1/Microsoft.Bcl.HashCode.dll", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "Microsoft.CSharp/4.7.0": { + "sha512": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "type": "package", + "path": "microsoft.csharp/4.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/Microsoft.CSharp.dll", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.3/Microsoft.CSharp.dll", + "lib/netstandard2.0/Microsoft.CSharp.dll", + "lib/netstandard2.0/Microsoft.CSharp.xml", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/uap10.0.16299/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "microsoft.csharp.4.7.0.nupkg.sha512", + "microsoft.csharp.nuspec", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/Microsoft.CSharp.dll", + "ref/netcore50/Microsoft.CSharp.xml", + "ref/netcore50/de/Microsoft.CSharp.xml", + "ref/netcore50/es/Microsoft.CSharp.xml", + "ref/netcore50/fr/Microsoft.CSharp.xml", + "ref/netcore50/it/Microsoft.CSharp.xml", + "ref/netcore50/ja/Microsoft.CSharp.xml", + "ref/netcore50/ko/Microsoft.CSharp.xml", + "ref/netcore50/ru/Microsoft.CSharp.xml", + "ref/netcore50/zh-hans/Microsoft.CSharp.xml", + "ref/netcore50/zh-hant/Microsoft.CSharp.xml", + "ref/netcoreapp2.0/_._", + "ref/netstandard1.0/Microsoft.CSharp.dll", + "ref/netstandard1.0/Microsoft.CSharp.xml", + "ref/netstandard1.0/de/Microsoft.CSharp.xml", + "ref/netstandard1.0/es/Microsoft.CSharp.xml", + "ref/netstandard1.0/fr/Microsoft.CSharp.xml", + "ref/netstandard1.0/it/Microsoft.CSharp.xml", + "ref/netstandard1.0/ja/Microsoft.CSharp.xml", + "ref/netstandard1.0/ko/Microsoft.CSharp.xml", + "ref/netstandard1.0/ru/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hans/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hant/Microsoft.CSharp.xml", + "ref/netstandard2.0/Microsoft.CSharp.dll", + "ref/netstandard2.0/Microsoft.CSharp.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/uap10.0.16299/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "Microsoft.EntityFrameworkCore/3.1.12": { + "sha512": "L8eZTtCvA3KertBCnytLBpA03GamUHI9PY4C541ub4PHILuhHvZQTOKCXuJ1OTmiZ7cR6rOZk/e8eiOlNOLMHg==", + "type": "package", + "path": "microsoft.entityframeworkcore/3.1.12", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netstandard2.0/Microsoft.EntityFrameworkCore.dll", + "lib/netstandard2.0/Microsoft.EntityFrameworkCore.xml", + "microsoft.entityframeworkcore.3.1.12.nupkg.sha512", + "microsoft.entityframeworkcore.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore.Abstractions/3.1.12": { + "sha512": "FIypwCQ36xoVmwak6IJCq+aR8L/SkPmkiGcMz9EsTqF5R6jAYyS2eIdMOuarNAi5f1pjlEAlpkNrydk0u49COQ==", + "type": "package", + "path": "microsoft.entityframeworkcore.abstractions/3.1.12", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netstandard2.0/Microsoft.EntityFrameworkCore.Abstractions.dll", + "lib/netstandard2.0/Microsoft.EntityFrameworkCore.Abstractions.xml", + "microsoft.entityframeworkcore.abstractions.3.1.12.nupkg.sha512", + "microsoft.entityframeworkcore.abstractions.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore.Analyzers/3.1.12": { + "sha512": "qv8ihmOTyF7us7O91RoyJeTPWkLArxDzGwpyhzcGUN0XNJimKnJ2Epfitu3wrw4H9GM0fDpQMlZtzms8jtfkWA==", + "type": "package", + "path": "microsoft.entityframeworkcore.analyzers/3.1.12", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "analyzers/dotnet/cs/Microsoft.EntityFrameworkCore.Analyzers.dll", + "lib/netstandard2.0/_._", + "microsoft.entityframeworkcore.analyzers.3.1.12.nupkg.sha512", + "microsoft.entityframeworkcore.analyzers.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore.Relational/3.1.0": { + "sha512": "eeiqVqzXVuwQsUbqXMyXSEUn/EHB9zmDsr5f/+v6uEt0ir7pgItuIi3I7QV4xvM/s0KbFsqGUOrAFPeRHE3plg==", + "type": "package", + "path": "microsoft.entityframeworkcore.relational/3.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/Microsoft.EntityFrameworkCore.Relational.dll", + "lib/netstandard2.0/Microsoft.EntityFrameworkCore.Relational.xml", + "microsoft.entityframeworkcore.relational.3.1.0.nupkg.sha512", + "microsoft.entityframeworkcore.relational.nuspec", + "packageIcon.png" + ] + }, + "Microsoft.Extensions.ApiDescription.Server/3.0.0": { + "sha512": "LH4OE/76F6sOCslif7+Xh3fS/wUUrE5ryeXAMcoCnuwOQGT5Smw0p57IgDh/pHgHaGz/e+AmEQb7pRgb++wt0w==", + "type": "package", + "path": "microsoft.extensions.apidescription.server/3.0.0", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "build/Microsoft.Extensions.ApiDescription.Server.props", + "build/Microsoft.Extensions.ApiDescription.Server.targets", + "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.props", + "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.targets", + "microsoft.extensions.apidescription.server.3.0.0.nupkg.sha512", + "microsoft.extensions.apidescription.server.nuspec", + "tools/Newtonsoft.Json.dll", + "tools/dotnet-getdocument.deps.json", + "tools/dotnet-getdocument.dll", + "tools/dotnet-getdocument.runtimeconfig.json", + "tools/net461-x86/GetDocument.Insider.exe", + "tools/net461-x86/GetDocument.Insider.exe.config", + "tools/net461/GetDocument.Insider.exe", + "tools/net461/GetDocument.Insider.exe.config", + "tools/netcoreapp2.1/GetDocument.Insider.deps.json", + "tools/netcoreapp2.1/GetDocument.Insider.dll", + "tools/netcoreapp2.1/GetDocument.Insider.runtimeconfig.json" + ] + }, + "Microsoft.Extensions.Caching.Abstractions/3.1.12": { + "sha512": "KOt2+vIFZ56zBEG2jgZWBjvxL4MSXBUV7npESYT7qAAABBywlJEa2pVvkbElBwOovLC/Q3cO1YcBc9OQc+dbxw==", + "type": "package", + "path": "microsoft.extensions.caching.abstractions/3.1.12", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netcoreapp3.1/Microsoft.Extensions.Caching.Abstractions.dll", + "lib/netcoreapp3.1/Microsoft.Extensions.Caching.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.xml", + "microsoft.extensions.caching.abstractions.3.1.12.nupkg.sha512", + "microsoft.extensions.caching.abstractions.nuspec" + ] + }, + "Microsoft.Extensions.Caching.Memory/3.1.12": { + "sha512": "oZS7pobGXRTQCm6zfwWQdYn4lOnpCtgzVctrcSzJLAUzPxdUb+va3VLs3p8t65CUACrlRKQok4UGWXQkFHrx2Q==", + "type": "package", + "path": "microsoft.extensions.caching.memory/3.1.12", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netcoreapp3.1/Microsoft.Extensions.Caching.Memory.dll", + "lib/netcoreapp3.1/Microsoft.Extensions.Caching.Memory.xml", + "lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.dll", + "lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.xml", + "microsoft.extensions.caching.memory.3.1.12.nupkg.sha512", + "microsoft.extensions.caching.memory.nuspec" + ] + }, + "Microsoft.Extensions.Configuration/3.1.12": { + "sha512": "sQeNlafyb7XIYubfELbAQtN3U7DubZEs8d7xaj09sAdD929spOqiZKHcWpEQDtWtwqXm70JWS1WDfxpOvuVMcw==", + "type": "package", + "path": "microsoft.extensions.configuration/3.1.12", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.dll", + "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.xml", + "microsoft.extensions.configuration.3.1.12.nupkg.sha512", + "microsoft.extensions.configuration.nuspec" + ] + }, + "Microsoft.Extensions.Configuration.Abstractions/3.1.12": { + "sha512": "LMq236lxH1ji2FYv+2o6A9Nfb9jrDWl6Dn1XleA473NmBfYf/93MfPBgmnJA1qlFQPt9BKBd3r3h7NaTbDcHMw==", + "type": "package", + "path": "microsoft.extensions.configuration.abstractions/3.1.12", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.xml", + "microsoft.extensions.configuration.abstractions.3.1.12.nupkg.sha512", + "microsoft.extensions.configuration.abstractions.nuspec" + ] + }, + "Microsoft.Extensions.Configuration.Binder/3.1.12": { + "sha512": "tso2dQMzmtALku0vMB6VuZpxDD6HYXqut+a8FdaU8XelnlR0aCi/LsK6Ej7VZbkKBqTQSgHAwyghbuKhk1sxog==", + "type": "package", + "path": "microsoft.extensions.configuration.binder/3.1.12", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Binder.dll", + "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Binder.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.xml", + "microsoft.extensions.configuration.binder.3.1.12.nupkg.sha512", + "microsoft.extensions.configuration.binder.nuspec" + ] + }, + "Microsoft.Extensions.DependencyInjection/3.1.12": { + "sha512": "iCPPTBSXEPlGkpQt6Ky9+pfxQhsanrQ8W5tZC43eqYoBCqBTiAkd5rzfWSxxvjqUmDbp/h3JrKv765gRunkHsQ==", + "type": "package", + "path": "microsoft.extensions.dependencyinjection/3.1.12", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/net461/Microsoft.Extensions.DependencyInjection.dll", + "lib/net461/Microsoft.Extensions.DependencyInjection.xml", + "lib/netcoreapp3.1/Microsoft.Extensions.DependencyInjection.dll", + "lib/netcoreapp3.1/Microsoft.Extensions.DependencyInjection.xml", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.dll", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.xml", + "microsoft.extensions.dependencyinjection.3.1.12.nupkg.sha512", + "microsoft.extensions.dependencyinjection.nuspec" + ] + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/3.1.12": { + "sha512": "rIFeT9vtNl5AKpvWxxhOudNnVRqKNIku1bLVUBc/MdhHeiHA23OOc3TOlniQjSpFRIIjQ9J1LLTYSZvCwOemyg==", + "type": "package", + "path": "microsoft.extensions.dependencyinjection.abstractions/3.1.12", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "microsoft.extensions.dependencyinjection.abstractions.3.1.12.nupkg.sha512", + "microsoft.extensions.dependencyinjection.abstractions.nuspec" + ] + }, + "Microsoft.Extensions.Logging/3.1.12": { + "sha512": "EXwfP6M/G6mwM/f9eVNY3tOnY539gIEjeSXs2G/RtuGILteW455ZLxfZmE7qzWSc0J2wvoMuxdkB+WMsBW8Kqw==", + "type": "package", + "path": "microsoft.extensions.logging/3.1.12", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netcoreapp3.1/Microsoft.Extensions.Logging.dll", + "lib/netcoreapp3.1/Microsoft.Extensions.Logging.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.xml", + "microsoft.extensions.logging.3.1.12.nupkg.sha512", + "microsoft.extensions.logging.nuspec" + ] + }, + "Microsoft.Extensions.Logging.Abstractions/3.1.12": { + "sha512": "Ixi6qAF3sr1FjPntVamRCMcnrCPx6l0G8VxtVshEk4n8lGs0Hj62jmt/xJ4mHrxR5ST0T49ERT2HsJcv6z+wGw==", + "type": "package", + "path": "microsoft.extensions.logging.abstractions/3.1.12", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml", + "microsoft.extensions.logging.abstractions.3.1.12.nupkg.sha512", + "microsoft.extensions.logging.abstractions.nuspec" + ] + }, + "Microsoft.Extensions.Options/3.1.12": { + "sha512": "by2/frdg182EdpUkFw+2+h+POQTUCVNZRGWgFZKKZhxfuN+hJZFAaGMAuo1ouLexMa1PGTqWAgw/zaZ2WwU71Q==", + "type": "package", + "path": "microsoft.extensions.options/3.1.12", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netcoreapp3.1/Microsoft.Extensions.Options.dll", + "lib/netcoreapp3.1/Microsoft.Extensions.Options.xml", + "lib/netstandard2.0/Microsoft.Extensions.Options.dll", + "lib/netstandard2.0/Microsoft.Extensions.Options.xml", + "microsoft.extensions.options.3.1.12.nupkg.sha512", + "microsoft.extensions.options.nuspec" + ] + }, + "Microsoft.Extensions.Primitives/3.1.12": { + "sha512": "QjEKb7QWbk44/t05BKlYaHP1sX2jOW9MypKVeMikX6932J34AioVo9heppJ8XAUpBLL15iOiyncSLWgHE32xMg==", + "type": "package", + "path": "microsoft.extensions.primitives/3.1.12", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netcoreapp3.1/Microsoft.Extensions.Primitives.dll", + "lib/netcoreapp3.1/Microsoft.Extensions.Primitives.xml", + "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll", + "lib/netstandard2.0/Microsoft.Extensions.Primitives.xml", + "microsoft.extensions.primitives.3.1.12.nupkg.sha512", + "microsoft.extensions.primitives.nuspec" + ] + }, + "Microsoft.IdentityModel.JsonWebTokens/6.9.0": { + "sha512": "T7zUGhBqVJ58EGks+WUwMpqsHltp2SzgG3bvKLgfAcJ2xOEyyPPaxSb5gpkeQjah1fpjEp9KRSqf9LXuZR38XQ==", + "type": "package", + "path": "microsoft.identitymodel.jsonwebtokens/6.9.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net45/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net45/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/net461/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net461/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/net472/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net472/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.xml", + "microsoft.identitymodel.jsonwebtokens.6.9.0.nupkg.sha512", + "microsoft.identitymodel.jsonwebtokens.nuspec" + ] + }, + "Microsoft.IdentityModel.Logging/6.9.0": { + "sha512": "AKAD/4RJqICnzs50OOoUm2/mjPVmo4xL7wilvDqvNaeQGdEPJJ6yW7YbmJ+rulm6R/1X64PrO2rwXGXKRF1uHg==", + "type": "package", + "path": "microsoft.identitymodel.logging/6.9.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net45/Microsoft.IdentityModel.Logging.dll", + "lib/net45/Microsoft.IdentityModel.Logging.xml", + "lib/net461/Microsoft.IdentityModel.Logging.dll", + "lib/net461/Microsoft.IdentityModel.Logging.xml", + "lib/net472/Microsoft.IdentityModel.Logging.dll", + "lib/net472/Microsoft.IdentityModel.Logging.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.Logging.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.Logging.xml", + "microsoft.identitymodel.logging.6.9.0.nupkg.sha512", + "microsoft.identitymodel.logging.nuspec" + ] + }, + "Microsoft.IdentityModel.Protocols/5.5.0": { + "sha512": "m1gwAQwZjUxzRBC+4H40vYSo9Cms9yUbMdW492rQoXHU77G/ItiKxpk2+W9bWYcdsKUDKudye7im3T3MlVxEkg==", + "type": "package", + "path": "microsoft.identitymodel.protocols/5.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net45/Microsoft.IdentityModel.Protocols.dll", + "lib/net45/Microsoft.IdentityModel.Protocols.xml", + "lib/net451/Microsoft.IdentityModel.Protocols.dll", + "lib/net451/Microsoft.IdentityModel.Protocols.xml", + "lib/net461/Microsoft.IdentityModel.Protocols.dll", + "lib/net461/Microsoft.IdentityModel.Protocols.xml", + "lib/netstandard1.4/Microsoft.IdentityModel.Protocols.dll", + "lib/netstandard1.4/Microsoft.IdentityModel.Protocols.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.Protocols.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.Protocols.xml", + "microsoft.identitymodel.protocols.5.5.0.nupkg.sha512", + "microsoft.identitymodel.protocols.nuspec" + ] + }, + "Microsoft.IdentityModel.Protocols.OpenIdConnect/5.5.0": { + "sha512": "21F4QlbaD5CXNs2urNRCO6vljbbrhv3gmGT8P18SKGKZ9IYBCn29extoJriHiPfhABd5b8S7RcdKU50XhERkYg==", + "type": "package", + "path": "microsoft.identitymodel.protocols.openidconnect/5.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net45/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", + "lib/net45/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", + "lib/net451/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", + "lib/net451/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", + "lib/net461/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", + "lib/net461/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", + "lib/netstandard1.4/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", + "lib/netstandard1.4/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", + "microsoft.identitymodel.protocols.openidconnect.5.5.0.nupkg.sha512", + "microsoft.identitymodel.protocols.openidconnect.nuspec" + ] + }, + "Microsoft.IdentityModel.Tokens/6.9.0": { + "sha512": "orR4LEqrSTCwoK6stozEiOd8mj2H7l8w7/hgdkB0qYLkoaw6DmYncBAWnwQtyDmr4Cn0c4gs/IanoMfkW3NP1Q==", + "type": "package", + "path": "microsoft.identitymodel.tokens/6.9.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net45/Microsoft.IdentityModel.Tokens.dll", + "lib/net45/Microsoft.IdentityModel.Tokens.xml", + "lib/net461/Microsoft.IdentityModel.Tokens.dll", + "lib/net461/Microsoft.IdentityModel.Tokens.xml", + "lib/net472/Microsoft.IdentityModel.Tokens.dll", + "lib/net472/Microsoft.IdentityModel.Tokens.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.Tokens.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.Tokens.xml", + "microsoft.identitymodel.tokens.6.9.0.nupkg.sha512", + "microsoft.identitymodel.tokens.nuspec" + ] + }, + "Microsoft.OpenApi/1.2.3": { + "sha512": "Nug3rO+7Kl5/SBAadzSMAVgqDlfGjJZ0GenQrLywJ84XGKO0uRqkunz5Wyl0SDwcR71bAATXvSdbdzPrYRYKGw==", + "type": "package", + "path": "microsoft.openapi/1.2.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net46/Microsoft.OpenApi.dll", + "lib/net46/Microsoft.OpenApi.pdb", + "lib/net46/Microsoft.OpenApi.xml", + "lib/netstandard2.0/Microsoft.OpenApi.dll", + "lib/netstandard2.0/Microsoft.OpenApi.pdb", + "lib/netstandard2.0/Microsoft.OpenApi.xml", + "microsoft.openapi.1.2.3.nupkg.sha512", + "microsoft.openapi.nuspec" + ] + }, + "MySqlConnector/0.61.0": { + "sha512": "E01yibVzCkVOmhNsUb+B4amjQKfKFlGiR1huNd6Q8aTCqBrACo0I3JMKvJBMpZfYhAsR8bqB9496PwcGpr+LuQ==", + "type": "package", + "path": "mysqlconnector/0.61.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net45/MySqlConnector.dll", + "lib/net45/MySqlConnector.xml", + "lib/net461/MySqlConnector.dll", + "lib/net461/MySqlConnector.xml", + "lib/net471/MySqlConnector.dll", + "lib/net471/MySqlConnector.xml", + "lib/netcoreapp2.1/MySqlConnector.dll", + "lib/netcoreapp2.1/MySqlConnector.xml", + "lib/netcoreapp3.0/MySqlConnector.dll", + "lib/netcoreapp3.0/MySqlConnector.xml", + "lib/netstandard1.3/MySqlConnector.dll", + "lib/netstandard1.3/MySqlConnector.xml", + "lib/netstandard2.0/MySqlConnector.dll", + "lib/netstandard2.0/MySqlConnector.xml", + "lib/netstandard2.1/MySqlConnector.dll", + "lib/netstandard2.1/MySqlConnector.xml", + "logo.png", + "mysqlconnector.0.61.0.nupkg.sha512", + "mysqlconnector.nuspec" + ] + }, + "Newtonsoft.Json/11.0.2": { + "sha512": "IvJe1pj7JHEsP8B8J8DwlMEx8UInrs/x+9oVY+oCD13jpLu4JbJU2WCIsMRn5C4yW9+DgkaO8uiVE5VHKjpmdQ==", + "type": "package", + "path": "newtonsoft.json/11.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.md", + "lib/net20/Newtonsoft.Json.dll", + "lib/net20/Newtonsoft.Json.xml", + "lib/net35/Newtonsoft.Json.dll", + "lib/net35/Newtonsoft.Json.xml", + "lib/net40/Newtonsoft.Json.dll", + "lib/net40/Newtonsoft.Json.xml", + "lib/net45/Newtonsoft.Json.dll", + "lib/net45/Newtonsoft.Json.xml", + "lib/netstandard1.0/Newtonsoft.Json.dll", + "lib/netstandard1.0/Newtonsoft.Json.xml", + "lib/netstandard1.3/Newtonsoft.Json.dll", + "lib/netstandard1.3/Newtonsoft.Json.xml", + "lib/netstandard2.0/Newtonsoft.Json.dll", + "lib/netstandard2.0/Newtonsoft.Json.xml", + "lib/portable-net40+sl5+win8+wp8+wpa81/Newtonsoft.Json.dll", + "lib/portable-net40+sl5+win8+wp8+wpa81/Newtonsoft.Json.xml", + "lib/portable-net45+win8+wp8+wpa81/Newtonsoft.Json.dll", + "lib/portable-net45+win8+wp8+wpa81/Newtonsoft.Json.xml", + "newtonsoft.json.11.0.2.nupkg.sha512", + "newtonsoft.json.nuspec" + ] + }, + "Pomelo.EntityFrameworkCore.MySql/3.1.1": { + "sha512": "DYMsaJe/lKoaPGjB0ACnP+h5FeaJC+07f83FewBulkqfkUvc7m97PECX0OUHSTT+qEF0EOmJ7HQR0dltSCDyPQ==", + "type": "package", + "path": "pomelo.entityframeworkcore.mysql/3.1.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "icon.png", + "lib/netstandard2.0/Pomelo.EntityFrameworkCore.MySql.dll", + "pomelo.entityframeworkcore.mysql.3.1.1.nupkg.sha512", + "pomelo.entityframeworkcore.mysql.nuspec" + ] + }, + "Pomelo.JsonObject/2.2.1": { + "sha512": "VHPk3Yf7nDt+tZMC1M4oAoc3bgTYsOrap3VTjn//vd91b/nfquAbAeq1k0Lf7mPt8J7imLd9Pbzm50uB5euuZA==", + "type": "package", + "path": "pomelo.jsonobject/2.2.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/Pomelo.JsonObject.dll", + "pomelo.jsonobject.2.2.1.nupkg.sha512", + "pomelo.jsonobject.nuspec" + ] + }, + "Swashbuckle.AspNetCore/5.6.3": { + "sha512": "UkL9GU0mfaA+7RwYjEaBFvAzL8qNQhNqAeV5uaWUu/Z+fVgvK9FHkGCpTXBqSQeIHuZaIElzxnLDdIqGzuCnVg==", + "type": "package", + "path": "swashbuckle.aspnetcore/5.6.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "build/Swashbuckle.AspNetCore.props", + "swashbuckle.aspnetcore.5.6.3.nupkg.sha512", + "swashbuckle.aspnetcore.nuspec" + ] + }, + "Swashbuckle.AspNetCore.Swagger/5.6.3": { + "sha512": "rn/MmLscjg6WSnTZabojx5DQYle2GjPanSPbCU3Kw8Hy72KyQR3uy8R1Aew5vpNALjfUFm2M/vwUtqdOlzw+GA==", + "type": "package", + "path": "swashbuckle.aspnetcore.swagger/5.6.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.Swagger.dll", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.Swagger.pdb", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.Swagger.xml", + "lib/netstandard2.0/Swashbuckle.AspNetCore.Swagger.dll", + "lib/netstandard2.0/Swashbuckle.AspNetCore.Swagger.pdb", + "lib/netstandard2.0/Swashbuckle.AspNetCore.Swagger.xml", + "swashbuckle.aspnetcore.swagger.5.6.3.nupkg.sha512", + "swashbuckle.aspnetcore.swagger.nuspec" + ] + }, + "Swashbuckle.AspNetCore.SwaggerGen/5.6.3": { + "sha512": "CkhVeod/iLd3ikVTDOwG5sym8BE5xbqGJ15iF3cC7ZPg2kEwDQL4a88xjkzsvC9oOB2ax6B0rK0EgRK+eOBX+w==", + "type": "package", + "path": "swashbuckle.aspnetcore.swaggergen/5.6.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerGen.dll", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerGen.xml", + "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerGen.dll", + "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", + "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerGen.xml", + "swashbuckle.aspnetcore.swaggergen.5.6.3.nupkg.sha512", + "swashbuckle.aspnetcore.swaggergen.nuspec" + ] + }, + "Swashbuckle.AspNetCore.SwaggerUI/5.6.3": { + "sha512": "BPvcPxQRMsYZ3HnYmGKRWDwX4Wo29WHh14Q6B10BB8Yfbbcza+agOC2UrBFA1EuaZuOsFLbp6E2+mqVNF/Je8A==", + "type": "package", + "path": "swashbuckle.aspnetcore.swaggerui/5.6.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerUI.dll", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerUI.xml", + "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerUI.dll", + "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", + "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerUI.xml", + "swashbuckle.aspnetcore.swaggerui.5.6.3.nupkg.sha512", + "swashbuckle.aspnetcore.swaggerui.nuspec" + ] + }, + "System.Collections.Immutable/1.7.1": { + "sha512": "B43Zsz5EfMwyEbnObwRxW5u85fzJma3lrDeGcSAV1qkhSRTNY5uXAByTn9h9ddNdhM+4/YoLc/CI43umjwIl9Q==", + "type": "package", + "path": "system.collections.immutable/1.7.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net461/System.Collections.Immutable.dll", + "lib/net461/System.Collections.Immutable.xml", + "lib/netstandard1.0/System.Collections.Immutable.dll", + "lib/netstandard1.0/System.Collections.Immutable.xml", + "lib/netstandard1.3/System.Collections.Immutable.dll", + "lib/netstandard1.3/System.Collections.Immutable.xml", + "lib/netstandard2.0/System.Collections.Immutable.dll", + "lib/netstandard2.0/System.Collections.Immutable.xml", + "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll", + "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.xml", + "system.collections.immutable.1.7.1.nupkg.sha512", + "system.collections.immutable.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.ComponentModel.Annotations/4.7.0": { + "sha512": "0YFqjhp/mYkDGpU0Ye1GjE53HMp9UVfGN7seGpAMttAC0C40v5gw598jCgpbBLMmCo0E5YRLBv5Z2doypO49ZQ==", + "type": "package", + "path": "system.componentmodel.annotations/4.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net461/System.ComponentModel.Annotations.dll", + "lib/netcore50/System.ComponentModel.Annotations.dll", + "lib/netstandard1.4/System.ComponentModel.Annotations.dll", + "lib/netstandard2.0/System.ComponentModel.Annotations.dll", + "lib/netstandard2.1/System.ComponentModel.Annotations.dll", + "lib/netstandard2.1/System.ComponentModel.Annotations.xml", + "lib/portable-net45+win8/_._", + "lib/win8/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net461/System.ComponentModel.Annotations.dll", + "ref/net461/System.ComponentModel.Annotations.xml", + "ref/netcore50/System.ComponentModel.Annotations.dll", + "ref/netcore50/System.ComponentModel.Annotations.xml", + "ref/netcore50/de/System.ComponentModel.Annotations.xml", + "ref/netcore50/es/System.ComponentModel.Annotations.xml", + "ref/netcore50/fr/System.ComponentModel.Annotations.xml", + "ref/netcore50/it/System.ComponentModel.Annotations.xml", + "ref/netcore50/ja/System.ComponentModel.Annotations.xml", + "ref/netcore50/ko/System.ComponentModel.Annotations.xml", + "ref/netcore50/ru/System.ComponentModel.Annotations.xml", + "ref/netcore50/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netcore50/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/System.ComponentModel.Annotations.dll", + "ref/netstandard1.1/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/de/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/es/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/fr/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/it/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/ja/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/ko/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/ru/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/System.ComponentModel.Annotations.dll", + "ref/netstandard1.3/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/de/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/es/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/fr/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/it/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/ja/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/ko/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/ru/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/System.ComponentModel.Annotations.dll", + "ref/netstandard1.4/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/de/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/es/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/fr/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/it/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/ja/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/ko/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/ru/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard2.0/System.ComponentModel.Annotations.dll", + "ref/netstandard2.0/System.ComponentModel.Annotations.xml", + "ref/netstandard2.1/System.ComponentModel.Annotations.dll", + "ref/netstandard2.1/System.ComponentModel.Annotations.xml", + "ref/portable-net45+win8/_._", + "ref/win8/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.componentmodel.annotations.4.7.0.nupkg.sha512", + "system.componentmodel.annotations.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Diagnostics.DiagnosticSource/4.7.1": { + "sha512": "j81Lovt90PDAq8kLpaJfJKV/rWdWuEk6jfV+MBkee33vzYLEUsy4gXK8laa9V2nZlLM9VM9yA/OOQxxPEJKAMw==", + "type": "package", + "path": "system.diagnostics.diagnosticsource/4.7.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net45/System.Diagnostics.DiagnosticSource.dll", + "lib/net45/System.Diagnostics.DiagnosticSource.xml", + "lib/net46/System.Diagnostics.DiagnosticSource.dll", + "lib/net46/System.Diagnostics.DiagnosticSource.xml", + "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.dll", + "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.xml", + "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll", + "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.xml", + "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.dll", + "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.xml", + "system.diagnostics.diagnosticsource.4.7.1.nupkg.sha512", + "system.diagnostics.diagnosticsource.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.IdentityModel.Tokens.Jwt/6.9.0": { + "sha512": "05mu9HrBwrXbvSeR0pGXkbe2zseJBJ860IbTsuVSZQ3RC89Z3mqtLuoAdwWztAmRGY1Z/uhk277vqgd7cxCtDQ==", + "type": "package", + "path": "system.identitymodel.tokens.jwt/6.9.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net45/System.IdentityModel.Tokens.Jwt.dll", + "lib/net45/System.IdentityModel.Tokens.Jwt.xml", + "lib/net461/System.IdentityModel.Tokens.Jwt.dll", + "lib/net461/System.IdentityModel.Tokens.Jwt.xml", + "lib/net472/System.IdentityModel.Tokens.Jwt.dll", + "lib/net472/System.IdentityModel.Tokens.Jwt.xml", + "lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.dll", + "lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.xml", + "system.identitymodel.tokens.jwt.6.9.0.nupkg.sha512", + "system.identitymodel.tokens.jwt.nuspec" + ] + }, + "System.Reflection.Emit/4.7.0": { + "sha512": "VR4kk8XLKebQ4MZuKuIni/7oh+QGFmZW3qORd1GvBq/8026OpW501SzT/oypwiQl4TvT8ErnReh/NzY9u+C6wQ==", + "type": "package", + "path": "system.reflection.emit/4.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Reflection.Emit.dll", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.1/System.Reflection.Emit.dll", + "lib/netstandard1.1/System.Reflection.Emit.xml", + "lib/netstandard1.3/System.Reflection.Emit.dll", + "lib/netstandard2.0/System.Reflection.Emit.dll", + "lib/netstandard2.0/System.Reflection.Emit.xml", + "lib/netstandard2.1/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcoreapp2.0/_._", + "ref/netstandard1.1/System.Reflection.Emit.dll", + "ref/netstandard1.1/System.Reflection.Emit.xml", + "ref/netstandard1.1/de/System.Reflection.Emit.xml", + "ref/netstandard1.1/es/System.Reflection.Emit.xml", + "ref/netstandard1.1/fr/System.Reflection.Emit.xml", + "ref/netstandard1.1/it/System.Reflection.Emit.xml", + "ref/netstandard1.1/ja/System.Reflection.Emit.xml", + "ref/netstandard1.1/ko/System.Reflection.Emit.xml", + "ref/netstandard1.1/ru/System.Reflection.Emit.xml", + "ref/netstandard1.1/zh-hans/System.Reflection.Emit.xml", + "ref/netstandard1.1/zh-hant/System.Reflection.Emit.xml", + "ref/netstandard2.0/System.Reflection.Emit.dll", + "ref/netstandard2.0/System.Reflection.Emit.xml", + "ref/netstandard2.1/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Reflection.Emit.dll", + "runtimes/aot/lib/netcore50/System.Reflection.Emit.xml", + "system.reflection.emit.4.7.0.nupkg.sha512", + "system.reflection.emit.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Security.Cryptography.Cng/4.5.0": { + "sha512": "WG3r7EyjUe9CMPFSs6bty5doUqT+q9pbI80hlNzo2SkPkZ4VTuZkGWjpp77JB8+uaL4DFPRdBsAY+DX3dBK92A==", + "type": "package", + "path": "system.security.cryptography.cng/4.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.Cng.dll", + "lib/net461/System.Security.Cryptography.Cng.dll", + "lib/net462/System.Security.Cryptography.Cng.dll", + "lib/net47/System.Security.Cryptography.Cng.dll", + "lib/netcoreapp2.1/System.Security.Cryptography.Cng.dll", + "lib/netstandard1.3/System.Security.Cryptography.Cng.dll", + "lib/netstandard1.4/System.Security.Cryptography.Cng.dll", + "lib/netstandard1.6/System.Security.Cryptography.Cng.dll", + "lib/netstandard2.0/System.Security.Cryptography.Cng.dll", + "lib/uap10.0.16299/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.Cng.dll", + "ref/net461/System.Security.Cryptography.Cng.dll", + "ref/net461/System.Security.Cryptography.Cng.xml", + "ref/net462/System.Security.Cryptography.Cng.dll", + "ref/net462/System.Security.Cryptography.Cng.xml", + "ref/net47/System.Security.Cryptography.Cng.dll", + "ref/net47/System.Security.Cryptography.Cng.xml", + "ref/netcoreapp2.0/System.Security.Cryptography.Cng.dll", + "ref/netcoreapp2.0/System.Security.Cryptography.Cng.xml", + "ref/netcoreapp2.1/System.Security.Cryptography.Cng.dll", + "ref/netcoreapp2.1/System.Security.Cryptography.Cng.xml", + "ref/netstandard1.3/System.Security.Cryptography.Cng.dll", + "ref/netstandard1.4/System.Security.Cryptography.Cng.dll", + "ref/netstandard1.6/System.Security.Cryptography.Cng.dll", + "ref/netstandard2.0/System.Security.Cryptography.Cng.dll", + "ref/netstandard2.0/System.Security.Cryptography.Cng.xml", + "ref/uap10.0.16299/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/win/lib/net46/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/net461/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/net462/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/net47/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/netcoreapp2.0/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/netcoreapp2.1/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/netstandard1.4/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/uap10.0.16299/_._", + "system.security.cryptography.cng.4.5.0.nupkg.sha512", + "system.security.cryptography.cng.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + } + }, + "projectFileDependencyGroups": { + ".NETCoreApp,Version=v3.1": [ + "AutoMapper >= 10.1.1", + "AutoMapper.Extensions.Microsoft.DependencyInjection >= 8.1.1", + "Microsoft.AspNetCore.Authentication.JwtBearer >= 3.1.12", + "Microsoft.EntityFrameworkCore >= 3.1.12", + "Pomelo.EntityFrameworkCore.MySql >= 3.1.1", + "Swashbuckle.AspNetCore >= 5.6.3", + "System.IdentityModel.Tokens.Jwt >= 6.9.0" + ] + }, + "packageFolders": { + "/home/aurelien/.nuget/packages/": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "/home/aurelien/Bureau/dorset/Dorset-back-master/Homework2/Shop/Shop.csproj", + "projectName": "Shop", + "projectPath": "/home/aurelien/Bureau/dorset/Dorset-back-master/Homework2/Shop/Shop.csproj", + "packagesPath": "/home/aurelien/.nuget/packages/", + "outputPath": "/home/aurelien/Bureau/dorset/Dorset-back-master/Homework2/Shop/obj/", + "projectStyle": "PackageReference", + "configFilePaths": [ + "/home/aurelien/.nuget/NuGet/NuGet.Config" + ], + "originalTargetFrameworks": [ + "netcoreapp3.1" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "netcoreapp3.1": { + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + } + }, + "frameworks": { + "netcoreapp3.1": { + "dependencies": { + "AutoMapper": { + "target": "Package", + "version": "[10.1.1, )" + }, + "AutoMapper.Extensions.Microsoft.DependencyInjection": { + "target": "Package", + "version": "[8.1.1, )" + }, + "Microsoft.AspNetCore.Authentication.JwtBearer": { + "target": "Package", + "version": "[3.1.12, )" + }, + "Microsoft.EntityFrameworkCore": { + "target": "Package", + "version": "[3.1.12, )" + }, + "Pomelo.EntityFrameworkCore.MySql": { + "target": "Package", + "version": "[3.1.1, )" + }, + "Swashbuckle.AspNetCore": { + "target": "Package", + "version": "[5.6.3, )" + }, + "System.IdentityModel.Tokens.Jwt": { + "target": "Package", + "version": "[6.9.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48" + ], + "assetTargetFallback": true, + "warn": true, + "downloadDependencies": [ + { + "name": "Microsoft.AspNetCore.App.Ref", + "version": "[3.1.10, 3.1.10]" + }, + { + "name": "Microsoft.NETCore.App.Host.linux-x64", + "version": "[3.1.13, 3.1.13]" + } + ], + "frameworkReferences": { + "Microsoft.AspNetCore.App": { + "privateAssets": "none" + }, + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "/usr/share/dotnet/sdk/5.0.201/RuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/Shop/obj/project.nuget.cache b/Shop/obj/project.nuget.cache new file mode 100644 index 0000000..e59e23a --- /dev/null +++ b/Shop/obj/project.nuget.cache @@ -0,0 +1,53 @@ +{ + "version": 2, + "dgSpecHash": "8sTig6C637tbCKDMDIiqIUh3svyl7c6/tGb3DJkjb93izwOgjDqkfUMmnu7pG3K3Xoa5dhBXfHT8m7pCNtSpSg==", + "success": true, + "projectFilePath": "/home/aurelien/Bureau/dorset/Dorset-back-master/Homework2/Shop/Shop.csproj", + "expectedPackageFiles": [ + "/home/aurelien/.nuget/packages/automapper/10.1.1/automapper.10.1.1.nupkg.sha512", + "/home/aurelien/.nuget/packages/automapper.extensions.microsoft.dependencyinjection/8.1.1/automapper.extensions.microsoft.dependencyinjection.8.1.1.nupkg.sha512", + "/home/aurelien/.nuget/packages/microsoft.aspnetcore.authentication.jwtbearer/3.1.12/microsoft.aspnetcore.authentication.jwtbearer.3.1.12.nupkg.sha512", + "/home/aurelien/.nuget/packages/microsoft.bcl.asyncinterfaces/1.1.1/microsoft.bcl.asyncinterfaces.1.1.1.nupkg.sha512", + "/home/aurelien/.nuget/packages/microsoft.bcl.hashcode/1.1.1/microsoft.bcl.hashcode.1.1.1.nupkg.sha512", + "/home/aurelien/.nuget/packages/microsoft.csharp/4.7.0/microsoft.csharp.4.7.0.nupkg.sha512", + "/home/aurelien/.nuget/packages/microsoft.entityframeworkcore/3.1.12/microsoft.entityframeworkcore.3.1.12.nupkg.sha512", + "/home/aurelien/.nuget/packages/microsoft.entityframeworkcore.abstractions/3.1.12/microsoft.entityframeworkcore.abstractions.3.1.12.nupkg.sha512", + "/home/aurelien/.nuget/packages/microsoft.entityframeworkcore.analyzers/3.1.12/microsoft.entityframeworkcore.analyzers.3.1.12.nupkg.sha512", + "/home/aurelien/.nuget/packages/microsoft.entityframeworkcore.relational/3.1.0/microsoft.entityframeworkcore.relational.3.1.0.nupkg.sha512", + "/home/aurelien/.nuget/packages/microsoft.extensions.apidescription.server/3.0.0/microsoft.extensions.apidescription.server.3.0.0.nupkg.sha512", + "/home/aurelien/.nuget/packages/microsoft.extensions.caching.abstractions/3.1.12/microsoft.extensions.caching.abstractions.3.1.12.nupkg.sha512", + "/home/aurelien/.nuget/packages/microsoft.extensions.caching.memory/3.1.12/microsoft.extensions.caching.memory.3.1.12.nupkg.sha512", + "/home/aurelien/.nuget/packages/microsoft.extensions.configuration/3.1.12/microsoft.extensions.configuration.3.1.12.nupkg.sha512", + "/home/aurelien/.nuget/packages/microsoft.extensions.configuration.abstractions/3.1.12/microsoft.extensions.configuration.abstractions.3.1.12.nupkg.sha512", + "/home/aurelien/.nuget/packages/microsoft.extensions.configuration.binder/3.1.12/microsoft.extensions.configuration.binder.3.1.12.nupkg.sha512", + "/home/aurelien/.nuget/packages/microsoft.extensions.dependencyinjection/3.1.12/microsoft.extensions.dependencyinjection.3.1.12.nupkg.sha512", + "/home/aurelien/.nuget/packages/microsoft.extensions.dependencyinjection.abstractions/3.1.12/microsoft.extensions.dependencyinjection.abstractions.3.1.12.nupkg.sha512", + "/home/aurelien/.nuget/packages/microsoft.extensions.logging/3.1.12/microsoft.extensions.logging.3.1.12.nupkg.sha512", + "/home/aurelien/.nuget/packages/microsoft.extensions.logging.abstractions/3.1.12/microsoft.extensions.logging.abstractions.3.1.12.nupkg.sha512", + "/home/aurelien/.nuget/packages/microsoft.extensions.options/3.1.12/microsoft.extensions.options.3.1.12.nupkg.sha512", + "/home/aurelien/.nuget/packages/microsoft.extensions.primitives/3.1.12/microsoft.extensions.primitives.3.1.12.nupkg.sha512", + "/home/aurelien/.nuget/packages/microsoft.identitymodel.jsonwebtokens/6.9.0/microsoft.identitymodel.jsonwebtokens.6.9.0.nupkg.sha512", + "/home/aurelien/.nuget/packages/microsoft.identitymodel.logging/6.9.0/microsoft.identitymodel.logging.6.9.0.nupkg.sha512", + "/home/aurelien/.nuget/packages/microsoft.identitymodel.protocols/5.5.0/microsoft.identitymodel.protocols.5.5.0.nupkg.sha512", + "/home/aurelien/.nuget/packages/microsoft.identitymodel.protocols.openidconnect/5.5.0/microsoft.identitymodel.protocols.openidconnect.5.5.0.nupkg.sha512", + "/home/aurelien/.nuget/packages/microsoft.identitymodel.tokens/6.9.0/microsoft.identitymodel.tokens.6.9.0.nupkg.sha512", + "/home/aurelien/.nuget/packages/microsoft.openapi/1.2.3/microsoft.openapi.1.2.3.nupkg.sha512", + "/home/aurelien/.nuget/packages/mysqlconnector/0.61.0/mysqlconnector.0.61.0.nupkg.sha512", + "/home/aurelien/.nuget/packages/newtonsoft.json/11.0.2/newtonsoft.json.11.0.2.nupkg.sha512", + "/home/aurelien/.nuget/packages/pomelo.entityframeworkcore.mysql/3.1.1/pomelo.entityframeworkcore.mysql.3.1.1.nupkg.sha512", + "/home/aurelien/.nuget/packages/pomelo.jsonobject/2.2.1/pomelo.jsonobject.2.2.1.nupkg.sha512", + "/home/aurelien/.nuget/packages/swashbuckle.aspnetcore/5.6.3/swashbuckle.aspnetcore.5.6.3.nupkg.sha512", + "/home/aurelien/.nuget/packages/swashbuckle.aspnetcore.swagger/5.6.3/swashbuckle.aspnetcore.swagger.5.6.3.nupkg.sha512", + "/home/aurelien/.nuget/packages/swashbuckle.aspnetcore.swaggergen/5.6.3/swashbuckle.aspnetcore.swaggergen.5.6.3.nupkg.sha512", + "/home/aurelien/.nuget/packages/swashbuckle.aspnetcore.swaggerui/5.6.3/swashbuckle.aspnetcore.swaggerui.5.6.3.nupkg.sha512", + "/home/aurelien/.nuget/packages/system.collections.immutable/1.7.1/system.collections.immutable.1.7.1.nupkg.sha512", + "/home/aurelien/.nuget/packages/system.componentmodel.annotations/4.7.0/system.componentmodel.annotations.4.7.0.nupkg.sha512", + "/home/aurelien/.nuget/packages/system.diagnostics.diagnosticsource/4.7.1/system.diagnostics.diagnosticsource.4.7.1.nupkg.sha512", + "/home/aurelien/.nuget/packages/system.identitymodel.tokens.jwt/6.9.0/system.identitymodel.tokens.jwt.6.9.0.nupkg.sha512", + "/home/aurelien/.nuget/packages/system.reflection.emit/4.7.0/system.reflection.emit.4.7.0.nupkg.sha512", + "/home/aurelien/.nuget/packages/system.security.cryptography.cng/4.5.0/system.security.cryptography.cng.4.5.0.nupkg.sha512", + "/home/aurelien/.nuget/packages/microsoft.aspnetcore.app.ref/3.1.10/microsoft.aspnetcore.app.ref.3.1.10.nupkg.sha512", + "/home/aurelien/.nuget/packages/microsoft.netcore.app.host.linux-x64/3.1.13/microsoft.netcore.app.host.linux-x64.3.1.13.nupkg.sha512" + ], + "logs": [] +} \ No newline at end of file diff --git a/Shop/obj/project.packagespec.json b/Shop/obj/project.packagespec.json new file mode 100644 index 0000000..cba2744 --- /dev/null +++ b/Shop/obj/project.packagespec.json @@ -0,0 +1,89 @@ +{ + "version": "1.0.0", + "restore": { + "projectUniqueName": "/home/aurelien/Bureau/dorset/Dorset-back-master/Homework2/Shop/Shop.csproj", + "projectName": "Shop", + "projectPath": "/home/aurelien/Bureau/dorset/Dorset-back-master/Homework2/Shop/Shop.csproj", + "outputPath": "/home/aurelien/Bureau/dorset/Dorset-back-master/Homework2/Shop/obj/", + "projectStyle": "PackageReference", + "originalTargetFrameworks": [ + "netcoreapp3.1" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "netcoreapp3.1": { + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + } + }, + "frameworks": { + "netcoreapp3.1": { + "dependencies": { + "AutoMapper": { + "target": "Package", + "version": "[10.1.1, )" + }, + "AutoMapper.Extensions.Microsoft.DependencyInjection": { + "target": "Package", + "version": "[8.1.1, )" + }, + "Microsoft.AspNetCore.Authentication.JwtBearer": { + "target": "Package", + "version": "[3.1.12, )" + }, + "Microsoft.EntityFrameworkCore": { + "target": "Package", + "version": "[3.1.12, )" + }, + "Pomelo.EntityFrameworkCore.MySql": { + "target": "Package", + "version": "[3.1.1, )" + }, + "Swashbuckle.AspNetCore": { + "target": "Package", + "version": "[5.6.3, )" + }, + "System.IdentityModel.Tokens.Jwt": { + "target": "Package", + "version": "[6.9.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48" + ], + "assetTargetFallback": true, + "warn": true, + "downloadDependencies": [ + { + "name": "Microsoft.AspNetCore.App.Ref", + "version": "[3.1.10, 3.1.10]" + }, + { + "name": "Microsoft.NETCore.App.Host.linux-x64", + "version": "[3.1.13, 3.1.13]" + } + ], + "frameworkReferences": { + "Microsoft.AspNetCore.App": { + "privateAssets": "none" + }, + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "/usr/share/dotnet/sdk/5.0.201/RuntimeIdentifierGraph.json" + } + } +} \ No newline at end of file