Credentials working in the frontend
This commit is contained in:
parent
7e4bf4e5cf
commit
e0e9df2edd
|
@ -22,21 +22,26 @@ namespace BlueWest.WebApi.Context
|
|||
ApplicationUserToken>
|
||||
{
|
||||
/// <inheritdoc />
|
||||
[EfGetMany(typeof(ApplicationUserClaim))]
|
||||
[EfGetMany(typeof(ApplicationUserClaimUnique))]
|
||||
public sealed override DbSet<ApplicationUserClaim> UserClaims { get; set; }
|
||||
|
||||
[EfGetMany(typeof(ApplicationUserRole))]
|
||||
[EfGetMany(typeof(ApplicationUserRoleUnique))]
|
||||
/// <inheritdoc />
|
||||
public sealed override DbSet<ApplicationUserRole> UserRoles { get; set; }
|
||||
|
||||
[EfGetMany(typeof(ApplicationRole))]
|
||||
[EfGetMany(typeof(ApplicationRoleUnique))]
|
||||
/// <inheritdoc />
|
||||
public sealed override DbSet<ApplicationRole> Roles { get; set; }
|
||||
|
||||
[EfGetMany(typeof(ApplicationRoleClaim))]
|
||||
[EfGetMany(typeof(ApplicationRoleClaimUnique))]
|
||||
/// <inheritdoc />
|
||||
public sealed override DbSet<ApplicationRoleClaim> RoleClaims { get; set; }
|
||||
|
||||
[EfGetMany(typeof(ApplicationUserUnique))]
|
||||
[EfUpdateMethods( updateType: typeof(ApplicationUserUnique), returnType: typeof(ApplicationUserUnique), keyPropertyMemberName: nameof(ApplicationUserUnique.Id))]
|
||||
public sealed override DbSet<ApplicationUser> Users { get; set; }
|
||||
|
||||
#region Initialization
|
||||
|
||||
/// <inheritdoc />
|
||||
public ApplicationUserDbContext(DbContextOptions<ApplicationUserDbContext> options) : base(options)
|
||||
|
@ -76,6 +81,11 @@ namespace BlueWest.WebApi.Context
|
|||
b.HasMany<ApplicationRoleClaim>().WithOne().HasForeignKey(rc => rc.RoleId).IsRequired();
|
||||
});
|
||||
|
||||
builder.Entity<ApplicationUserRole>().HasOne<ApplicationRole>(x => x.ApplicationRole);
|
||||
builder.Entity<ApplicationRoleClaim>().HasOne<ApplicationRole>(x => x.ApplicationRole);
|
||||
builder.Entity<ApplicationUserClaim>().HasOne<ApplicationUser>(x => x.ApplicationUser);
|
||||
|
||||
|
||||
builder.Entity<ApplicationRoleClaim>(b =>
|
||||
{
|
||||
b.HasKey(rc => rc.Id);
|
||||
|
@ -98,5 +108,9 @@ namespace BlueWest.WebApi.Context
|
|||
|
||||
builder.ConfigureCurrentDbModel();
|
||||
}
|
||||
|
||||
#endregion
|
||||
/// <inheritdoc />
|
||||
|
||||
}
|
||||
}
|
|
@ -1,26 +1,131 @@
|
|||
using BlueWest.Data;
|
||||
using BlueWest.WebApi.Context;
|
||||
using Microsoft.AspNetCore.Authentication.Cookies;
|
||||
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Cors;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace BlueWest.WebApi.Controllers
|
||||
{
|
||||
[ApiController]
|
||||
[Route("[controller]")]
|
||||
[Route("application/users")]
|
||||
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
|
||||
[Authorize(AuthenticationSchemes = CookieAuthenticationDefaults.AuthenticationScheme)]
|
||||
[EnableCors(Constants.CorsPolicyName)]
|
||||
|
||||
public class ApplicationUserController : ControllerBase
|
||||
{
|
||||
private readonly ApplicationUserDbContext _context;
|
||||
private readonly ApplicationUserDbContext _dbContext;
|
||||
|
||||
public ApplicationUserController(ApplicationUserDbContext context)
|
||||
{
|
||||
_context = context;
|
||||
_dbContext = context;
|
||||
}
|
||||
|
||||
#region Users
|
||||
|
||||
/// <summary>
|
||||
/// Get Application users
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
||||
[HttpGet]
|
||||
public ActionResult GetApplicationUsers(
|
||||
int skip = 0,
|
||||
int take = 50,
|
||||
int orderDir = 1)
|
||||
{
|
||||
|
||||
var (success, users) = _dbContext.GetUsers( skip, take, orderDir);
|
||||
if (!success) return new NotFoundResult();
|
||||
return Ok(users);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Updates a User
|
||||
/// </summary>
|
||||
/// <param name="UserCode">The UserId ISO 3166 code</param>
|
||||
/// <param name="UserToUpdate">User payload data</param>
|
||||
/// <returns></returns>
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||
[HttpPut("{UserCode}")]
|
||||
public ActionResult UpdateApplicationUser(int UserCode, UserUnique UserToUpdate)
|
||||
{
|
||||
//var (success, User) = _dbContext.UpdateUser(UserToUpdate, UserCode);
|
||||
|
||||
/*
|
||||
if (success)
|
||||
{
|
||||
return Ok(User);
|
||||
}
|
||||
*/
|
||||
|
||||
return new NotFoundResult();
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
/*
|
||||
#region GetUserById
|
||||
|
||||
/// <summary>
|
||||
/// Get User by Id
|
||||
/// </summary>
|
||||
/// <param name="UserId">ISO 3166-1 UserId numeric code</param>
|
||||
/// <returns></returns>
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
||||
[HttpGet("{UserId}", Name = nameof(GetUserById))]
|
||||
public ActionResult GetUserById(int UserId)
|
||||
{
|
||||
var (success, User) = _dbContext.GetOneUserById(UserId);
|
||||
|
||||
if (success)
|
||||
{
|
||||
return Ok(User);
|
||||
}
|
||||
|
||||
return new NotFoundResult();
|
||||
}
|
||||
|
||||
#endregion
|
||||
*/
|
||||
|
||||
#region Roles
|
||||
|
||||
/// <summary>
|
||||
/// Get Application users
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
||||
[HttpGet("roles")]
|
||||
public ActionResult GetApplicationRoles(
|
||||
int skip = 0,
|
||||
int take = 50,
|
||||
int orderDir = 1)
|
||||
{
|
||||
|
||||
var (success, users) = _dbContext.GetRoles( skip, take, orderDir);
|
||||
if (!success) return new NotFoundResult();
|
||||
return Ok(users);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public static class Constants
|
||||
{
|
||||
public const string CorsPolicyName = "_myAllowSpecificOrigins";
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ using Microsoft.AspNetCore.Authentication;
|
|||
using Microsoft.AspNetCore.Authentication.Cookies;
|
||||
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Cors;
|
||||
using Microsoft.AspNetCore.Identity;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
|
@ -17,7 +18,8 @@ namespace BlueWest.WebApi.Controllers;
|
|||
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
|
||||
[Authorize(AuthenticationSchemes = CookieAuthenticationDefaults.AuthenticationScheme)]
|
||||
[ApiController]
|
||||
public class AuthController : Controller
|
||||
[EnableCors(Constants.CorsPolicyName)]
|
||||
public class AuthController : Controller
|
||||
{
|
||||
private readonly IAuthManager _authManager;
|
||||
private readonly IUserManager _userManager;
|
||||
|
@ -85,11 +87,11 @@ namespace BlueWest.WebApi.Controllers;
|
|||
var identity = new ClaimsIdentity(CookieAuthenticationDefaults.AuthenticationScheme);
|
||||
identity.AddClaim(new Claim(ClaimTypes.Email, user.Email));
|
||||
await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(identity));
|
||||
return Json(true);
|
||||
return Ok(new {authenticated = true});
|
||||
}
|
||||
}
|
||||
|
||||
return Json(false);
|
||||
return Ok(new {authenticated = false});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -7,6 +7,7 @@ using BlueWest.WebApi.EF;
|
|||
using Microsoft.AspNetCore.Authentication.Cookies;
|
||||
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Cors;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
|
@ -19,7 +20,8 @@ namespace BlueWest.WebApi.Controllers
|
|||
[Route("[controller]")]
|
||||
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
|
||||
[Authorize(AuthenticationSchemes = CookieAuthenticationDefaults.AuthenticationScheme)]
|
||||
[Authorize(Roles = "Administrator")]
|
||||
[EnableCors(Constants.CorsPolicyName)]
|
||||
// [Authorize(Roles = "Administrator")]
|
||||
public class CountryController : ControllerBase
|
||||
{
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ namespace BlueWest.WebApi.Controllers
|
|||
[Route("[controller]")]
|
||||
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
|
||||
[Authorize(AuthenticationSchemes = CookieAuthenticationDefaults.AuthenticationScheme)]
|
||||
[Authorize(Roles = "Administrator")]
|
||||
// [Authorize(Roles = "Administrator")]
|
||||
public partial class CurrencyController : ControllerBase
|
||||
{
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ namespace BlueWest.WebApi
|
|||
{
|
||||
private readonly IConfiguration _configuration;
|
||||
private readonly IWebHostEnvironment _environment;
|
||||
private readonly string MyAllowSpecificOrigins = "_myAllowSpecificOrigins";
|
||||
private readonly string MyAllowSpecificOrigins = Constants.CorsPolicyName;
|
||||
|
||||
/// <summary>
|
||||
/// Startup configuration of the API
|
||||
|
@ -47,8 +47,10 @@ namespace BlueWest.WebApi
|
|||
options.AddPolicy(name: MyAllowSpecificOrigins,
|
||||
builder =>
|
||||
{
|
||||
builder.WithOrigins("http://127.0.0.1:5173", "localhost:5173", "127.0.0.1:5173")
|
||||
.AllowAnyHeader().AllowAnyMethod();
|
||||
builder.WithOrigins("http://127.0.0.1:5173", "http://localhost:5173", "http://127.0.0.1:5173")
|
||||
.AllowAnyMethod()
|
||||
.AllowAnyHeader()
|
||||
.AllowCredentials();
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -170,7 +170,7 @@ namespace BlueWest.WebApi
|
|||
})
|
||||
.AddCookie(options =>
|
||||
{
|
||||
options.LoginPath = "/api/auth/login";
|
||||
options.LoginPath = "/api/auth/logincookie";
|
||||
options.LogoutPath = "/api/auth/logout";
|
||||
})
|
||||
.AddJwtBearer(configureOptions =>
|
||||
|
@ -198,8 +198,9 @@ namespace BlueWest.WebApi
|
|||
services.AddAuthorization(options =>
|
||||
{
|
||||
options.AddPolicy("ApiUser",
|
||||
policy => policy.RequireClaim(Constants.JwtClaimIdentifiers.Rol,
|
||||
Constants.JwtClaims.ApiAccess));
|
||||
policy => policy.RequireClaim(Context.Users.Constants.JwtClaimIdentifiers.Rol,
|
||||
Context.Users.Constants.JwtClaims.ApiAccess));
|
||||
|
||||
});
|
||||
|
||||
// add identity
|
||||
|
|
|
@ -1,9 +1,12 @@
|
|||
using MapTo;
|
||||
using Microsoft.AspNetCore.Identity;
|
||||
|
||||
namespace BlueWest.WebApi.Context.Users
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public class ApplicationRole : IdentityRole<string>
|
||||
[MapFrom(typeof(ApplicationRoleUnique))]
|
||||
|
||||
public partial class ApplicationRole : IdentityRole<string>
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public sealed override string Id { get; set; }
|
||||
|
@ -14,12 +17,6 @@ namespace BlueWest.WebApi.Context.Users
|
|||
/// <inheritdoc />
|
||||
public sealed override string NormalizedName { get; set; }
|
||||
|
||||
public ApplicationRole(ApplicationRole applicationRole)
|
||||
{
|
||||
Id = applicationRole.Id;
|
||||
Name = applicationRole.Name;
|
||||
NormalizedName = applicationRole.NormalizedName;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
using MapTo;
|
||||
|
||||
namespace BlueWest.WebApi.Context.Users
|
||||
{
|
||||
[MapFrom(typeof(ApplicationRole))]
|
||||
public partial class ApplicationRoleUnique
|
||||
{
|
||||
public string Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
public string NormalizedName { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -1,33 +1,28 @@
|
|||
using System;
|
||||
using Microsoft.AspNetCore.Identity;
|
||||
using MapTo;
|
||||
|
||||
namespace BlueWest.WebApi.Context.Users;
|
||||
|
||||
/// <inheritdoc />
|
||||
public class ApplicationRoleClaim : IdentityRoleClaim<string>
|
||||
namespace BlueWest.WebApi.Context.Users
|
||||
{
|
||||
|
||||
public sealed override int Id { get; set; }
|
||||
/// <inheritdoc />
|
||||
[MapFrom(typeof(ApplicationRoleClaimUnique))]
|
||||
|
||||
#region ApplicationRole
|
||||
public sealed override string RoleId { get; set; }
|
||||
public ApplicationRole ApplicationRole { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
public sealed override string ClaimType { get; set; }
|
||||
|
||||
public sealed override string ClaimValue { get; set; }
|
||||
|
||||
public ApplicationRoleClaim() { }
|
||||
|
||||
public ApplicationRoleClaim(ApplicationRoleClaim applicationRoleClaim)
|
||||
public partial class ApplicationRoleClaim : IdentityRoleClaim<string>
|
||||
{
|
||||
Id = applicationRoleClaim.Id;
|
||||
RoleId = applicationRoleClaim.RoleId;
|
||||
ApplicationRole = applicationRoleClaim.ApplicationRole;
|
||||
ClaimType = applicationRoleClaim.ClaimType;
|
||||
ClaimValue = applicationRoleClaim.ClaimValue;
|
||||
}
|
||||
|
||||
public sealed override int Id { get; set; }
|
||||
|
||||
#region ApplicationRole
|
||||
public sealed override string RoleId { get; set; }
|
||||
|
||||
public ApplicationRole ApplicationRole { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
public sealed override string ClaimType { get; set; }
|
||||
|
||||
public sealed override string ClaimValue { get; set; }
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
using MapTo;
|
||||
|
||||
namespace BlueWest.WebApi.Context.Users
|
||||
{
|
||||
[MapFrom(typeof(ApplicationRoleClaim))]
|
||||
public partial class ApplicationRoleClaimUnique
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string RoleId { get; set; }
|
||||
public string ClaimType { get; set; }
|
||||
public string ClaimValue { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -3,38 +3,32 @@ using System.Collections.Generic;
|
|||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using BlueWest.Data;
|
||||
using MapTo;
|
||||
using Microsoft.AspNetCore.Identity;
|
||||
|
||||
namespace BlueWest.WebApi.Context.Users;
|
||||
|
||||
/// <summary>
|
||||
/// Application User in the Identity System.
|
||||
/// </summary>
|
||||
public class ApplicationUser : IdentityUser<string>
|
||||
namespace BlueWest.WebApi.Context.Users
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Application User in the Identity System.
|
||||
/// </summary>
|
||||
[MapFrom(typeof(ApplicationUserUnique))]
|
||||
[UseUpdate]
|
||||
public partial class ApplicationUser : IdentityUser<string>
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets or sets the primary key for this user.
|
||||
/// </summary>
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[PersonalData]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[PersonalData]
|
||||
public new string Id { get; set; }
|
||||
|
||||
public List<User> Users { get; set; }
|
||||
/// <summary>
|
||||
/// Gets or sets the user name for this user.
|
||||
/// </summary>
|
||||
|
||||
[ProtectedPersonalData]
|
||||
public override string UserName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the normalized user name for this user.
|
||||
/// </summary>
|
||||
public override string NormalizedUserName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the email address for this user.
|
||||
/// </summary>
|
||||
[ProtectedPersonalData]
|
||||
public override string Email { get; set; }
|
||||
|
||||
|
@ -103,5 +97,5 @@ public class ApplicationUser : IdentityUser<string>
|
|||
/// Gets or sets the number of failed login attempts for the current user.
|
||||
/// </summary>
|
||||
public override int AccessFailedCount { get; set; }
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
using System;
|
||||
using MapTo;
|
||||
|
||||
namespace BlueWest.WebApi.Context.Users
|
||||
{
|
||||
[MapFrom(typeof(ApplicationUser))]
|
||||
public partial class ApplicationUserUnique
|
||||
{
|
||||
public string Id { get; set; }
|
||||
public string UserName { get; set; }
|
||||
public string NormalizedUserName { get; set; }
|
||||
public string Email { get; set; }
|
||||
public string NormalizedEmail { get; set; }
|
||||
public bool EmailConfirmed { get; set; }
|
||||
public string PasswordHash { get; set; }
|
||||
public string SecurityStamp { get; set; }
|
||||
public string PhoneNumber { get; set; }
|
||||
public bool PhoneNumberConfirmed { get; set; }
|
||||
public bool TwoFactorEnabled { get; set; }
|
||||
public DateTimeOffset? LockoutEnd { get; set; }
|
||||
public bool LockoutEnabled { get; set; }
|
||||
public int AccessFailedCount { get; set; }
|
||||
public string ConcurrencyStamp { get; set; }
|
||||
}
|
||||
}
|
|
@ -1,40 +1,32 @@
|
|||
using Microsoft.AspNetCore.Identity;
|
||||
using MapTo;
|
||||
|
||||
namespace BlueWest.WebApi.Context.Users;
|
||||
|
||||
/// <inheritdoc />
|
||||
public class ApplicationUserClaim : IdentityUserClaim<string>
|
||||
namespace BlueWest.WebApi.Context.Users
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public sealed override int Id { get; set; }
|
||||
|
||||
#region User
|
||||
/// <inheritdoc />
|
||||
public sealed override string UserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Application User entity
|
||||
/// </summary>
|
||||
public ApplicationUser ApplicationUser { get; set; }
|
||||
|
||||
#endregion
|
||||
[MapFrom(typeof(ApplicationUserClaimUnique))]
|
||||
|
||||
/// <inheritdoc />
|
||||
public sealed override string ClaimType { get; set; }
|
||||
|
||||
/// <inheritdoc />
|
||||
public sealed override string ClaimValue { get; set; }
|
||||
|
||||
public ApplicationUserClaim(ApplicationUserClaim applicationUserClaim)
|
||||
public partial class ApplicationUserClaim : IdentityUserClaim<string>
|
||||
{
|
||||
Id = applicationUserClaim.Id;
|
||||
UserId = applicationUserClaim.UserId;
|
||||
ApplicationUser = applicationUserClaim.ApplicationUser;
|
||||
ClaimType = applicationUserClaim.ClaimType;
|
||||
ClaimValue = applicationUserClaim.ClaimValue;
|
||||
}
|
||||
/// <inheritdoc />
|
||||
public sealed override int Id { get; set; }
|
||||
|
||||
#region User
|
||||
/// <inheritdoc />
|
||||
public sealed override string UserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Application User entity
|
||||
/// </summary>
|
||||
public ApplicationUser ApplicationUser { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
/// <inheritdoc />
|
||||
public sealed override string ClaimType { get; set; }
|
||||
|
||||
/// <inheritdoc />
|
||||
public sealed override string ClaimValue { get; set; }
|
||||
|
||||
public ApplicationUserClaim()
|
||||
{
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
using MapTo;
|
||||
|
||||
namespace BlueWest.WebApi.Context.Users
|
||||
{
|
||||
[MapFrom(typeof(ApplicationUserClaim))]
|
||||
public partial class ApplicationUserClaimUnique
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string UserId { get; set; }
|
||||
public string ClaimType { get; set; }
|
||||
public string ClaimValue { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -1,33 +1,28 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.AspNetCore.Identity;
|
||||
using MapTo;
|
||||
|
||||
namespace BlueWest.WebApi.Context.Users;
|
||||
|
||||
/// <inheritdoc />
|
||||
public class ApplicationUserRole : IdentityUserRole<string>
|
||||
namespace BlueWest.WebApi.Context.Users
|
||||
{
|
||||
/// <summary>
|
||||
/// User entity of this role
|
||||
/// </summary>
|
||||
public ApplicationUser User { get; set; }
|
||||
|
||||
public ApplicationRole ApplicationRole { get; set; }
|
||||
|
||||
/// <inheritdoc />
|
||||
public sealed override string UserId { get; set; }
|
||||
[MapFrom(typeof(ApplicationUserRoleUnique))]
|
||||
|
||||
/// <inheritdoc />
|
||||
public sealed override string RoleId { get; set; }
|
||||
|
||||
|
||||
public ApplicationUserRole() { }
|
||||
|
||||
public ApplicationUserRole(ApplicationUserRole applicationUserRole)
|
||||
public partial class ApplicationUserRole : IdentityUserRole<string>
|
||||
{
|
||||
User = applicationUserRole.User;
|
||||
UserId = applicationUserRole.UserId;
|
||||
RoleId = applicationUserRole.RoleId;
|
||||
ApplicationRole = applicationUserRole.ApplicationRole;
|
||||
/// <summary>
|
||||
/// User entity of this role
|
||||
/// </summary>
|
||||
public ApplicationUser User { get; set; }
|
||||
|
||||
public ApplicationRole ApplicationRole { get; set; }
|
||||
|
||||
/// <inheritdoc />
|
||||
public sealed override string UserId { get; set; }
|
||||
|
||||
/// <inheritdoc />
|
||||
public sealed override string RoleId { get; set; }
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
using MapTo;
|
||||
|
||||
namespace BlueWest.WebApi.Context.Users
|
||||
{
|
||||
[MapFrom(typeof(ApplicationUserRole))]
|
||||
public partial class ApplicationUserRoleUnique
|
||||
{
|
||||
public string UserId { get; set; }
|
||||
|
||||
public string RoleId { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -22,7 +22,6 @@
|
|||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Application" />
|
||||
<Folder Include="Capital" />
|
||||
</ItemGroup>
|
||||
<Import Project="..\include\BlueWest.MapTo\src\BlueWest.MapTo\MapTo.props" />
|
||||
|
|
Loading…
Reference in New Issue